{
  "protocolVersion": "0.3.0",
  "name": "FactStamp",
  "description": "Paid verification for agents: cited, dated answers about a company, a figure or a citation, each with an Ed25519 receipt that verifies offline.",
  "url": "https://factstamp.agentrails.workers.dev/mcp",
  "preferredTransport": "MCP (streamable HTTP)",
  "version": "0.1.0",
  "provider": {
    "organization": "Alpine AI",
    "url": "https://factstamp.agentrails.workers.dev"
  },
  "documentationUrl": "https://factstamp.agentrails.workers.dev/docs",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "securitySchemes": {
    "x402": {
      "type": "http",
      "scheme": "x402",
      "description": "Pay per call in USDC on Base (eip155:8453). An unpaid call returns HTTP 402 with the challenge; the manifest is at https://factstamp.agentrails.workers.dev/.well-known/x402."
    },
    "pack_code": {
      "type": "http",
      "scheme": "bearer",
      "description": "A prepaid pack bought by card at https://factstamp.agentrails.workers.dev/packs; present the code as `authorization: Bearer ***`. A pack can also be bought with PayPal: POST https://factstamp.agentrails.workers.dev/packs/paypal/checkout returns a buyer approval link and an order id, the buyer approves it on their own device, and the code is then read once at GET https://factstamp.agentrails.workers.dev/packs/claim?session_id=… (poll first with &peek=1)."
    }
  },
  "skills": [
    {
      "id": "check_entity",
      "name": "check_entity",
      "description": "Verify whether a legal entity exists and is currently registered, from open primary registers: the GLEIF LEI index, US SEC EDGAR and the Australian Business Register (ABN, ACN, GST, status). Call it before naming a company in a contract, invoice or filing, or when you need an identifier (ABN, ACN, LEI, CIK) for a company you know only by name. Returns found, ambiguous, not_found or unknown, cited to the register with its retrieval time. A near name match is never reported as a match.",
      "url": "https://factstamp.agentrails.workers.dev/entity",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.1,
      "payment": "x402"
    },
    {
      "id": "check_entity_file",
      "name": "check_entity_file",
      "description": "When you need the whole picture of one company before you sign, onboard, pay or acquire, call the entity file: ONE answer holding identity and standing, the registered office, SIC activity and previous names, the filing position, a sanctions screen across four lists, and the ownership chain to the ultimate parent — with ONE coverage block naming every register consulted and every one not. One call and one receipt instead of four. Unknown is a first-class answer.",
      "url": "https://factstamp.agentrails.workers.dev/entity-file",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.438119,
      "payment": "x402"
    },
    {
      "id": "check_figure",
      "name": "check_figure",
      "description": "Check a dated figure you are about to act on against the publisher's own series, and receive verified, stale, contradicted or unknown with the as-of date. Call it before committing a number to a page, deck, model or decision. Coverage today is Australian primary sources; anything outside coverage returns unknown rather than a guess.",
      "url": "https://factstamp.agentrails.workers.dev/check",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.05,
      "payment": "x402"
    },
    {
      "id": "verify_citation",
      "name": "verify_citation",
      "description": "Check a citation before repeating it. Give a DOI, an arXiv ID or a paper title; the answer says whether the work exists, what it is (title, authors, year, container) and whether it has been retracted. A title that is absent from both Crossref and arXiv returns not_found, and a near title match is never reported as verified. Cited to the source record with its retrieval time. Verdicts: verified, ambiguous, retracted, not_found, unknown.",
      "url": "https://factstamp.agentrails.workers.dev/citation",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.02,
      "payment": "x402"
    },
    {
      "id": "verify_package",
      "name": "verify_package",
      "description": "Check a dependency before installing it. Give a package and, optionally, a version with its ecosystem (npm, PyPI, crates.io); the answer says whether that exact version exists, whether it is yanked or deprecated, and every advisory OSV lists against it. A version that was never published returns not_found with the real versions nearest to it. Verdicts: verified, advisory, yanked, not_found, unknown.",
      "url": "https://factstamp.agentrails.workers.dev/package",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.02,
      "payment": "x402"
    },
    {
      "id": "check_document",
      "name": "check_document",
      "description": "Call it before you send, file or publish a document that quotes figures, names companies or cites papers. Post the text and every checkable claim comes back verified against dated primary sources, as one signed bundle with a per-claim receipt and its licence. Claims we cannot answer are named and never charged, and the preview is free. Verdicts: verified, stale, contradicted, unknown. Prose, not a list: a bare bibliography belongs to /bulk.",
      "url": "https://factstamp.agentrails.workers.dev/document",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.25,
      "payment": "x402"
    },
    {
      "id": "watch_add",
      "name": "watch_add",
      "description": "Buy a standing re-check of ONE citation or package version, when an answer must stay true for a month rather than once: daily re-checks for 30 days. US$0.50 the month — 1.7 cents a check, under a 2-cent lookup. The first check is answered and signed on purchase, and each real change (a retraction, a new advisory, a yanked version) gets its own signed receipt. One subject only: for a list use /watch/portfolio. Pay per call here, or redeem a pack code (10 credits).",
      "url": "https://factstamp.agentrails.workers.dev/watch",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.5,
      "payment": "x402"
    },
    {
      "id": "watch_portfolio",
      "name": "watch_portfolio",
      "description": "Watch a whole list at once, when a bibliography or a dependency manifest has to stay true: up to 25 citations or package versions re-checked every day for 30 days under one token. US$5 a portfolio — 20 cents a reference, under a cent a check. Every reference is answered and signed on purchase, and each real change gets its own signed receipt. Nothing is sent when nothing changed. A single subject on its own is /watch. Pay per call here, or redeem a prepaid pack code (100 credits).",
      "url": "https://factstamp.agentrails.workers.dev/watch/portfolio",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 5,
      "payment": "x402"
    },
    {
      "id": "verify_bulk",
      "name": "verify_bulk",
      "description": "Check a whole bibliography or dependency manifest in one round trip, before you rely on the list: up to 12 items at a flat US$0.12 — 1 cent an item, against 2 cents for the same lookups one at a time. Every item is answered by the same door that answers a single call, so the verdicts cannot disagree. A list, not prose: a whole document belongs to /document. Pay per call here, or redeem a prepaid pack code (one answer-pack credit per three items, up to 25 items on that rail).",
      "url": "https://factstamp.agentrails.workers.dev/bulk",
      "method": "POST",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "price_usd": 0.12,
      "payment": "x402"
    }
  ],
  "note": "MCP and plain HTTP only: no A2A JSON-RPC endpoint is implemented on this host. The skills above are the paid HTTP doors, with their prices; the MCP tools with the same names are served at https://factstamp.agentrails.workers.dev/mcp. Free surfaces: /llms.txt, /pricing.md, /openapi.json, /.well-known/x402."
}