{
  "markdown": "# x402 Notary — Cryptographic Receipts for AI Outputs\n\n[![M8ven Verified](https://m8ven.ai/badge/mcp/forgemeshlabs-x402-notary-mcp-ud1lz4?variant=verified)](https://m8ven.ai/mcp/forgemeshlabs-x402-notary-mcp-ud1lz4)\n\n[![x402-notary-mcp MCP server](https://glama.ai/mcp/servers/forgemeshlabs/x402-notary-mcp/badges/score.svg)](https://glama.ai/mcp/servers/forgemeshlabs/x402-notary-mcp)\n[![x402-notary-mcp MCP server](https://glama.ai/mcp/servers/forgemeshlabs/x402-notary-mcp/badges/card.svg)](https://glama.ai/mcp/servers/forgemeshlabs/x402-notary-mcp)\n\n*A [ForgeMesh Labs](https://forgemesh.io) product — the notary of the x402 agent economy.*\n\n**Prove what your AI said, when it said it, and which model said it.**\n\nEvery AI output is just text. There's no proof a specific model produced a specific response at a specific time — and as agents start hiring other agents, that trust gap gets expensive. x402 Notary closes it: submit any inference, pay **$0.001** in USDC (automatic, via [x402](https://x402.org) on Base or Solana — no API key, no account), and get back a **signed, timestamped, chain-anchored receipt** that anyone can verify, free, forever.\n\n> **We notarize the hash, not your secrets.** Your prompt and response are hashed and signed — never stored. Private signed receipts, publicly anchored by batch root.\n\n## Quick start: Base (Claude Desktop / Claude Code / any MCP client)\n\n```json\n{\n  \"mcpServers\": {\n    \"x402-notary\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@forgemeshlabs/x402-notary-mcp\"],\n      \"env\": {\n        \"WALLET_PRIVATE_KEY\": \"0x...\"\n      }\n    }\n  }\n}\n```\n\n`WALLET_PRIVATE_KEY` is a **dedicated low-balance Base wallet** for x402 micropayments — never your primary wallet. $1 of USDC notarizes 1,000 outputs.\n\n## Quick start: Solana\n\n```json\n{\n  \"mcpServers\": {\n    \"x402-notary-solana\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@forgemeshlabs/x402-notary-mcp\"],\n      \"env\": {\n        \"NOTARY_RAIL\": \"solana\",\n        \"NOTARY_BASE_URL\": \"https://notary-solana.forgemesh.io\",\n        \"SOLANA_PRIVATE_KEY\": \"[1,2,...]\"\n      }\n    }\n  }\n}\n```\n\n`SOLANA_PRIVATE_KEY` is a dedicated low-balance Solana keypair for x402 micropayments. It may be a JSON byte array, base58, base64, or hex-encoded 32/64-byte key. Never use your primary wallet.\n\n**Verification needs no wallet at all.** Skip the `env` block entirely and you can still verify receipts, inspect attestations, and read live stats.\n\n## Tools\n\n| Tool | Cost | What it does |\n|---|---|---|\n| `notarize_inference` | $0.001 | Signed receipt for one `{prompt, response, model_id}` |\n| `notarize_batch` | $0.005 | Up to 20 receipts in one call — built for audit trails |\n| `verify_attestation` | **free** | Check any receipt: signature, content hash, Merkle proof |\n| `get_receipt` | **free** | Fetch the public proof material for an attestation |\n| `notary_stats` | **free** | Live volume, top models, anchored batches |\n| `notary_pubkey` | **free** | The notary's Ed25519 key — verify receipts fully offline |\n\n## What a receipt proves\n\nWhen you notarize an inference you get an attestation:\n\n```json\n{\n  \"attestation_id\": \"att_64d22f5f5c95d0e759ad54dc\",\n  \"content_hash\": \"sha256 of {prompt, response, model_id, timestamp}\",\n  \"signature\": \"Ed25519 — verifiable offline against the public notary key\",\n  \"notarized_at\": \"2026-07-03T02:47:11.000Z\",\n  \"anchor\": { \"status\": \"sealed\", \"merkle_root\": \"…\", \"proof\": [\"…\"] }\n}\n```\n\nThat's proof of three things:\n\n1. **Existence** — this exact content existed at this exact time.\n2. **Integrity** — change one character of the prompt or response and verification fails.\n3. **Independence** — signatures verify offline with the published key; Merkle roots anchor batches. You don't have to trust the notary's word after the fact.\n\n## Verify anything, free, from anywhere\n\nAny agent (or human, or CI job) can check a receipt before acting on the output behind it:\n\n```bash\ncurl -s https://notary.forgemesh.io/api/verify \\\n  -H 'content-type: application/json' \\\n  -d '{\"attestation_id\":\"att_…\",\"prompt\":\"…\",\"response\":\"…\",\"model_id\":\"openai/gpt-5\"}'\n```\n\n`\"valid\": true` means the content matches the notarized hash **and** the notary's Ed25519 signature checks out. Tampered content is rejected with the exact failing check.\n\n## When should an agent notarize?\n\nNot every call — the outputs that matter:\n\n- **Agent-to-agent handoffs** — prove what you passed downstream came from this model, unmodified\n- **Paid deliverables** — research, reports, recommendations someone is paying for\n- **Compliance & audit trails** — decisions that affect money, legal exposure, or reputation\n- **Dispute prevention** — \"this is exactly what was generated, at exactly this time\"\n- **Marketplace reputation** — build a public, verifiable reliability trail for your agent or service\n\nCasual chat and scratchpad reasoning don't need receipts. Externalized outputs do.\n\n## Privacy, by design\n\n- Raw prompts, responses, and metadata are **not persisted** — the notary computes the hash, signs it, and discards the content.\n- Receipts contain proof material only: hash, signature, timestamps, model id, Merkle proof.\n- Only Merkle **batch roots** are anchored on-chain. Your content never touches a public chain.\n- Verification works by *you* supplying your original content — the notary can't reveal what it never kept.\n\n## How payment works\n\nNo signup, no API key, no subscription. The first request returns an HTTP 402 challenge; your MCP client signs a USDC payment authorization and retries. Base uses EIP-3009; Solana uses the x402 SVM exact rail. The receipt lands in the same response — including the payment transaction hash under `_payment`.\n\n## Direct API\n\nPrefer raw HTTP? The full agent-readable surface:\n\n- `https://notary.forgemesh.io/llms.txt` — one-page summary for agents\n- `https://notary.forgemesh.io/openapi.json` — OpenAPI 3.1 with x402 payment metadata\n- `https://notary.forgemesh.io/.well-known/x402.json` — x402 discovery manifest\n- `https://notary-solana.forgemesh.io/llms.txt` — Solana rail summary\n- `https://notary-solana.forgemesh.io/openapi.json` — Solana OpenAPI 3.1 with x402 metadata\n- `https://notary-solana.forgemesh.io/.well-known/x402.json` — Solana x402 discovery manifest\n\n## FAQ\n\n**Is my prompt stored anywhere?** No. The hash is computed, signed, and the raw text is discarded. This is the default and only mode.\n\n**Do I need an account or API key?** No. x402 payments are the only credential.\n\n**What does verification cost?** Nothing, for anyone, forever. Charging to verify would defeat the point of a trust primitive.\n\n**What chain and token?** USDC on Base mainnet (`eip155:8453`) by default. Set `NOTARY_RAIL=solana` and `NOTARY_BASE_URL=https://notary-solana.forgemesh.io` for Solana mainnet USDC.\n\n**Can I verify receipts without contacting the notary?** Yes — fetch the Ed25519 public key once (`notary_pubkey`) and verify signatures offline.\n\n**Why \"x402 Notary\"?** [x402](https://x402.org) is the open protocol that lets AI agents pay for services in USDC over plain HTTP — and this is its notary: the attestation layer agents use to prove and verify each other's outputs before money or reputation moves on them.\n\n---\n\nBuilt by [ForgeMesh Labs](https://forgemesh.io) · Powered by the [x402 protocol](https://x402.org) · MIT License\n",
  "bytes": 7316,
  "sha": "5a1b93206fe578e124512a3316af148b0f91f06d147ff987d042c1661fee4430",
  "repo_slug": "forgemeshlabs/x402-notary-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_forgemeshlabs_x402_notary_mcp_f3692a12/readme"
}