AOTrust Notarization & Evidence Server

link.aotrustPublished by aotrust.linkv2.5.2Updated Nov 14, 2026

Cryptographic proof of existence for AI agents. x402 on Base or Solana, NEAR anchored. Free tier.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Lets an AI agent notarize artifacts by requesting AOTrust cryptographic proof-of-existence receipts and verifying them.

What you can do
  • Request notarization of an artifact hash and receive a PDR receipt with a Shield ID
  • Look up and verify receipts through the public verify API, including Merkle inclusion data for anchored records
  • Check notary public keys and verify receipts offline with standalone parser and Merkle scripts
  • Notarize agent plan, patch or release checkpoints from MCP clients such as Cursor, Cline and Claude Desktop
When to use it
Use it when you want an independent, timestamped record that a file, build artifact or AI-generated change existed at a given time, outside your CI or repository infrastructure, and want the agent to create or check those receipts.
Requirements
Runs as a local process over stdio, with the AOTrust API base URL set via AOTRUST_BASE_URL. No account or API key is needed for discovery and free tools; paid notarization is settled in-band with USDC via x402 on Base or Solana, and free calls are rate-limited per IP. Network access to the AOTrust API is required.
Before you install
Paid notarization costs about $0.01 USDC per record and requires a funded wallet and payment signing, so an agent can spend money. The optional AO_TRUST_KEY is only for the GitHub Action's CI rate limit. Notarization publishes a hash and receipt that can be looked up publicly by Shield ID, so avoid hashing sensitive content you do not want linked.

Installation

In SourceWeft

  1. Open AOTrust Notarization & Evidence Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

AOTrust — Cryptographic Proof of Existence for AI Agents

[Official MCP Registry] [M8ven Score] [Protected by AOTrust] [Mainnet Live] [License] [PDR v2.3/v2.4] [x402]

AOTrust issues PDRs (Provenance Data Records) — 239-byte cryptographic receipts proving a digital artifact existed at a specific time. $0.01 USDC via x402 — pay on Base (EVM) or Solana (SVM, via MCP). Anchored hourly to NEAR blockchain. No account needed. Supports ordinary (v0x03) and bilateral (v0x04) signatures.

Positioning: an Independent External Provenance Checkpoint. Native attestations (Sigstore, GitHub artifact attestations) verify a build inside the CI system that produced it. AOTrust complements them: it issues a signed certificate outside GitHub/Microsoft infrastructure and anchors it hourly to the NEAR blockchain — so provenance survives even if the repository is rewritten, the CI logs disappear, or the attestation store is unavailable. Use both.

Agent Checkpoint (new)

Connect your AI coding agent in 60 seconds and make it notarize plan/patch/release checkpoints — free tier, no account: agent-checkpoint/ — mcp.json drop-ins for Cursor, Cline, and any MCP client, plus a copy-paste AGENTS.md block (Provenance: <Shield ID> in commits).

Authorship Claims (bilateral signatures)

Beyond agent workflows, AOTrust supports bilateral PDRs (v0x04): the artifact is signed by you (Ed25519) and countersigned by the notary — a binding hash ties your public key to the content. This turns "I wrote/published this first" into a verifiable claim for any digital artifact: manuscripts, designs, photos, research notes, legal correspondence. Verification is public at https://verify.aotrust.link — no account, no software install for the reader. Signing guide (Ed25519, NEP-413): SKILL.md → Bilateral Signature. See pdr-spec.md §v2.4 for the binding-hash construction.

Quickstart

Prefer one-click? See INTEGRATIONS.md — ready MCP configs for Cursor, Windsurf, Cline, Claude Desktop, plus a "notarize before commit" rule for your assistant and LangChain/CrewAI examples.

bash
# 1. Compute SHA-256 hash of your artifactHASH=$(echo -n "Hello AOTrust" | sha256sum | cut -d' ' -f1)
# 2. Request notarization → get 402 payment detailscurl -X POST https://api.aotrust.link/notarize \  -H "Content-Type: application/json" \  -d "{\"work_hash\":\"$HASH\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}"
# 3. Pay $0.01 USDC on Base (EIP-3009), then POST with x-payment header# Full example: see SKILL.md → "Step 3: Pay"

For full EIP-3009 signing code (Python + ethers.js examples), see SKILL.md.

Interfaces

InterfaceBest forAuth
HTTP APIDevelopers, scripts, CI/CDx402 payment (no API key needed); free tier 5/day/IP
MCPAI agents (Claude, Cursor, Cline)None for discovery + free tools (notary_free 5/day/IP)

Authentication & keys

Notarization is keyless. Standard notarization (free tier and x402 micropayments) never requires an API key — payment is in-band (x402 x-payment header) and free calls are IP rate-limited.

AO_TRUST_KEY is optional and only used by the GitHub Action (action/notarize.py) to unlock the dedicated CI rate limit (50/24h per key, via X-Api-Key on /v1/shield/free) instead of the shared per-IP free limit (5/24h). It is an opt-in convenience for CI pipelines — nothing else reads it, and no secret ever enters a PDR.

Endpoints:

  • API: https://api.aotrust.link/notarize
  • MCP: https://api.aotrust.link/mcp
  • Verify: https://verify.aotrust.link
  • Docs: https://docs.aotrust.link

Verify API (public, embeddable)

Verification is a standalone public API — no account, no rate limits, no payment. Embed it in your product (dashboards, audit tools, escrow flows) or call it from the terminal:

bash
# Verify a PDR (base64url-encoded bundle):curl https://api.aotrust.link/v1/pdr/verify/<pdr_b64url># → {"valid": true, "checks": {...}, "error": null}
# Look up a PDR by Shield ID (8 hex chars):curl https://api.aotrust.link/v1/shield/lookup/<shield_id># → {"found": true, "pdr_b64": "...", "shield_id": "..."}
# Get the notary public key for offline verification:curl https://api.aotrust.link/v1/notary/pubkey

Prefer full offline trust? pdr_parser.py verifies any PDR locally — zero dependencies, no network, no trust in our servers.

Offline Merkle verification (anchored receipts)

Anchored PDRs carry the hourly Merkle root committed on-chain in the NEAR contract notary-node.near — readable from any public NEAR RPC, forever, independent of our servers. The verify API returns merkle_proof, merkle_index, merkle_leaf and merkle_tree_size for anchored PDRs. Save the verify JSON response — then verify it forever, offline:

bash
# (once) save the verify response when the receipt is fresh:curl https://api.aotrust.link/v1/pdr/verify/<pdr_b64url> > verify.json
# (any time, no AOTrust server needed) check inclusion:python3 verify_merkle_inclusion.py \  --leaf <merkle_leaf> --proof <comma-joined merkle_proof> \  --index <merkle_index> --root <merkle_root> \  --tree-size <merkle_tree_size># → VALID
# the root can always be re-checked against the chain itself via any# NEAR RPC: contract notary-node.near, method get_root({"seq": N})

verify_merkle_inclusion.py is standalone and zero-dependency (RFC 9162 §2.1.3.2 walk, same hashing as the anchoring engine). tree_size must be taken from the verify response (or a published anchor snapshot), not chosen by the verifier.

PDR Specification & Tools

Comparison

FeatureAOTrustChainlinkOpenTimestampsNotary.fyi
Price/PDR$0.01$0.25+Free (slow)$0.50+
Payment railx402 USDCLINKBitcoin TXStripe
PDR format239B binaryOracle dataOTS filePDF
AI agent nativeMCP + HTTPNoNoNo
Blockchain anchorNEAR (hourly)EthereumBitcoinNone
Offline verifyYes (pdr_parser.py)NoYesNo

GitHub Action

Notarize build artifacts or AI-generated files directly in CI/CD — free, no wallet needed.

yaml
- uses: GitSerge-crypto/[email protected]  with:    files: dist/*

Outputs: shield_id, verify_url, pdr_b64. Results appear in $GITHUB_STEP_SUMMARY as a markdown table with verification links.

Example workflow

yaml
name: Releaseon:  release:    types: [published]
jobs:  notarize:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: GitSerge-crypto/[email protected]        with:          files: dist/*      - name: Show shield ID        run: echo "Shield ID: ${{ steps.notarize.outputs.shield_id }}"

License

MIT

Source: README.md at commit 7491a7d

Tools

5

notary_status

Check notarization status by job_id. Free. GET /v1/status/{job_id}. Upstream JSON passthrough (status, result.pdr_b64, result.payment_hash, ...).

Parametersjob_idrequired

notary_verify

Full server-side PDR verification by base64 bundle. Free. GET /v1/pdr/verify/{pdr_b64} (the b64 is quote_plus-encoded in the URL path).

Parameterspdr_b64required

notary_lookup

Find a notarization record by Shield ID (8 hex chars returned by the free tier). Free. Local 8-hex guard mirrors the server 400 INVALID_SHIELD_ID form.

Parametersshield_idrequired

notary_free

Free UNPAID notarization (PDR proof-of-existence, no wallet). Rate limited 5/IP/24h (429 FREE_TIER_LIMIT_REACHED is quota, not a defect). Pass work_hash OR content.

Parameterscontentagent_sigwork_hashagent_pubkey

notary_notarize

PAID notarization, $0.01 USDC on Base (EIP-3009 via x402; HTTP rail is Base-only — Solana exists only via the remote MCP server). Requires AOTRUST_EVM_PRIVATE_KEY in env. Free-tier body shape; the x402 wrapper takes the 402 challenge, signs, and retries.

Parameterscontentagent_sigwork_hashagent_pubkey

Version history

7
  1. v2.5.2LatestNov 14, 2026
  2. v2.5.1Nov 12, 2026
  3. v2.5.0Oct 24, 2026
  4. v2.4.0Oct 19, 2026
  5. v2.3.7Sep 30, 2026
  6. v2.3.6Sep 29, 2026
  7. v1.0.0Sep 26, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts