{
  "markdown": "# AOTrust — Cryptographic Proof of Existence for AI Agents\n\n[![M8ven Score](https://m8ven.ai/badge/mcp/gitserge-crypto-aotrust-skills-g3hz21?v=0f2c915f775a2efe4292a97d389f921c)](https://m8ven.ai/mcp/gitserge-crypto-aotrust-skills-g3hz21)\n[![Protected by AOTrust](https://img.shields.io/badge/AOTrust-Notarized-0ea5e9)](https://verify.aotrust.link/s/40aefae4)\n![Mainnet Live](https://img.shields.io/badge/mainnet-LIVE-brightgreen)\n![License](https://img.shields.io/badge/license-MIT-blue)\n![PDR v2.3/v2.4](https://img.shields.io/badge/PDR-v2.3%2Fv2.4-blue)\n![x402](https://img.shields.io/badge/payment-x402-orange)\n\nAOTrust issues PDRs (Provenance Data Records) — 239-byte cryptographic receipts proving a digital artifact existed at a specific time. $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. No account needed. Supports ordinary (v0x03) and bilateral (v0x04) signatures.\n\n**Positioning: an Independent External Provenance Checkpoint.** Native\nattestations (Sigstore, GitHub artifact attestations) verify a build *inside*\nthe CI system that produced it. AOTrust complements them: it issues a signed\ncertificate *outside* GitHub/Microsoft infrastructure and anchors it daily to\nthe NEAR blockchain — so provenance survives even if the repository is\nrewritten, the CI logs disappear, or the attestation store is unavailable.\nUse both.\n\n## Agent Checkpoint (new)\n\nConnect your AI coding agent in 60 seconds and make it notarize\nplan/patch/release checkpoints — free tier, no account:\n**[agent-checkpoint/](agent-checkpoint/)** — mcp.json drop-ins for Cursor,\nCline, and any MCP client, plus a copy-paste `AGENTS.md` block\n(`Provenance: <Shield ID>` in commits).\n\n## Authorship Claims (bilateral signatures)\n\nBeyond agent workflows, AOTrust supports **bilateral PDRs (v0x04)**: the\nartifact is signed by **you** (Ed25519) *and* countersigned by the notary —\na binding hash ties your public key to the content. This turns \"I wrote/published\nthis first\" into a verifiable claim for **any digital artifact**: manuscripts,\ndesigns, photos, research notes, legal correspondence. Verification is public\nat https://verify.aotrust.link — no account, no software install for the reader.\nSigning guide (Ed25519, NEP-413): [SKILL.md → Bilateral Signature](aotrust-notarize/SKILL.md#bilateral-signature-optional-v0x04).\nSee [pdr-spec.md](pdr-spec.md) §v2.4 for the binding-hash construction.\n\n## Quickstart\n\n**Prefer one-click?** See [INTEGRATIONS.md](INTEGRATIONS.md) — ready MCP configs for\nCursor, Windsurf, Cline, Claude Desktop, plus a \"notarize before commit\" rule for your\nassistant and LangChain/CrewAI examples.\n\n```bash\n# 1. Compute SHA-256 hash of your artifact\nHASH=$(echo -n \"Hello AOTrust\" | sha256sum | cut -d' ' -f1)\n\n# 2. Request notarization → get 402 payment details\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d \"{\\\"work_hash\\\":\\\"$HASH\\\",\\\"agent_sig\\\":\\\"\\\",\\\"agent_pubkey\\\":\\\"\\\"}\"\n\n# 3. Pay $0.01 USDC on Base (EIP-3009), then POST with x-payment header\n# Full example: see SKILL.md → \"Step 3: Pay\"\n```\n\nFor full EIP-3009 signing code (Python + ethers.js examples), see [SKILL.md](aotrust-notarize/SKILL.md).\n\n## Interfaces\n\n| Interface | Best for | Auth |\n|-----------|----------|------|\n| HTTP API | Developers, scripts, CI/CD | x402 payment (no API key needed); free tier 5/day/IP |\n| MCP | AI agents (Claude, Cursor, Cline) | None for discovery + free tools (notary_free 5/day/IP) |\n\nEndpoints:\n- API: `https://api.aotrust.link/notarize`\n- MCP: `https://api.aotrust.link/mcp`\n- Verify: `https://verify.aotrust.link`\n- Docs: `https://docs.aotrust.link`\n\n## Verify API (public, embeddable)\n\nVerification is a **standalone public API** — no account, no rate limits, no\npayment. Embed it in your product (dashboards, audit tools, escrow flows)\nor call it from the terminal:\n\n```bash\n# Verify a PDR (base64url-encoded bundle):\ncurl https://api.aotrust.link/v1/pdr/verify/<pdr_b64url>\n# → {\"valid\": true, \"checks\": {...}, \"error\": null}\n\n# Look up a PDR by Shield ID (8 hex chars):\ncurl https://api.aotrust.link/v1/shield/lookup/<shield_id>\n# → {\"found\": true, \"pdr_b64\": \"...\", \"shield_id\": \"...\"}\n\n# Get the notary public key for offline verification:\ncurl https://api.aotrust.link/v1/notary/pubkey\n```\n\nPrefer full offline trust? [pdr_parser.py](pdr_parser.py) verifies any PDR\nlocally — zero dependencies, no network, no trust in our servers.\n\n### Offline Merkle verification (anchored receipts)\n\nAnchored PDRs carry the daily Merkle root committed on-chain in the NEAR\ncontract `notary-node.near` — readable from **any public NEAR RPC**, forever,\nindependent of our servers. The verify API returns `merkle_proof`,\n`merkle_index`, `merkle_leaf` and `merkle_tree_size` for anchored PDRs.\n**Save the verify JSON response** — then verify it forever, offline:\n\n```bash\n# (once) save the verify response when the receipt is fresh:\ncurl https://api.aotrust.link/v1/pdr/verify/<pdr_b64url> > verify.json\n\n# (any time, no AOTrust server needed) check inclusion:\npython3 verify_merkle_inclusion.py \\\n  --leaf <merkle_leaf> --proof <comma-joined merkle_proof> \\\n  --index <merkle_index> --root <merkle_root> \\\n  --tree-size <merkle_tree_size>\n# → VALID\n\n# the root can always be re-checked against the chain itself via any\n# NEAR RPC: contract notary-node.near, method get_root({\"seq\": N})\n```\n\n[verify_merkle_inclusion.py](verify_merkle_inclusion.py) is standalone and\nzero-dependency (RFC 9162 §2.1.3.2 walk, same hashing as the anchoring\nengine). `tree_size` must be taken from the verify response (or a published\nanchor snapshot), not chosen by the verifier.\n\n## PDR Specification & Tools\n\n- [pdr-spec.md](pdr-spec.md) — PDR v2.3/v2.4 binary format (Internal 193B + External 239B, ordinary + bilateral)\n- [pdr_parser.py](pdr_parser.py) — standalone parser, zero dependencies, offline verification\n- [aotrust-notarize/SKILL.md](aotrust-notarize/SKILL.md) — full integration guide for AI agents\n\n## Comparison\n\n| Feature | AOTrust | Chainlink | OpenTimestamps | Notary.fyi |\n|---------|---------|----------|----------------|-----------|\n| Price/PDR | $0.01 | $0.25+ | Free (slow) | $0.50+ |\n| Payment rail | x402 USDC | LINK | Bitcoin TX | Stripe |\n| PDR format | 239B binary | Oracle data | OTS file | PDF |\n| AI agent native | MCP + HTTP | No | No | No |\n| Blockchain anchor | NEAR (daily) | Ethereum | Bitcoin | None |\n| Offline verify | Yes (pdr_parser.py) | No | Yes | No |\n\n## GitHub Action\n\nNotarize build artifacts or AI-generated files directly in CI/CD — free, no wallet needed.\n\n```yaml\n- uses: GitSerge-crypto/aotrust-skills@v1.1\n  with:\n    files: dist/*\n```\n\nOutputs: `shield_id`, `verify_url`, `pdr_b64`. Results appear in `$GITHUB_STEP_SUMMARY` as a markdown table with verification links.\n\n### Example workflow\n\n```yaml\nname: Release\non:\n  release:\n    types: [published]\n\njobs:\n  notarize:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: GitSerge-crypto/aotrust-skills@v1.1\n        with:\n          files: dist/*\n      - name: Show shield ID\n        run: echo \"Shield ID: ${{ steps.notarize.outputs.shield_id }}\"\n```\n\n## License\n\nMIT",
  "bytes": 7155,
  "sha": "d0bf5dcb17f60a0a1e1f89855fd3936db3ed51cd248ca3d4d3e901a0389c2e44",
  "repo_slug": "gitserge-crypto/aotrust-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_gitserge_crypto_aotrust_notary_eaae9333/readme"
}