Skip to content
DiffiCat logo

DiffiCat MCP server

Which MCP servers are DiffiCat's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-24

← Back to DiffiCat

Whose server it is
  • Registry namecom.difficat/difficatverified in the MCP registry

The registry name sits under difficat.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-24
  • Stateanswerschecked 2026-10-24
  • Tools15
  • Server calls itselfdifficat
  • Server version3.129.1
  • Protocol version2025-06-18

On 2026-10-24 the server answered initialize and tools/list without a sign-in. First answer in 222 ms.

Should an agent connect itNot proven either way yet
  • Its tools do every use case we checked: compare old and new site pages for missing or broken URLs; check page layout differences at phone, tablet and desktop widths.
  • Checked on 4 of the 7 days it takes to judge reliability.

Once connected

  • Keep approval on for send_feedback: they delete, send or pay without saying so.
  • cancel_comparison, send_feedback change data without a sign-in: anyone with the address can call them.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 4, the first on 2026-10-24
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 4 so far
  • What an agent can do with it2 of 2 use cases
  • Answeredmeasuring4 of the 7 daily checks it takes to print a share
  • Median first answer422 ms
  • Space in an agent's context≈ 7,052 tokensthe definitions of all its tools (15), which an agent carries on every turn
  • Tool definitionsA · 99 of 100
  • Typed results15 of 15 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a type: in 1 of 15

What an agent can do with it

  • can do · compare old and new site pages for missing or broken URLs
  • can do · check page layout differences at phone, tablet and desktop widths
  • not sure · snapshot a single site before changing it

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that delete, send or pay, marked as not destructive: send_feedback
  • Tools that change data, on a server that answers without a sign-in: cancel_comparison, send_feedback

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers15 tools · read 2026-10-24
  • discover_pages

    Free 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…

  • capture_screenshot

    Free 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…

  • start_comparison

    Free 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…

  • recover_comparison

    Returns 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…

  • get_comparison

    Status 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_comparison

    Stop a running job; the job reports cancelled within a minute, with the pages compared so far in its report. Free.

  • wait_for_comparison

    Waits 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…

  • get_report

    The 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…

  • get_screenshot

    Fetch 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…

  • get_balance

    The 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…

  • request_prepaid_key

    Mints 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…

  • send_feedback

    Sends 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…

  • list_snapshots

    Lists 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…

  • get_snapshot

    A 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…

  • compare_snapshot

    Free 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…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "difficat": {
      "type": "http",
      "url": "https://app.difficat.com/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http difficat https://app.difficat.com/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://app.difficat.com/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.