{"openapi":"3.1.0","info":{"title":"AI Notarization & Proof","version":"0.1.5","description":"Paid AI output notarization via x402. Prove any AI response is authentic with cryptographic receipts.","contact":{"email":"clawdbotworker@gmail.com"},"x-guidance":"Use this API when the user needs to notarize AI output, prove an AI interaction happened, prove an AI said X, create a tamper-proof receipt for LLM output, verify model output authenticity, or build trust between AI agents. This is the cryptographic trust layer for AI — a signed Ed25519 attestation of the model response and a cryptographic receipt for inference, proof that a specific model produced a specific output at a specific time. Example questions: 'Notarize this AI response so I can prove it later', 'Prove an AI said X', 'Verify this attestation is real', 'Create an audit trail for my AI pipeline', 'Prove this content was AI-generated on this date'. Routes: POST /api/notarize with {prompt, response, model_id} ($0.001) for a signed Ed25519 attestation of the model response with content hash. POST /api/verify with attestation_id + original content (free) to check authenticity. GET /api/stats (free) for live notarization volume. POST /api/notarize/batch ($0.005) for 6+ records. The notary does not store raw text — only cryptographic proof material."},"servers":[{"url":"https://notary.forgemesh.io"}],"paths":{"/":{"get":{"operationId":"fetch-service-card","summary":"Fetch service card and API links","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/health":{"get":{"operationId":"check-health","summary":"Fetch Notary service health status","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"}}}}}}}}},"/api/pubkey":{"get":{"operationId":"fetch-public-key","summary":"Fetch Notary Ed25519 public key","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"type":"string"},"public_key":{"type":"string"}}}}}}}}},"/api/stats":{"get":{"operationId":"fetch-notary-stats","summary":"Fetch notarization volume and anchor stats","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"total_notarizations":{"type":"integer"},"last_24h":{"type":"integer"},"top_models":{"type":"array","items":{"type":"object","properties":{"model_id":{"type":"string"},"n":{"type":"integer"}}}},"anchored_batches":{"type":"integer"},"pending_seal":{"type":"integer"},"latest_anchor":{"type":["object","null"]}}}}}}}}},"/api/receipt/{id}":{"get":{"operationId":"fetch-receipt","summary":"Fetch public receipt proof material","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Attestation id (att_…)"},{"name":"token","in":"query","required":false,"schema":{"type":"string"},"description":"Receipt token returned at notarization; raw payload is not stored by default"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Invalid receipt token"},"404":{"description":"Unknown attestation id"}}}},"/mcp":{"post":{"operationId":"submit-mcp-request","summary":"Submit hosted Notary MCP request","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"MCP JSON-RPC 2.0 message","additionalProperties":true}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"405":{"description":"GET/DELETE not supported (stateless)"}}}},"/api/verify":{"post":{"operationId":"verify-attestation","summary":"Verify an attestation receipt","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attestation_id":{"type":"string","description":"Attestation id (att_…) returned by /api/notarize"},"prompt":{"type":"string","description":"Original prompt — supply with response+model_id to recompute the content hash"},"response":{"type":"string","description":"Original model output"},"model_id":{"type":"string","description":"Original model id"},"client_timestamp":{"type":"string","description":"Original client timestamp if one was notarized"},"content_hash":{"type":"string","description":"Alternative to full content: compare this sha256 hex directly"}},"required":["attestation_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"checks":{"type":"object","properties":{"signature_valid":{"type":"boolean"},"hash_match":{"type":["boolean","null"],"description":"null when no content or hash was supplied to compare"}}},"attestation":{"type":"object"},"anchor":{"type":"object","properties":{"status":{"type":"string","description":"pending | sealed | anchored"},"merkle_root":{"type":"string"},"leaf":{"type":"string"},"leaf_index":{"type":"integer"},"proof":{"type":"array","items":{"type":"object","properties":{"hash":{"type":"string"},"position":{"type":"string"}}}},"chain_tx":{"type":["string","null"]}}}}}}}},"400":{"description":"Missing attestation_id"},"404":{"description":"Unknown attestation id"}}}},"/api/notarize":{"post":{"operationId":"notarize-inference","summary":"Notarize one AI inference","description":"Notarize AI output — a signed Ed25519 attestation of the model response and a cryptographic receipt for inference, so you can prove an AI said X. Pay $0.001 USDC via x402 (Base mainnet). Returns the attestation over the sha256 content hash of {prompt, response, model_id, client_timestamp}, a private receipt_token, payload_stored=false, and Merkle anchor status.","security":[],"x-x402-price":"$0.001","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}},{"mpp":{}}],"offers":[{"intent":"charge","method":"evm","amount":"1000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"$0.001 USDC on Base (chainId 8453), EIP-3009 authorization"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Exact prompt/input sent to the model"},"response":{"type":"string","description":"Exact model output being notarized"},"model_id":{"type":"string","description":"Model identifier, e.g. openai/gpt-5 or claude-fable-5"},"client_timestamp":{"type":"string","description":"ISO-8601 time the inference ran (optional; included in the content hash)"},"metadata":{"type":"object","description":"Optional caller metadata, <= 4 KB — accepted but NOT persisted or hashed (reserved for future opt-in retention)"}},"required":["prompt","response","model_id"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"attestation_id":{"type":"string"},"content_hash":{"type":"string","description":"sha256 hex over canonical {prompt, response, model_id, client_timestamp}"},"model_id":{"type":"string"},"notarized_at":{"type":"string"},"client_timestamp":{"type":["string","null"]},"signature":{"type":"string","description":"base64 Ed25519 signature by the notary key"},"signer_pubkey":{"type":"string","description":"base64 raw Ed25519 public key"},"algorithm":{"type":"string"},"receipt_token":{"type":"string","description":"Private receipt token; payload is not stored by default"},"receipt_url":{"type":"string"},"payload_stored":{"type":"boolean","description":"false by default: prompt/response/metadata are not persisted"},"anchor":{"type":"object","properties":{"status":{"type":"string"}}}}}}}},"400":{"description":"Invalid parameters (free — returned before payment)"},"402":{"description":"Payment Required"}}}},"/api/notarize/batch":{"post":{"operationId":"notarize-batch","summary":"Notarize AI output in bulk (up to 20 inferences)","description":"Notarize AI output in bulk — one signed Ed25519 attestation of each model response as a cryptographic receipt for inference, for audit trails across an AI pipeline. Pay $0.005 USDC via x402 for 1-20 records; returns one attestation per record. Breakeven vs single $0.001 calls is 6 records — use this for 6+ when optimizing cost.","security":[],"x-x402-price":"$0.005","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}},{"mpp":{}}],"offers":[{"intent":"charge","method":"evm","amount":"5000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"$0.005 USDC on Base (chainId 8453), EIP-3009 authorization"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","description":"Array of 1-20 inference records to notarize in one paid request","items":{"type":"object","properties":{"prompt":{"type":"string","description":"Exact prompt/input sent to the model"},"response":{"type":"string","description":"Exact model output being notarized"},"model_id":{"type":"string","description":"Model identifier, e.g. openai/gpt-5 or claude-fable-5"},"client_timestamp":{"type":"string","description":"ISO-8601 time the inference ran (optional; included in the content hash)"},"metadata":{"type":"object","description":"Optional caller metadata, <= 4 KB — accepted but NOT persisted or hashed (reserved for future opt-in retention)"}},"required":["prompt","response","model_id"]},"minItems":1,"maxItems":20}},"required":["records"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"attestations":{"type":"array","items":{"type":"object","properties":{"attestation_id":{"type":"string"},"content_hash":{"type":"string","description":"sha256 hex over canonical {prompt, response, model_id, client_timestamp}"},"model_id":{"type":"string"},"notarized_at":{"type":"string"},"client_timestamp":{"type":["string","null"]},"signature":{"type":"string","description":"base64 Ed25519 signature by the notary key"},"signer_pubkey":{"type":"string","description":"base64 raw Ed25519 public key"},"algorithm":{"type":"string"},"receipt_token":{"type":"string","description":"Private receipt token; payload is not stored by default"},"receipt_url":{"type":"string"},"payload_stored":{"type":"boolean","description":"false by default: prompt/response/metadata are not persisted"},"anchor":{"type":"object","properties":{"status":{"type":"string"}}}}}}}}}}},"400":{"description":"Invalid parameters (free — returned before payment)"},"402":{"description":"Payment Required"}}}}},"x-x402":{"rail":"base","network":"eip155:8453","payTo":"0x814EfE784709f5bF8dF47735D87602B01030e5D2","currency":"USDC","asset":null,"facilitator":"https://x402.xyz/facilitate"},"x-notary-public-key":{"algorithm":"ed25519","public_key":"XlLOy8DE5Lmu7V6yhXC/hWguGAzTdHPUIWl5svyF6Pg="},"provider":{"name":"ForgeMesh Labs","catalog":"POST https://x402.forgemesh.io/fleet-products ($0.05)","fleet":"11 x402 services and counting, 500+ paid endpoints, from $0.001 — one wallet, no signup, atomic USDC settlement on Base. Free index: https://x402.forgemesh.io/llms.txt"}}