_ registry / mcp + a2a streamable-http · checked 13h ago

attestpage

https://s2h6qt73jtzlgbgnnfacln2poq.srv.us

Registry code: d17aee0eceacc394

api record

Signed evidence about web pages from https://s2h6qt73jtzlgbgnnfacln2poq.srv.us: check a quote is on a page before citing it, check every quote and link in a finished document, fetch a page with a verdict on what came back (real page, bot wall, paywall, error), check links, check package names before installing them, or timestamp a SHA-256. Each answer has a "receipt" (an Ed25519-signed JWS); check one with attestpage_verify_receipt (free). A receipt records what the fetcher saw at a given time; it does not show that a statement is correct.

endpoint
https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/mcp
door code
f19432022dbb37ac
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is attestpage live?
Yes — it answered the hub's last check (checked 13h ago). It answered 100% of checks over the last 30 days.
Is attestpage free to use?
Yes — the hub reached it with no key and no payment.
What tools does attestpage have?
13 tools: attestpage_check_packages, attestpage_attest, attestpage_verify_text_quote, attestpage_preview_text_quote, attestpage_verify_quotes, attestpage_verify_receipt, attestpage_preview_document, attestpage_verify_quote, ….
Is attestpage safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
915ms

last good check

priced tools
0

of 13 tools

_ answered our checks, 90 days 2 checks · signed record
  • unknown → live
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 13 tools
13 never probed 0 of 13 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • attestpage_check_packages unknown never probed

    Checks up to 10 npm, PyPI or crates names: listed, version, licence, OSV.dev advisories. US$0.005 per call; POST names. Costs US$0.005 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/check-packages

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "packages": [
            {
              "name": "left-pad",
              "ecosystem": "npm"
            },
            {
              "name": "requests",
              "ecosystem": "pypi"
            },
            {
              "name": "serde",
              "ecosystem": "crates"
            }
          ]
        }
      ],
      "required": [
        "packages"
      ],
      "properties": {
        "packages": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "ecosystem",
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Package name as you would install it (npm names may be scoped: @scope/name)."
              },
              "version": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional: the version you will install (e.g. a pinned 4.17.20). Advisories are then listed for this version; without it, for the latest."
              },
              "ecosystem": {
                "enum": [
                  "npm",
                  "pypi",
                  "crates"
                ],
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "1 to 10 packages to look up. Each is { ecosystem, name, version? }; ecosystem is npm, pypi or crates (crates.io)."
        }
      },
      "additionalProperties": false
    }
    arguments 60 lines
  • attestpage_attest unknown never probed

    Signs a timestamped receipt for a file's sha256, proving it existed unchanged then. US$0.002 per call; POST the hash. Costs US$0.002 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/attest

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "note": "delivery of report v3 to order 77",
          "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
        }
      ],
      "required": [
        "sha256"
      ],
      "properties": {
        "note": {
          "type": "string",
          "maxLength": 280,
          "description": "Optional note; only its SHA-256 goes in the receipt."
        },
        "sha256": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{64}$",
          "description": "SHA-256 (hex) of the thing being attested."
        },
        "idempotency_key": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional, x402 payments only (keys are scoped to the paying address; trial and L402 calls get 400). Retries with the same key and sha256 get the same attestation (the receipt names that call own payment tx); a different sha256 gets 409."
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • attestpage_verify_text_quote unknown never probed

    Checks a quote word for word against text you hold: exact, fuzzy or none, offsets. US$0.005 per call; POST text, quote. Costs US$0.005 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-text-quote

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "text": "Refunds are paid within 14 days of purchase, to the card that was used.",
          "match": "fuzzy",
          "quote": "refunds are paid within 14 days",
          "case_sensitive": false
        }
      ],
      "required": [
        "text",
        "quote"
      ],
      "properties": {
        "end": {
          "type": "integer",
          "minimum": 1,
          "description": "Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match \"passages\"."
        },
        "text": {
          "type": "string",
          "description": "The source text you already hold, as sent (max 50,000 characters; no fetch, no normalising before hashing). Offsets count characters (code points)."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages of the text that share most of its words, scored, as evidence for you to judge (not a verdict). Not with start and end."
        },
        "quote": {
          "type": "string",
          "description": "Text to look for in the source, or with match \"passages\" the claim to find support for (max 1,000 characters after normalisation)."
        },
        "start": {
          "type": "integer",
          "minimum": 0,
          "description": "Optional, with end: the declared start offset of the quote in text, raw code points, 0-based. Only that slice is matched (max 1,000 code points), so the answer is whether the text at these offsets says the quote. Declared offsets are raw; result offsets are into the normalised text. If the slice misses but the quote is elsewhere in the text, result.located gives its position in the whole text."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 55 lines
  • attestpage_preview_text_quote unknown never probed

    Send the same body as POST /v1/verify/text-quote (start and end are ignored) and get back exact, fuzzy or none, the score and the number of matches. Free, 30 a day per IP address. The answer is not signed and has no offsets or receipt; the paid route returns those. Free. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-text-quote

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "text": "Refunds are paid within 14 days of purchase, to the card that was used.",
          "match": "fuzzy",
          "quote": "refunds are paid within 14 days",
          "case_sensitive": false
        }
      ],
      "required": [
        "text",
        "quote"
      ],
      "properties": {
        "end": {
          "type": "integer",
          "minimum": 1,
          "description": "Optional, with start: the declared end offset, raw code points, exclusive. Give both or neither; not with match \"passages\"."
        },
        "text": {
          "type": "string",
          "description": "The source text you already hold, as sent (max 50,000 characters; no fetch, no normalising before hashing). Offsets count characters (code points)."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages of the text that share most of its words, scored, as evidence for you to judge (not a verdict). Not with start and end."
        },
        "quote": {
          "type": "string",
          "description": "Text to look for in the source, or with match \"passages\" the claim to find support for (max 1,000 characters after normalisation)."
        },
        "start": {
          "type": "integer",
          "minimum": 0,
          "description": "Optional, with end: the declared start offset of the quote in text, raw code points, 0-based. Only that slice is matched (max 1,000 code points), so the answer is whether the text at these offsets says the quote. Declared offsets are raw; result offsets are into the normalised text. If the slice misses but the quote is elsewhere in the text, result.located gives its position in the whole text."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 55 lines
  • attestpage_verify_quotes unknown never probed

    Checks up to 20 quotes on one page: exact, fuzzy or none, offsets, signed receipt. US$0.02 per call; POST url, quotes. Costs US$0.02 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-quotes

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "url": "https://www.iana.org/help/example-domains",
          "match": "fuzzy",
          "quotes": [
            "These domains may be used as illustrative examples in documents",
            "without prior coordination with us"
          ]
        }
      ],
      "required": [
        "url",
        "quotes"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "http(s) URL of the page to check (max 2,048 characters). Fetched once for all the quotes."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "For every quote: exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict)."
        },
        "quotes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "1 to 20 quotes to look for on that page, or with match \"passages\" claims to find support for (each max 1,000 characters after normalisation). One price for the call however many."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 52 lines
  • attestpage_verify_receipt unknown 13h ago

    Use when you are handed an AttestPage evidence receipt and need to check it before relying on it: verifies the compact JWS against this service's published keys and returns its payload, so a forged or altered receipt is caught. Free. Free. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/receipt-verify

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "receipt": "eyJhbGciOiJFZERTQSIs…"
        }
      ],
      "required": [
        "receipt"
      ],
      "properties": {
        "receipt": {
          "type": "string",
          "maxLength": 163840,
          "description": "The compact JWS from the \"receipt\" field of a response."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • attestpage_preview_document unknown 13h ago

    Use before paying for POST /v1/verify/document: send the same body, and get back the quote and link pairs it would check, what was skipped and why, the number of parts and the exact price. Nothing is fetched, signed or charged. Free. Free. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-document

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "part": 0,
          "match": "fuzzy",
          "format": "markdown",
          "document": "WHO says \"Air pollution kills an estimated seven million people every year\" ([WHO](https://www.who.int/health-topics/air-pollution)).\n\n> These domains may be used as illustrative examples in documents\n> — [IANA](https://www.iana.org/help/example-domains)"
        }
      ],
      "required": [
        "document"
      ],
      "properties": {
        "part": {
          "type": "integer",
          "minimum": 0,
          "description": "0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "For every pair: exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict). With \"passages\", each sentence that carries a link is a claim."
        },
        "format": {
          "enum": [
            "markdown",
            "text",
            "html"
          ],
          "type": "string",
          "description": "markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped)."
        },
        "document": {
          "type": "string",
          "description": "The answer or report as written, 1 character to 60000 bytes (UTF-8). Its quotes and their links are found by fixed rules (extractor doc-v1)."
        },
        "min_words": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "A quoted span with fewer words is skipped as too_short (default 4)."
        },
        "part_size": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1,
          "description": "Pairs per part, default 10. A free trial call takes at most the size in extensions.trial.info.max_batch_items of the 402 offer."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 66 lines
  • attestpage_verify_quote unknown never probed

    Checks a quote on its live page: exact, fuzzy or none, offsets and a signed receipt. US$0.01 per call; POST url, quote. Costs US$0.01 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-quote

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "url": "https://www.iana.org/help/example-domains",
          "match": "fuzzy",
          "quote": "These domains may be used as illustrative examples in documents",
          "case_sensitive": false
        }
      ],
      "required": [
        "url",
        "quote"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "http(s) URL of the page to check (max 2,048 characters)."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict)."
        },
        "quote": {
          "type": "string",
          "description": "Text to look for on the page, or with match \"passages\" the claim to find support for (max 1,000 characters after normalisation)."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 45 lines
  • attestpage_verify_citations unknown never probed

    Checks up to 10 quote and URL pairs on live pages: exact, fuzzy or none, one receipt. US$0.10 per call; POST pairs. Costs US$0.10 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-citations

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "match": "fuzzy",
          "citations": [
            {
              "url": "https://www.iana.org/help/example-domains",
              "quote": "These domains may be used as illustrative examples in documents"
            },
            {
              "url": "https://www.iana.org/domains/reserved",
              "quote": "IANA-managed Reserved Domains"
            }
          ]
        }
      ],
      "required": [
        "citations"
      ],
      "properties": {
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "For every citation: exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict)."
        },
        "citations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "url",
              "quote"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "http(s) URL of the cited page (max 2,048 characters)."
              },
              "quote": {
                "type": "string",
                "description": "Text the answer says is on that page, or with match \"passages\" the claim it says the page supports (max 1,000 characters after normalisation)."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "1 to 10 citations. Each URL is fetched once however many quotes cite it. Dead domains are reported as results; if none resolves, 422 and no charge."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 67 lines
  • attestpage_fetch unknown never probed

    Returns a web page as clean text, with title, hashes and a signed receipt. US$0.002 per URL; POST up to 10 URLs. Costs US$0.002 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/fetch

    mcp-tool

    {
      "type": "object",
      "oneOf": [
        {
          "required": [
            "url"
          ]
        },
        {
          "required": [
            "urls"
          ]
        }
      ],
      "examples": [
        {
          "url": "https://www.iana.org/help/example-domains",
          "return_text": true
        }
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "http(s) URL to fetch (max 2,048 characters). Send url or urls, not both."
        },
        "urls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "Instead of url: 1 to 10 distinct http(s) URLs in one call, priced per URL (the route price × the count). The answer is results[], one per URL, each with its own receipt."
        },
        "return_text": {
          "type": "boolean",
          "description": "Also return up to 20,000 characters of clean text (per page). Default false."
        }
      },
      "additionalProperties": false
    }
    arguments 41 lines
  • attestpage_recheck unknown never probed

    Reports if a page changed since a receipt: unchanged, changed, gone, unreadable. US$0.003 per call; POST receipt, URL. Costs US$0.003 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/recheck

    mcp-tool

    {
      "type": "object",
      "oneOf": [
        {
          "required": [
            "receipt"
          ]
        },
        {
          "required": [
            "url",
            "content_sha256"
          ]
        }
      ],
      "examples": [
        {
          "url": "https://www.iana.org/help/example-domains",
          "return_text": false,
          "content_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        }
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "Only without receipt: the http(s) URL to re-check (max 2,048 characters)."
        },
        "quote": {
          "type": "string",
          "description": "Only with a verify/quote receipt in exact or fuzzy mode: the quote exactly as it was sent to verify/quote. Must match the one the receipt signed. We re-test it on the live page and answer quote.verdict: still_exact, now_exact, now_fuzzy, now_missing or unchecked."
        },
        "quotes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "Only with a verify/quotes receipt in exact or fuzzy mode: all of its quotes, exactly as sent to verify/quotes, in the same order. Each must match the one the receipt signed. We re-test each on the live page and answer quotes[i].verdict (same values as quote.verdict). Not with quote."
        },
        "history": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "Optional: up to 10 earlier receipts of this service for the same url, oldest first (fetch, verify/quote or recheck; paid or trial). Adds a timeline. Not stored."
        },
        "receipt": {
          "type": "string",
          "description": "Compact JWS receipt from an earlier /v1/fetch, /v1/verify/quote, /v1/verify/quotes or /v1/recheck call of this service (paid or trial; not a sample). Max 160 KB."
        },
        "return_text": {
          "type": "boolean",
          "description": "Also return up to 20,000 characters of the new clean text. Default false."
        },
        "content_sha256": {
          "type": "string",
          "description": "Only with url: the page.content_sha256 from our own fetch (64 hex). Other tools hash other text."
        }
      },
      "additionalProperties": false
    }
    arguments 64 lines
  • attestpage_check_links unknown never probed

    Checks up to 10 URLs: ok, broken, moved or unknown for each, with final URL and title. US$0.005 per call; POST URLs. Costs US$0.005 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/check-links

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "urls": [
            "https://www.iana.org/help/example-domains",
            "https://www.iana.org/domains/reserved"
          ]
        }
      ],
      "required": [
        "urls"
      ],
      "properties": {
        "urls": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "minLength": 1
                  },
                  "expected_text": {
                    "type": "string",
                    "description": "Optional text the page should contain (fuzzy match). Reported as expected_text.match; it does not change the link verdict."
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "1 to 10 items, each an http(s) URL string or { \"url\", \"expected_text\" }. Dead domains are reported as results; if none resolves, 422 and no charge."
        }
      },
      "additionalProperties": false
    }
    arguments 48 lines
  • attestpage_verify_document unknown never probed

    Checks every quote in a finished document against its live page, signed receipt. US$0.10 per call; POST the text. Costs US$0.10 per call in USDC via x402 (Base Sepolia, a test network), charged when the call answers below 400 (a no-match or not-found result is charged too); a bad request is refused unpaid. Pay by putting an x402 payment payload in _meta["x402/payment"]. Without one it returns the payment requirements. Docs: https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/docs/verify-document

    mcp-tool

    {
      "type": "object",
      "examples": [
        {
          "part": 0,
          "match": "fuzzy",
          "format": "markdown",
          "document": "WHO says \"Air pollution kills an estimated seven million people every year\" ([WHO](https://www.who.int/health-topics/air-pollution)).\n\n> These domains may be used as illustrative examples in documents\n> — [IANA](https://www.iana.org/help/example-domains)"
        }
      ],
      "required": [
        "document"
      ],
      "properties": {
        "part": {
          "type": "integer",
          "minimum": 0,
          "description": "0-based part to check, default 0; call POST /v1/verify/document/preview first to see how many parts there are."
        },
        "match": {
          "enum": [
            "exact",
            "fuzzy",
            "passages"
          ],
          "type": "string",
          "description": "For every pair: exact; fuzzy (default), which also accepts small differences; or passages, for a paraphrased claim: the 3 passages that share most of its words, scored, as evidence for you to judge (not a verdict). With \"passages\", each sentence that carries a link is a claim."
        },
        "format": {
          "enum": [
            "markdown",
            "text",
            "html"
          ],
          "type": "string",
          "description": "markdown (default), text (only bare URLs and [n] references are links) or html (<a href> links, <blockquote> and <q> quotes; other tags are dropped)."
        },
        "document": {
          "type": "string",
          "description": "The answer or report as written, 1 character to 60000 bytes (UTF-8). Its quotes and their links are found by fixed rules (extractor doc-v1)."
        },
        "min_words": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "A quoted span with fewer words is skipped as too_short (default 4)."
        },
        "part_size": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1,
          "description": "Pairs per part, default 10. A free trial call takes at most the size in extensions.trial.info.max_batch_items of the 402 offer."
        },
        "threshold": {
          "type": "number",
          "maximum": 1,
          "minimum": 0.5,
          "description": "Fuzzy similarity needed, default 0.9."
        },
        "case_sensitive": {
          "type": "boolean",
          "description": "Default false; must be false with match \"passages\"."
        }
      },
      "additionalProperties": false
    }
    arguments 66 lines
_ try it over mcp through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id d17aee0eceacc394.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/d17aee0eceacc394/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/d17aee0eceacc394/badge.svg)](https://brick.blue/agent/d17aee0eceacc394?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
1
ok
0
failed
1
success rate
0%
median latency
936ms
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

1 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on srv.us 2 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.