EVIDIQ Notary MCP

EVIDIQ Notary MCP

Cryptographic receipt layer for AI inferences. Enables notarization and verification of AI outputs with on-chain proofs via x402 payment.

Category
Visit Server

README

<p align="center"> <img src="https://raw.githubusercontent.com/evidiq/evidiq/main/assets/evidiq.png" width="88" alt="EVIDIQ" /> </p>

<h1 align="center">EVIDIQ Notary MCP</h1>

<p align="center"><strong>Cryptographic receipts for AI outputs.</strong></p>

<p align="center"> Sign · Anchor · Verify — every inference provably existed, exactly as recorded. </p>

<p align="center"> <a href="https://evidiq.dev">evidiq.dev</a> · <a href="https://github.com/evidiq/evidiq">EVIDIQ Main</a> · <a href="https://github.com/evidiq/evidiq-notary-mcp">Notary MCP</a> </p>

<p align="center"> <a href="https://mcp.evidiq.dev/notary/mcp"><img src="https://img.shields.io/badge/MCP%20Server-Live-6E56CF?style=flat-square" alt="MCP Server" /></a> <a href="https://0g.ai"><img src="https://img.shields.io/badge/0G-Storage-00C2A8?style=flat-square" alt="0G Storage" /></a> <a href="https://www.oklink.com/xlayer"><img src="https://img.shields.io/badge/X%20Layer-Settlement-3CCF4E?style=flat-square" alt="X Layer" /></a> <a href="https://mcp.evidiq.dev/notary/x402"><img src="https://img.shields.io/badge/x402-pay--per--call-2563EB?style=flat-square" alt="x402" /></a> <a href="https://okx.ai"><img src="https://img.shields.io/badge/OKX.AI-A2MCP-121212?style=flat-square&logo=okx&logoColor=white" alt="OKX.AI" /></a> <a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-3DA639?style=flat-square" alt="License: MIT" /></a> </p>


AI agents generate outputs at scale, but nothing proves what a model said, when, or whether it was altered afterward. EVIDIQ Notary is the cryptographic receipt layer for AI inferences — delivered as a remote MCP server, billed per call over x402. Submit a prompt + response + model id; receive a signed, timestamped, 0G-anchored receipt that anyone can verify offline.

What it does

Every notarization returns a receipt that proves four things at once:

  • Existence — this exact prompt/response existed at this timestamp.
  • Integrity — change one character and the hash changes; verification fails.
  • Provenance — the model id, notary address, and optional trust report are bound into the signature.
  • Independence — verify a receipt offline with the notary's EVM address; batch Merkle roots are anchored on 0G Storage.

Use it from any agent

# Read the live pricing discovery
curl -s https://mcp.evidiq.dev/notary/x402

# Or connect the remote MCP server (Claude Code)
claude mcp add --transport http evidiq-notary https://mcp.evidiq.dev/notary/mcp

verify_attestation, get_receipt, notary_stats, and notary_pubkey are free. notarize_inference and notarize_batch are pay-per-call over x402: unauthenticated requests receive an HTTP 402 challenge; sign it and retry.

MCP Tools

Tool Cost Description
notarize_inference $0.001 USDT0 Single AI output notarization — signed receipt + 0G anchor
notarize_batch $0.005 USDT0 Up to 20 inferences in one call (audit trails)
verify_attestation Free Verify receipt: EIP-191 signature + content hash + Merkle proof
get_receipt Free Fetch proof material for an attestation
notary_stats Free Live volume, top models, notary address
notary_pubkey Free Notary EVM address + algorithm (offline verify)

How it settles

EVIDIQ Notary owns signing, anchoring, and verification, and settles on open infrastructure:

  • 0G Storage — every receipt is anchored on 0G mainnet (Aristotle, chain 16661) via the @0gfoundation/0g-ts-sdk. Tamper-evident, durable, and fetchable by anyone.
  • x402 v2 — per-call settlement (EIP-3009 exact / transferWithAuthorization), gasless for the payer, settled on-chain by the notary's X402_SETTLE_KEY.
  • X Layer / USDT0 — the OKX A2MCP settlement token (0x779ded…, 6 decimals). Per-tool pricing: $0.001 = 1000 atomic (single), $0.005 = 5000 atomic (batch).
  • EIP-191 — receipts are signed with the notary's EVM key (OG_PRIVATE_KEY). The same signature any verifier can recover offline.

Proven on-chain

Every notarization is verifiable end-to-end — the payment settles on X Layer and the receipt is anchored on 0G Storage. Both from live calls, not mockups.

1 · Payment — x402 settlement on X Layer

Amount 0.001 USDT0 on X Layer (eip155:196) — per-tool pricing (batch: 0.005)
Flow HTTP 402 → EIP-3009 signature → transferWithAuthorization (gasless for the payer)
Tx 0x53f72073…0070f2 · SUCCESS

2 · Receipt — 0G Storage anchor

Signer 0x8a3c7524…3ee7D (EIP-191, the EVIDIQ attester key)
Anchor receipt JSON uploaded to 0G Storage mainnet via @0gfoundation/0g-ts-sdk
Anchor tx 0xa43c8186…1a5e1 · SUCCESS

3 · Verification — EIP-191 + Merkle proof

verify_attestation recompute keccak256(prompt ‖ response) → recover EIP-191 signer → brute-force Merkle proof against merkleRoot
Live result valid: true, contentMatch: true, signatureValid: true, merkleValid: true
# Reproduce a paid notarization end-to-end (free tools need no payment)
curl -s https://mcp.evidiq.dev/notary/x402 | python3 -m json.tool

Payment on one chain, tamper-evident proof on 0G — the whole receipt is auditable end to end.

Pricing

Per-tool pricing — notarize_inference and notarize_batch are paid (x402); receipts are anchor + signed; everything else is free.

Operation Cost Token Chain Atomic
notarize_inference (single) $0.001 USDT0 X Layer (eip155:196) 1000
notarize_batch (≤20 items) $0.005 USDT0 X Layer (eip155:196) 5000
verify_attestation Free
get_receipt Free
notary_stats Free
notary_pubkey Free

Payment: x402 v2 protocol (EIP-3009 transferWithAuthorization on X Layer). No API keys, no accounts — the challenge quotes the right price per tool; sign it and retry.

Live discovery: GET https://mcp.evidiq.dev/notary/x402 returns the full per-tool pricing table.

Architecture

┌─────────────────┐     ┌──────────────────┐     ┌─────────────┐
│   AI Agent      │────▶│  EVIDIQ Notary   │────▶│  0G Storage │
│ (MCP Client)    │     │   MCP Server     │     │  (anchoring)│
└─────────────────┘     └──────────────────┘     └─────────────┘
                               │
                               ▼
                      ┌──────────────────┐     ┌──────────────┐
                      │  x402 v2 gate    │────▶│  X Layer     │
                      │  (EIP-3009)      │     │  USDT0 settle│
                      └──────────────────┘     └──────────────┘
                               │
                               ▼
                      ┌──────────────────┐
                      │  EIP-191 sign    │
                      │  + Merkle tree   │
                      └──────────────────┘

Self-host

# Build & run (Docker)
docker build -t evidiq-notary .
docker run -d -p 3000:3000 --env-file .env evidiq-notary

# Or from source
npm install && npm run build
PORT=3000 node dist/start-server.js

Endpoint: POST /mcp · Discovery: GET /x402 · Health: GET /

Configuration

# Notary signing key (EVM, EIP-191) — reuses the EVIDIQ 0G attester key
NOTARY_PRIVATE_KEY=0x...
OG_PRIVATE_KEY=0x...

# x402 payment config (X Layer mainnet, USDT0)
X402_CHAIN=x-layer
X402_ASSET=0x779ded0c9e1022225f8e0630b35a9b54be713736
X402_PAY_TO=0x2a8efe3093278bb4bd3b2d9c7b5ba992ca4fc9b0
X402_PRICE=1000                   # $0.001 USDT0 per single notarization (6 decimals)
X402_BATCH_PRICE=5000             # $0.005 USDT0 per batch (≤20 items)
X402_DOMAIN_NAME=USD₮0
X402_DOMAIN_VERSION=1
X402_SETTLE_KEY=0x...             # Gas-funded X Layer wallet
X402_RPC=https://rpc.xlayer.tech

# 0G Storage (mainnet Aristotle, chain 16661)
OG_STORAGE_RPC=https://evmrpc.0g.ai
OG_STORAGE_INDEXER=https://indexer-storage-turbo.0g.ai

Receipt structure

{
  "attestationId": "0xfbd95c81…eeb1",
  "contentHash": "0xfbd95c81…eeb1",
  "promptHash": "0x…",
  "responseHash": "0x…",
  "signature": "0x2f012d7f… (EIP-191)",
  "notaryAddress": "0x8a3c7524Aaed081825aC88eC7f4cCECFc583ee7D",
  "timestamp": "2026-07-17T00:41:15.303Z",
  "modelId": "glm-5.2",
  "merkleRoot": "0xfbd95c81…eeb1",
  "merkleProof": ["0x…"],
  "storageRoot": "0xae8526f7…e894",
  "storageTx": "0xa43c8186…1a5e1"
}

Verification (offline)

Anyone can verify a receipt without contacting the notary:

  1. Fetch the notary address: notary_pubkey tool (0x8a3c7524…3ee7D).
  2. Recompute contentHash = keccak256(prompt ‖ response).
  3. Recover the EIP-191 signer from signature over attestationMessage(reportHash, merkleRoot) — must equal notaryAddress.
  4. Verify the Merkle proof against merkleRoot (anchored on 0G).

Development

npm install      # install deps
npm run build    # tsc → dist/
npm run dev      # tsx watch server.ts
npm test         # vitest

Links

  • Live endpoint — https://mcp.evidiq.dev/notary/mcp
  • Pricing discovery — https://mcp.evidiq.dev/notary/x402
  • EVIDIQ main — https://github.com/evidiq/evidiq
  • EVIDIQ skill — https://github.com/evidiq/evidiq-skill
  • 0G Labs — https://0g.ai
  • x402 Protocol — https://x402.org
  • OKX.AI — https://okx.ai

License

MIT © 2026 EVIDIQ — see LICENSE. Part of the EVIDIQ trust layer for the AI agent economy.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured