Compares a website against its migrated, redesigned or staging copy on page existence, content and visual regression through DiffiCat's MCP server, with a skill that knows when to run a comparison and how to behave at the payment wall.
Example path ·
https://app.difficat.com/mcpDiffiCat compares a site against its migrated copy on page existence, content and visual regression. Every tool's structuredContent has the shape of the matching REST operation, except that returns concise entries ({ path, status, failedChecks }, plus snapshots for a page read from a stored snapshot) unless responseFormat: "detailed" is passed and leaves out text unless the call passes includeText: true (its text block is always the plain-text report); the OpenAPI document at https://app.difficat.com/api/v1/openapi.json carries a response example per operation, and a real three-page report is at https://difficat.com/agents/sample/report.json. 's maxPages is optional: a ceiling, not a reservation. A job is priced on the pages it compares (the urls list, or the pages discovery finds, at most maxPages), and there is no page limit. A single-page comparison is a urls list with one pair (no sourceUrl needed), or maxPages: 1 with the page URLs as sourceUrl and targetUrl; either is priced as one page and runs no discovery. The discovery that prices a job without urls is not charged; is a separate call for callers who want the page list itself. Give callbackUrl to receive one JSON POST when a job ends instead of waiting. returns a job or screenshot whose result was lost, given the same payment credential, or the latest job a prepaid key paid for; a result is the response itself and is not recoverable. Under a prepaid key, pass the same idempotencyKey on a retry of , or so it is not charged twice. A saved snapshot (a dataset captured in the web app) is read with the account's key on the request or with a shareToken its owner issued, passed as a tool argument; snapshot reads are free, and runs a job against one. Paying: each client address runs 40 comparison pages, 5 discoveries and 5 screenshots a day free, with no key and no payment step; the response then carries sample: true and allowanceRemaining. Beyond that a call is refused with a payment challenge whose nextSteps names every way to pay. A prepaid key, which a human funds by card, is obtained with and sent by the MCP client as an HTTP header on every request (Authorization: Bearer <key>, or X-DiffiCat-Key: <key>), never as a tool argument; the priced amount is then debited from its balance. A Pro account's key (nextSteps.pro) includes a monthly allowance of captured pages shared with the web app: a live pair is 2, a pair against a snapshot 1, a compare of two stored snapshots is free. A wallet pays the 402 challenge itself: USDC on Base, the network the challenge names, with the credential in _meta["org.paymentauth/credential"]. A settled charge is final: cancelling, a failed job or partial results do not reduce it. Pages blocked by a bot-protection challenge DiffiCat detects are given back to the prepaid balance that paid them, or to the allowance within the billing period they were drawn in; wallet payments are not. When the price or the result does not fit, call : a person reads it.
1 in the Claude listing