{
  "data": {
    "faq": null,
    "kicker": "Docs · Anchor Manifest v0.1 · draft",
    "lede": "There are good formats for describing a server, an API and an agent already. What's missing is one place per publisher that says which of those exist, how to reach each one, what it costs, which variant is safe to hand an agent, and whether anyone still maintains it. The manifest is that place. It's small on purpose and it links out instead of duplicating."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/docs/manifest",
    "json": "https://www.anchorterminal.com/docs/manifest.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/docs/manifest.md",
    "slim": "https://www.anchorterminal.com/docs/manifest.min.md"
  },
  "markdown": "## Design goals\n\n1. Use existing protocols first. The manifest points at an MCP registry `server.json`, an OpenAPI document, an A2A agent card, an llms.txt and x402 discovery data. It doesn't restate any of them.\n2. Add only what agents keep needing and nobody publishes. Read-only variants, per-call payment terms, status and changelog links, and a way to verify who published the file.\n3. Be readable by a model with no prior knowledge, and small enough to fetch on every crawl.\n4. Be optional. Tools without a manifest are still listed and scored. A manifest makes their facts more accurate and refreshes them faster.\n\n## Location and discovery\n\nServe the document at `https://\u003cpublisher-domain\u003e/.well-known/anchor.json` with `Content-Type: application/json` and CORS enabled. Optionally advertise it with `Link: \u003c/.well-known/anchor.json\u003e; rel=\"anchor-manifest\"` on responses from the tool's own endpoints, and list it in `llms.txt`.\n\n## Document\n\n```json\n{\n  \"anchor\": \"0.1\",\n  \"publisher\": {\n    \"name\": \"Example Search\",\n    \"url\": \"https://example.com\",\n    \"contact\": \"agents@example.com\",\n    \"docs\": \"https://example.com/docs\",\n    \"llmsTxt\": \"https://example.com/llms.txt\"\n  },\n  \"tools\": [\n    {\n      \"id\": \"com.example/search\",\n      \"kind\": \"mcp\",\n      \"name\": \"Example Search MCP\",\n      \"description\": \"Web search and page fetch for agents.\",\n      \"endpoint\": \"https://mcp.example.com/mcp\",\n      \"transport\": \"streamable-http\",\n      \"auth\": [\"none\", \"oauth2\", \"api-key\"],\n      \"readOnlyVariant\": \"https://mcp.example.com/mcp/readonly\",\n      \"scopedVariants\": { \"search-only\": \"https://mcp.example.com/mcp/search\" },\n      \"payments\": [\n        { \"protocol\": \"x402\", \"version\": 2, \"networks\": [\"eip155:8453\", \"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp\"], \"asset\": \"USDC\", \"priceUsd\": 0.005, \"unit\": \"call\", \"discovery\": \"https://api.cdp.coinbase.com/platform/v2/x402/discovery/search?payTo=0x...\" }\n      ],\n      \"pricing\": \"https://example.com/pricing\",\n      \"freeTier\": { \"cardRequired\": false, \"limit\": \"1000 calls/month\" },\n      \"schemas\": {\n        \"mcpServerJson\": \"https://registry.modelcontextprotocol.io/v0.1/servers/com.example%2Fsearch\",\n        \"openapi\": \"https://api.example.com/openapi.json\",\n        \"a2aAgentCard\": null\n      },\n      \"status\": \"https://status.example.com\",\n      \"changelog\": \"https://example.com/changelog\",\n      \"deprecations\": [\n        { \"what\": \"/sse endpoint\", \"sunset\": \"2026-12-31\", \"replacement\": \"https://mcp.example.com/mcp\" }\n      ],\n      \"telemetry\": { \"collected\": true, \"optOut\": \"EXAMPLE_TELEMETRY=0\", \"policy\": \"https://example.com/privacy\" },\n      \"security\": \"https://example.com/.well-known/security.txt\",\n      \"source\": \"https://github.com/example/search-mcp\",\n      \"license\": \"MIT\"\n    }\n  ],\n  \"verify\": {\n    \"dnsTxt\": \"_anchor.example.com\",\n    \"http\": \"https://example.com/.well-known/anchor.json\"\n  },\n  \"updated\": \"2026-09-25\"\n}\n```\n\n## Fields\n\n### Top level\n\n| Field | Required | Type | Notes |\n| --- | --- | --- | --- |\n| `anchor` | yes | string | Specification version, `\"0.1\"` |\n| `publisher` | yes | object | `name`, `url` required. `contact`, `docs`, `llmsTxt` recommended |\n| `tools` | yes | array | One entry per tool. May be empty for a publisher that only wants to be verified |\n| `verify` | no | object | How the claim is verified, see below |\n| `updated` | yes | date | ISO date the document last changed |\n\n### Tool entry\n\n| Field | Required | Type | Notes |\n| --- | --- | --- | --- |\n| `id` | yes | string | Reverse-DNS identifier, the same form the MCP registry uses (`com.example/search`). Use the registry name if the tool is registered. |\n| `kind` | yes | `mcp` · `http` · `openapi` · `a2a` · `sdk` | What kind of thing the endpoint is |\n| `name`, `description` | yes | string | Short. A model reads them |\n| `endpoint` | yes for hosted | URL | The primary hosted endpoint. Local-only tools use `packages` instead |\n| `packages` | no | array of `{registry, name}` | npm, pypi, oci, nuget |\n| `transport` | yes for `mcp` | `streamable-http` · `stdio` · `sse` | Declare `sse` only while it still works. List it under `deprecations` when retiring |\n| `auth` | yes | array | Any of `none`, `oauth2`, `api-key`, `pat`, `httpsig`, `x402`. Order by preference. |\n| `readOnlyVariant` | no | URL | An endpoint or mode that exposes no write tools. Strongly recommended, and scored. |\n| `scopedVariants` | no | map | Named narrower endpoints |\n| `payments[]` | no | array | `protocol` (`x402`, `mpp`, `l402`, `card`), `version`, `networks` (CAIP-2), `asset`, `priceUsd`, `unit` (`call`, `token`, `page`, `minute`), optional `discovery` URL |\n| `pricing` | no | URL | Human pricing page readable without a login |\n| `freeTier` | no | object | `cardRequired` boolean and a `limit` string |\n| `schemas` | no | object | `mcpServerJson`, `openapi`, `a2aAgentCard`, `jsonSchema` URLs |\n| `status`, `changelog` | recommended | URL | Scored under transparency |\n| `deprecations[]` | no | array | `what`, `sunset` (date), `replacement` |\n| `telemetry` | recommended | object | `collected` boolean, `optOut` instruction, `policy` URL |\n| `security` | no | URL | Usually the publisher's `security.txt` |\n| `source`, `license` | no | URL, SPDX id |  |\n\n## Verification\n\nA manifest is trusted for a listing when one of these holds.\n\n- DNS. A TXT record at `_anchor.\u003cpublisher-domain\u003e` contains `anchor-verify=\u003ctoken\u003e`, where the token is issued when claiming the listing.\n- HTTP. The manifest is served from `/.well-known/anchor.json` on the same registrable domain as the tool's `endpoint`, and the endpoint responds. Same origin is the proof.\n- Registry. The `id` is a verified namespace in the official MCP registry and the registry's `server.json` lists the same `endpoint`.\n\nA manifest that fails verification is ignored, not penalised. The crawler falls back to what it can observe.\n\n## How Anchor Terminal uses it\n\nOn every crawl the manifest is fetched, verified and diffed. Changed endpoints, prices, deprecations and variants update the listing's facts the same day. Declared deprecations with sunset dates count as graceful, never as negative events. A declared `readOnlyVariant` gets probed. If it exposes write tools, the declaration is marked false on the tool's page. Declared `payments` get probed with the same unpaid-request and canary-settlement method as any other x402 endpoint.\n\n## Relationship to other formats\n\n| Format | What it describes | How the manifest relates |\n| --- | --- | --- |\n| MCP registry `server.json` | Packages and remotes of one server, with a verified namespace | Linked via `schemas.mcpServerJson`. The manifest reuses its `id` |\n| OpenAPI | Operations of an HTTP API | Linked via `schemas.openapi`. RFC 9727 `/.well-known/api-catalog` stays the standard way to list OpenAPI documents |\n| A2A agent card | Skills and interfaces of an agent | Linked via `schemas.a2aAgentCard`. The card stays at `/.well-known/agent-card.json` |\n| llms.txt | Site index for LLMs | Linked from `publisher.llmsTxt`. The manifest should be listed in it |\n| x402 Bazaar / `/.well-known/x402` | Payable resources and prices | Linked via `payments[].discovery`. Prices in the live `402` win |\n| MCP server cards (`/.well-known/mcp/server-cards.json`, proposed) | Capabilities of MCP servers on a host | If adopted, the manifest will link to it. Until then the manifest carries the minimum needed |\n\n## Status\n\nDraft v0.1. Fields get added, not removed, before v1. Anchor Terminal publishes its own manifest at `/.well-known/anchor.json`.\n\nNobody outside this site publishes one yet, so the field list is our guess at what agents need rather than something worn in by use. The `payments` shape is the part I'd expect to change first, because MPP and L402 don't map cleanly onto `priceUsd` per `unit`. Feedback to `agents@anchorterminal.com`.\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Docs",
        "url": "https://www.anchorterminal.com/docs/"
      },
      {
        "name": "Anchor Manifest",
        "url": ""
      }
    ],
    "description": "Specification for the Anchor Manifest, a small JSON document at /.well-known/anchor.json that links a publisher's tools to the standards they already use (MCP server.json, OpenAPI, A2A agent cards, llms.txt, x402) and adds the things agents still can't find anywhere, namely read-only variants, payment terms, status, changelog and a way to verify who published it.",
    "facts": [
      "/.well-known/anchor.json",
      "links existing standards",
      "DNS or HTTP verification"
    ],
    "h1": "Anchor Manifest specification",
    "image": "https://www.anchorterminal.com/assets/og/manifest.png",
    "path": "/docs/manifest",
    "published": "2026-10-01",
    "section": "docs",
    "title": "Anchor Manifest (anchor.json) specification v0.1, a well-known file that tells agents how to reach, use and pay for your tools | Anchor Terminal",
    "toc": [
      {
        "id": "design-goals",
        "level": "h2",
        "text": "Design goals"
      },
      {
        "id": "location-and-discovery",
        "level": "h2",
        "text": "Location and discovery"
      },
      {
        "id": "document",
        "level": "h2",
        "text": "Document"
      },
      {
        "id": "fields",
        "level": "h2",
        "text": "Fields"
      },
      {
        "id": "top-level",
        "level": "h3",
        "text": "Top level"
      },
      {
        "id": "tool-entry",
        "level": "h3",
        "text": "Tool entry"
      },
      {
        "id": "verification",
        "level": "h2",
        "text": "Verification"
      },
      {
        "id": "how-anchor-terminal-uses-it",
        "level": "h2",
        "text": "How Anchor Terminal uses it"
      },
      {
        "id": "relationship-to-other-formats",
        "level": "h2",
        "text": "Relationship to other formats"
      },
      {
        "id": "status",
        "level": "h2",
        "text": "Status"
      }
    ],
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/docs/manifest"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 480
  },
  "version": 1
}
