DiffiCat
Compare a website before and after a migration: missing pages, content changes, visual diffs.
Connect it
Settings → Connectors → Add custom connector
URL: https://app.difficat.com/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://app.difficat.com/mcp{
"mcpServers": {
"difficat": {
"url": "https://app.difficat.com/mcp"
}
}
}claude mcp add --transport http difficat https://app.difficat.com/mcp{
"servers": {
"difficat": {
"type": "http",
"url": "https://app.difficat.com/mcp"
}
}
}15 tools, verified live
discover_pagesFree 5 times a day per client address (at most 50 pages each), no key needed. Lists the pages of Site A (sitemap, robots.txt or crawl), mapped onto Site B when given. Call it to see which pages a comparison would cover or to pick pairs for urls. Do not call it before start_comparison only to price a job: a job without urls discovers for itself. Lists at most maxPages pages, 500 without it (up to 5
capture_screenshotFree 5 times a day per client address, no key needed. Full-page PNG of one URL at the given viewport width, returned inline when small, else as links.file to fetch with the jobToken. Call it for a one-off look at a page or a mobile-width check. Do not call it for pages a comparison job covers: get_report names their screenshots for get_screenshot. Example: { "url": "https://new.example/pricing", "
start_comparisonFree up to 40 pages a day per client address, no key needed; sample report: https://difficat.com/agents/sample/report.json. Compares Site A against Site B on page existence, content and visual regression, priced per page compared. For a migration or redesign check, sourceUrl and targetUrl let discovery pick the pages (maxPages caps them), or urls names the pairs; then wait_for_comparison until it
recover_comparisonReturns the job or screenshot the payment credential in _meta paid for, with a new jobToken that replaces the old one; or, when the request carries a key and _meta no credential, the latest job that key paid for (no jobToken: the key reads it). Call it when a paid call’s result never arrived. Do not call it for a free run, which records no credential. Free.
get_comparisonread-onlyStatus and progress of a job and, once it is terminal, its summary: passed, failed and issuesBySeverity. To wait for the end, call wait_for_comparison instead. Free.
cancel_comparisoncan modifyStop a running job; the job reports cancelled within a minute, with the pages compared so far in its report. Free.
wait_for_comparisonread-onlyWaits until the job reaches a terminal status (completed, failed or cancelled) or timeoutSeconds pass (default 60, at most 300), then answers like get_comparison: status, progress and, once terminal, the summary with passed, failed and issuesBySeverity. A wait that runs out answers status "running"; call it again. Free.
get_reportread-onlyThe finished report. Call it first with failedOnly: true and view: "digest": results, total and nextOffset then cover only the pages that failed, one small object per page with its issues, diff percentage and largest visual regions, and a one-line-per-page text block, while summary still covers every page. Read a page's regions before fetching its screenshots: pass one as region to get_screenshot
get_screenshotread-onlyFetch one screenshot PNG by filename. Call it when a get_report page result or a capture_screenshot result names a screenshot you want to see; a PNG over the inline cap comes back as links.file to fetch with the jobToken. Pass a report region as region to see only the changed area: regions are in the diff image's coordinates, which share their top-left origin with the source and target screenshots
get_balanceread-onlyThe prepaid balance and the last 20 ledger entries of the key the request carries in its Authorization: Bearer or X-DiffiCat-Key header. Call it to check what a key can still pay for; request_prepaid_key is the way to obtain a key. The balance is spendable money for any key, and the same balance the account spends in the web app; a Pro account’s key also returns allowance (included captured pages
request_prepaid_keyMints a prepaid key and a Checkout link for a human to pay by card, so later paid calls are debited from its balance instead of challenged. Call it when a call was refused for payment and your human prefers a card to a wallet; with a key already on the request it tops that key up instead. Do not call it to learn a price (use start_comparison with dryRun) or while the free allowance still covers th
send_feedbackSends one message to the people who run this service: why a price, a payment path or a result did not fit. Call it when you stop short of a paid call or a result was not what the task needed; a person reads every message. Do not call it to report a job failure you can retry. Example: {"topic":"price","message":"Too expensive for 150 pages","relatedTool":"start_comparison","quotedAmount":"3.00","pa
list_snapshotsread-onlyLists the saved snapshots the DiffiCat account behind the request’s key owns or was given access to, newest first, each with access owner or reader. Call it to find a snapshotId for get_snapshot or compare_snapshot. Needs an account’s key on the request; a share token names one snapshot and cannot list. Free.
get_snapshotread-onlyA saved snapshot of a site: without n, the snapshot (label, origin, width, check mode, status) with its page list (n, path, status, whether a screenshot exists) and your compares that use it; with n, that page’s stored record: path, status, title, heading, description and SEO fields, plus content.bodyText with includeText: true and the screenshot inline with includeImage: true when it fits, else a
compare_snapshotFree up to 40 pages a day per client address for a live compare, no key needed. Compares a saved snapshot, as Site A, against a live targetUrl (every stored page paired by path, or the urls pairs you name) at the snapshot’s width and check mode, priced at one captured page per pair (half a live pair) with no discovery; the snapshot’s own origin is never fetched. With otherSnapshotId instead of tar
Alternatives in Marketing & SEO
Compare →
SEOmaticB
SEO agent: GSC, keyword, backlink and AI-visibility insights, plus approval-gated site actions
SISirenB
Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns.
PRPresscartB
Browse 1,700+ publications and manage Presscart media placement campaigns, orders, and articles.
GCGarchi CMS MCPB
Manage structured website content in Garchi CMS through MCP.
App Store Trends MCPB
App Store and Play downloads and charts over time, Android uses bundle ID. Free key at trendsmcp.ai
npm Trends MCPB
npm package trends and weekly downloads over time. Free key at trendsmcp.ai