{"id":"1434aef4-cd67-4683-8263-edba2681cba1","entityType":"agent","slug":"clawhub-gitserge-crypto-aotrust-pdr-notarization","name":"AOTrust — PDR Notarization","canonicalUrl":"https://www.xpersona.co/agent/clawhub-gitserge-crypto-aotrust-pdr-notarization","canonicalPath":"/agent/clawhub-gitserge-crypto-aotrust-pdr-notarization","generatedAt":"2026-10-11T10:50:22.825Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":null},"description":"Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time. Pay $0.01 USDC on Base or Solana via x402 (MCP). Anchored daily to NEAR blockchain. Publicly verifiable. ONLY invoke when the user explicitly requests notarization or proof-of-existence for a specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible). Do NOT invoke proactively or as part of unrelated workflows.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s172fmt288fsc7d36tte2g8tqs88fh5m:aotrust-pdr-notarization","sourceUrl":"https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization","homepage":"https://clawhub.ai/gitserge-crypto/skills/aotrust-pdr-notarization","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/gitserge-crypto/skills/aotrust-pdr-notarization","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"AOTrust — PDR Notarization technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":null},"stars":null,"forks":null,"downloads":1118,"packageName":null,"latestVersion":"3.9.1","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:02:52.943Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T08:02:52.955Z","lastCrawledAt":"2026-10-11T08:02:52.943Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T08:02:52.943Z","lastVerifiedAt":null,"highlights":[{"version":"3.9.1","createdAt":"2026-10-08T19:21:32.520Z","changelog":"Frontmatter version bump to 3.9.1 (v3.9.0 commit missed the bump — canonical and mirrors now aligned). Added /menu live-price pointer to the HTTP interface: GET https://api.aotrust.link/menu returns the live tool list with costs and payment rails in one request (no 402 cycle needed). v3.9.0 content carried over: Solana rail (USDC-SPL via PayAI feePayer) through MCP; HTTP /notarize remains Base-only.","fileCount":3,"zipByteSize":8456},{"version":"3.8.0","createdAt":"2026-08-17T19:38:32.388Z","changelog":"- Added a free notarization tier (\"notary_free\") to the MCP interface: create instant cryptographic proof (unpaid PDR), rate-limited and wallet-free. - MCP tools list expanded from 4 to 5, now including `notary_free`. - Updated documentation to describe the free flow: instant proof in one step, no payment or wallet required (limits apply). - Clarified distinction between free and paid on-chain flows in both the changelog and usage instructions. - Removed file: skill-card.md (no user-facing impact).","fileCount":3,"zipByteSize":7878},{"version":"3.7.0","createdAt":"2026-07-05T08:15:17.565Z","changelog":"**Security and consent requirements added for notarization requests.** - Skill description and documentation now strongly emphasize user consent and manual payment approval before notarization. - Added pre-invocation security section outlining what data is shared, where it goes, and that payment and hashes are public and irreversible. - Explicit rule: Only invoke when the user explicitly requests notarization or proof-of-existence for a specific artifact. - Warning against proactive or automated invocation; the skill should never be triggered for unrelated workflows. - Removed redundant documentation file (skill-card.md). - Version updated to 3.7.0.","fileCount":3,"zipByteSize":7629},{"version":"3.6.2","createdAt":"2026-07-02T19:10:24.688Z","changelog":"- Removed the skill-card.md file. - SKILL version updated to 3.6.2. - Documentation improved: Bilateral Signature (v0x04) flow added, explaining how to include agent signatures for cryptographic binding. - Verification section enhanced to clarify `binding_hash` and `payload_hash` in API responses. - All previous interfaces and flows remain unchanged.","fileCount":3,"zipByteSize":7116},{"version":"3.6.1","createdAt":"2026-06-21T17:04:23.373Z","changelog":"- Added detailed guidance on how to compute the work hash for different artifact types. - Explained common mistakes when hashing artifacts, emphasizing reproducibility and correct practice. - No code or API changes; documentation and usage clarity improved. - Removed redundant file: skill-card.md.","fileCount":3,"zipByteSize":6410},{"version":"3.6.0","createdAt":"2026-06-20T23:21:26.723Z","changelog":"- MCP x402 USDC payment flow clarified; all production payments must use HTTP POST `/notarize`, not MCP tool calls. - Added warning that the canonical SKILL.md lives at the public GitHub repo. - Updated tool descriptions for better accuracy, especially for x402 and NEAR paths. - Improved documentation to prevent confusion about `notary_notarize_paid` and MCP flows. - Minor output schema changes: successful `/notarize` returns now include a `status` field.","fileCount":3,"zipByteSize":5960},{"version":"3.5.1","createdAt":"2026-06-20T22:45:59.602Z","changelog":"- Added MCP (Machine Client Protocol) interface with OAuth 2.1 support for AI agent integration; skill can now be used via both MCP and HTTP API. - Updated metadata with `mcp-endpoint` and `http-endpoint`. - Expanded API documentation with detailed flows for both MCP and HTTP. - Removed `skill-card.md` file. - Updated binary format section and separated verification instructions by API/programmatic method.","fileCount":3,"zipByteSize":5894},{"version":"3.4.2","createdAt":"2026-06-20T16:37:49.940Z","changelog":"- skill-card.md file was removed from the project. - Version updated from 3.4.1 to 3.4.2 in metadata. - No functional or documentation changes to SKILL.md content.","fileCount":3,"zipByteSize":4402}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172fmt288fsc7d36tte2g8tqs88fh5m:aotrust-pdr-notarization","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s172fmt288fsc7d36tte2g8tqs88fh5m:aotrust-pdr-notarization` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T10:50:22.823Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gitserge-crypto-aotrust-pdr-notarization/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":null},"readme":"Skill: AOTrust — PDR Notarization\n\nOwner: gitserge-crypto\n\nSummary: Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time. Pay $0.01 USDC on Base or Solana via x402 (MCP). Anchored daily to NEAR blockchain. Publicly verifiable. ONLY invoke when the user explicitly requests notarization or proof-of-existence for a specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible). Do NOT invoke proactively or as part of unrelated workflows.\n\nTags: ai-agents:3.0.0, base-l2:3.0.0, cryptographic-proof:3.0.0, latest:3.9.1, near-protocol:3.0.0, notarization:3.0.0, pdr:3.0.0, provenance:3.0.0, x402:3.0.0\n\nVersion history:\n\nv3.9.1 | 2026-10-08T19:21:32.520Z | user\n\nFrontmatter version bump to 3.9.1 (v3.9.0 commit missed the bump — canonical and mirrors now aligned). Added /menu live-price pointer to the HTTP interface: GET https://api.aotrust.link/menu returns the live tool list with costs and payment rails in one request (no 402 cycle needed). v3.9.0 content carried over: Solana rail (USDC-SPL via PayAI feePayer) through MCP; HTTP /notarize remains Base-only.\n\nv3.8.0 | 2026-08-17T19:38:32.388Z | user\n\n- Added a free notarization tier (\"notary_free\") to the MCP interface: create instant cryptographic proof (unpaid PDR), rate-limited and wallet-free.\n- MCP tools list expanded from 4 to 5, now including `notary_free`.\n- Updated documentation to describe the free flow: instant proof in one step, no payment or wallet required (limits apply).\n- Clarified distinction between free and paid on-chain flows in both the changelog and usage instructions.\n- Removed file: skill-card.md (no user-facing impact).\n\nv3.7.0 | 2026-07-05T08:15:17.565Z | user\n\n**Security and consent requirements added for notarization requests.**\n\n- Skill description and documentation now strongly emphasize user consent and manual payment approval before notarization.\n- Added pre-invocation security section outlining what data is shared, where it goes, and that payment and hashes are public and irreversible.\n- Explicit rule: Only invoke when the user explicitly requests notarization or proof-of-existence for a specific artifact.\n- Warning against proactive or automated invocation; the skill should never be triggered for unrelated workflows.\n- Removed redundant documentation file (skill-card.md).\n- Version updated to 3.7.0.\n\nv3.6.2 | 2026-07-02T19:10:24.688Z | user\n\n- Removed the skill-card.md file.\n- SKILL version updated to 3.6.2.\n- Documentation improved: Bilateral Signature (v0x04) flow added, explaining how to include agent signatures for cryptographic binding.\n- Verification section enhanced to clarify `binding_hash` and `payload_hash` in API responses.\n- All previous interfaces and flows remain unchanged.\n\nv3.6.1 | 2026-06-21T17:04:23.373Z | user\n\n- Added detailed guidance on how to compute the work hash for different artifact types.\n- Explained common mistakes when hashing artifacts, emphasizing reproducibility and correct practice.\n- No code or API changes; documentation and usage clarity improved.\n- Removed redundant file: skill-card.md.\n\nv3.6.0 | 2026-06-20T23:21:26.723Z | user\n\n- MCP x402 USDC payment flow clarified; all production payments must use HTTP POST `/notarize`, not MCP tool calls.\n- Added warning that the canonical SKILL.md lives at the public GitHub repo.\n- Updated tool descriptions for better accuracy, especially for x402 and NEAR paths.\n- Improved documentation to prevent confusion about `notary_notarize_paid` and MCP flows.\n- Minor output schema changes: successful `/notarize` returns now include a `status` field.\n\nv3.5.1 | 2026-06-20T22:45:59.602Z | user\n\n- Added MCP (Machine Client Protocol) interface with OAuth 2.1 support for AI agent integration; skill can now be used via both MCP and HTTP API.\n- Updated metadata with `mcp-endpoint` and `http-endpoint`.\n- Expanded API documentation with detailed flows for both MCP and HTTP.\n- Removed `skill-card.md` file.\n- Updated binary format section and separated verification instructions by API/programmatic method.\n\nv3.4.2 | 2026-06-20T16:37:49.940Z | user\n\n- skill-card.md file was removed from the project.\n- Version updated from 3.4.1 to 3.4.2 in metadata.\n- No functional or documentation changes to SKILL.md content.\n\nv3.4.1 | 2026-06-14T11:17:18.777Z | user\n\n- Expanded documentation and examples in SKILL.md, detailing supported artifact types and real-world use cases.\n- Added explanation of privacy features and clarified that artifact content is never uploaded.\n- Included a notice about a planned feature: optional client cryptographic signatures to strengthen provenance.\n- Improved wallet and payment requirement instructions.\n- Removed skill-card.md.\n\nv3.3.0 | 2026-06-14T08:46:42.826Z | user\n\n- Simplified flow: Only USDC on Base supported; NEAR payment and advanced workflows removed.\n- SKILL.md rewritten for clarity and brevity with a new 3-step process.\n- No account or authentication required for notarization or verification.\n- Skill-card.md file removed.\n- Updated metadata fields and descriptions to reflect single supported workflow and new version.\n\nv3.0.1 | 2026-06-13T15:04:04.671Z | user\n\n- Updated tool names to a simplified format (e.g., notary_quote, notary_verify); removed double prefixes (e.g., agent_notary_notary_).\n- Documentation now references updated tool names throughout workflows.\n- Incremented version metadata from \"3.0\" to \"3.1\".\n- Removed the sample file skill-card.md.\n- No changes to core notarization functionality or payment processes.\n\nv3.0.0 | 2026-06-11T21:13:33.825Z | auto\n\nMajor update: Simplifies the notarization workflow, adds x402 (Base/USDC) support, and introduces comprehensive protocol and API guidance.\n\n- Adds support for x402 USDC (Base) and NEAR payments for notarization, both with a flat $0.01 fee per PDR.\n- Fully rewritten documentation with detailed step-by-step workflows for each payment type, including error handling and hash computation rules.\n- Updates tool and endpoint references, clarifying correct usage and naming for each MCP server method.\n- Introduces advanced workflow for Agent Market escrow-based notarization (beta).\n- Public verification instructions included for independent PDR validation.\n- Emphasizes PDR usage as a tamper-proof proof of delivery, payment, or audit.\n\nArchive index:\n\nArchive v3.9.1: 3 files, 8456 bytes\n\nFiles: skill-card.md (1930b), SKILL.md (16760b), _meta.json (143b)\n\nFile v3.9.1:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base or Solana via x402 (MCP). Anchored daily to NEAR blockchain.\n  Publicly verifiable.\n  ONLY invoke when the user explicitly requests notarization or proof-of-existence for a\n  specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible).\n  Do NOT invoke proactively or as part of unrelated workflows.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.9.1\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\n## ⚠ Before You Start — Security & Consent\n\nThis skill interacts with an **external paid API**. Read this before invoking.\n\n| What leaves your machine | Where it goes | Reversible? |\n|--------------------------|---------------|-------------|\n| `work_hash` (SHA-256 of your artifact) | api.aotrust.link | No — hash is public in the PDR |\n| `agent_sig` + `agent_pubkey` (optional, bilateral) | api.aotrust.link | No — stored in notary ledger |\n| EIP-3009 payment signature | Base Mainnet (on-chain) | No — $0.01 USDC, irreversible |\n\n**Rules:**\n- **Confirm with the user** before notarizing. Show the artifact hash and ask: \"Notarize this for $0.01 USDC?\"\n- **Never use an unattended wallet.** Payment requires manual approval for every transaction.\n- **Do not let the agent manage private keys.** The user signs EIP-3009 manually or via a wallet that requires confirmation.\n- The artifact itself is never uploaded — only its hash. But the hash is public in the PDR and on NEAR blockchain.\n\n---\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | tools/list → notary_notarize_paid (x402 in-band micropayment) |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\n**None required.** The MCP endpoint works without any token or OAuth flow —\nconnect and call `tools/list` directly. Free-tier tools (`notary_free`,\n`notary_quote`, `notary_verify`) are keyless; paid notarization uses in-band\nx402 micropayments (no API key either).\n\nOAuth 2.1 endpoints exist as optional discovery stubs (used by the\nagents.near.ai integration path):\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (5)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_free` | Create instant free cryptographic proof (UNPAID PDR), rate limited (5/IP/day) | Free |\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | Notarize artifact, on-chain settlement — x402-over-MCP (in-band; Base or Solana USDC) or HTTP fallback (Base-only) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow — Free Tier (no wallet, 1 step)\n\nFor instant free proof without payment:\n\n1. **MCP:** Call `notary_free` with `work_hash` (64 hex) → get `shield_id`, `pdr_b64`, `verify_url`\n2. Done. No wallet, no payment. Rate limited: 5/IP/day, 1000/day global.\n\n> For on-chain settlement proof (payment-bound PDR with tx_hash on Base), use the paid flow below.\n\n### MCP Flow (x402 USDC — paid, in-band settlement)\n\nPaid notarization works **natively over MCP** (x402-over-MCP transport):\n\n1. **MCP:** Call `notary_notarize_paid` with `work_hash` (see \"Step 1: Compute the Work Hash\" below)\n2. **MCP:** Server returns the 402 challenge: `isError: true` + `PaymentRequired` in `structuredContent` (and `content[0].text` as the same JSON)\n3. **MCP:** x402-capable agents sign the payment and retry the same call with the signed payload in `params._meta[\"x402/payment\"]` → receive the PDR; the settlement receipt comes in `_meta[\"x402/payment-response\"]`. Two rails are accepted (choose by the `network` field of the challenge entry your wallet supports):\n   - **Base (EVM):** EIP-3009 `transferWithAuthorization`, USDC on Base (`eip155:8453`)\n   - **Solana (SVM):** USDC-SPL transfer with PayAI as feePayer (`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`) — payload field is `{\"transaction\": \"<base64 signed tx>\"}`; x402 SVM client libraries handle this automatically\n4. **MCP:** Call `notary_verify` with the `job_id` from the PDR → confirm `anchored`\n\nx402-unaware MCP clients should read `content[1]` of the 402 result (human-readable fallback) — direct HTTP clients can still `POST https://api.aotrust.link/notarize` with the `x-payment` header (see Step 3 below for format).\n\n> **Note:** `notary_notarize_paid` is a full paid tool: call it without payment to receive the challenge, then retry with payment attached. No HTTP round-trip is required for x402-capable MCP clients.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n> **Prices without a round-trip:** `GET https://api.aotrust.link/menu` returns the live tool list with costs and payment rails in one request (no 402 cycle needed).\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n**Key principle:** The hash must be reproducible by a third party who has the same artifact. Hash the artifact content directly — not metadata about it, not the HTTP response, not the chat history.\n\n#### What to hash (by artifact type)\n\n| Artifact type | What to hash | Python example |\n|---------------|-------------|-----------------|\n| AI text output | The raw response text, UTF-8 encoded | `hashlib.sha256(response_text.encode('utf-8')).hexdigest()` |\n| Source code file | The file content as bytes | `hashlib.sha256(open('main.py','rb').read()).hexdigest()` |\n| JSON data | Canonical JSON (sorted keys, no whitespace) | `hashlib.sha256(json.dumps(data, sort_keys=True, separators=(',',':')).encode()).hexdigest()` |\n| Binary file (image, PDF, etc.) | The file bytes directly | `hashlib.sha256(open('screenshot.png','rb').read()).hexdigest()` |\n| Agent decision | The specific decision string, not the full log | `hashlib.sha256(decision_text.encode('utf-8')).hexdigest()` |\n| Structured output | The serialized output string (deterministic format) | `hashlib.sha256(str(output).encode('utf-8')).hexdigest()` |\n\n#### Common mistakes\n\n- ❌ Hashing the HTTP response (includes headers, status code) — hash only the body\n- ❌ Hashing the chat history (includes user messages) — hash only the AI output\n- ❌ Hashing with different encoding each time — always use UTF-8 for text\n- ❌ Hashing the file path string — hash the file content bytes\n- ✅ Hash exactly the bytes that constitute the artifact, nothing more, nothing less\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n> **Solana payments are MCP-only.** The HTTP endpoint (`/notarize`) accepts Base (EVM) payments only. Solana (SVM) wallets pay via the MCP flow above (`notary_notarize_paid`).\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n  # agent_sig/agent_pubkey optional — include for Bilateral Signature (v0x04)\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Bilateral Signature (optional, v0x04)\n\nIf you want the PDR to cryptographically bind the agent's signature into the record:\n\n1. Sign your `work_hash` with your Ed25519 private key using NEP-413 (same as Full Chain)\n2. Include `agent_sig` (base64) and `agent_pubkey` (hex) in the POST `/notarize` body\n3. The notary will produce a v0x04 PDR with a **Binding Hash**: `payload_hash = sha256(work_hash + sig_A + agent_pubkey)`\n4. The PDR is still 239 bytes, same price ($0.01), same verification flow\n\nWithout `agent_sig` → ordinary v0x03 PDR (`payload_hash = work_hash`).\n\n**Verify response** now includes `binding_hash` (boolean) and `payload_hash` (replaces `work_hash`):\n- v0x03: `binding_hash=false`, `payload_hash=work_hash`\n- v0x04: `binding_hash=true`, `payload_hash=binding_hash`\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Proof of Authorship (Bilateral Signature, v0x04)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFor stronger provenance, clients can sign the artifact hash with their own Ed25519 key before notarization — this produces a **bilateral PDR (v0x04)** with a binding hash.\n\nThis creates a non-repudiable provenance chain:\nClient Key → Artifact Hash → Binding Hash → AOTrust PDR → Blockchain Anchor\n\nSee the **Bilateral Signature** section under Step 3 above for implementation details.\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution, multi-agent pipelines.\n\nThe standard PDR workflow (v0x03) remains available and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- AOTrust supports continuous provenance: re-notarizing the same work_hash is valid and produces a new timestamped PDR. Responses include a `provenance` block (first_seen, total notarizations) linking the new receipt to the original observation.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\n---\n\n## Changelog\n\n- v3.9.1 — frontmatter version bump (3.8.0 → 3.9.0 missed in v3.9 commit); added /menu pointer to HTTP interface (live price list, one request, no 402 cycle).\n- v3.9.0 — Solana rail (X402_SOLANA, pat 0x0A): dual-402 MCP accepts Base (EIP-3009) and Solana (USDC-SPL, PayAI feePayer) payments; HTTP /notarize remains Base-only (documented). PDR verify: payment_anchor_type surfaced; on-chain reveal for Solana via recomputed payment_hash.\n- v3.8.0 — Added notary_free tool for instant free-tier notarization via MCP without wallet. Updated tools table (4→5), added Free Tier MCP Flow section.\n- v3.7.0 — ClawHub security audit fixes: explicit trigger boundaries in description, Security & Consent section (external transmission warnings, user confirmation rules, wallet safety), updated Proof of Authorship from \"Planned\" to implemented (Bilateral Signature v0x04).\n- v3.6.2 — Bilateral Signature (v0x04): agent_sig + agent_pubkey → binding hash PDR. Verify response: payload_hash + binding_hash fields.\n- v3.6.1 — Added \"What to Hash\" examples (Step 1), common mistakes section\n\nFile v3.9.1:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.9.1\",\n  \"publishedAt\": 1791487292520\n}\n\nFile v3.9.1:skill-card.md\n\n## Description:\n\nCreates and verifies cryptographic proof-of-existence receipts for digital artifacts when a user explicitly requests notarization.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople and developers use this skill to request a timestamped proof for a specific artifact hash and later verify the resulting receipt. Paid notarization requires explicit user consent and a wallet-approved payment.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The artifact hash is sent to AOTrust and may be publicly visible in the proof.\n\nMitigation: Only submit the hash when the user explicitly requests proof for that specific artifact; do not upload the artifact itself.\n\nRisk: Paid notarization incurs an irreversible $0.01 USDC charge.\n\nMitigation: Before each payment, confirm the exact hash, destination, chain and charge with the user; require manual wallet approval and never authorize unattended signing.\n\n## Reference(s):\n\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp)\n- [AOTrust HTTP notarization endpoint](https://api.aotrust.link/notarize)\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON]\n\n**Output Format:** [Text summary with a proof receipt and verification result]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Receipt includes a public artifact hash; paid proofs cost $0.01 USDC.]\n\n## Skill Version(s):\n\n3.9.1 (source: release evidence and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v3.8.0: 3 files, 7878 bytes\n\nFiles: skill-card.md (2707b), SKILL.md (14843b), _meta.json (143b)\n\nFile v3.8.0:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\n  ONLY invoke when the user explicitly requests notarization or proof-of-existence for a\n  specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible).\n  Do NOT invoke proactively or as part of unrelated workflows.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.8.0\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\n## ⚠ Before You Start — Security & Consent\n\nThis skill interacts with an **external paid API**. Read this before invoking.\n\n| What leaves your machine | Where it goes | Reversible? |\n|--------------------------|---------------|-------------|\n| `work_hash` (SHA-256 of your artifact) | api.aotrust.link | No — hash is public in the PDR |\n| `agent_sig` + `agent_pubkey` (optional, bilateral) | api.aotrust.link | No — stored in notary ledger |\n| EIP-3009 payment signature | Base Mainnet (on-chain) | No — $0.01 USDC, irreversible |\n\n**Rules:**\n- **Confirm with the user** before notarizing. Show the artifact hash and ask: \"Notarize this for $0.01 USDC?\"\n- **Never use an unattended wallet.** Payment requires manual approval for every transaction.\n- **Do not let the agent manage private keys.** The user signs EIP-3009 manually or via a wallet that requires confirmation.\n- The artifact itself is never uploaded — only its hash. But the hash is public in the PDR and on NEAR blockchain.\n\n---\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → HTTP /notarize (pay) → notary_verify |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (5)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_free` | Create instant free cryptographic proof (UNPAID PDR), rate limited (5/IP/day) | Free |\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | x402 USDC — discovery only, cannot be called via MCP (see flow below) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow — Free Tier (no wallet, 1 step)\n\nFor instant free proof without payment:\n\n1. **MCP:** Call `notary_free` with `work_hash` (64 hex) → get `shield_id`, `pdr_b64`, `verify_url`\n2. Done. No wallet, no payment. Rate limited: 5/IP/day, 1000/day global.\n\n> For on-chain settlement proof (payment-bound PDR with tx_hash on Base), use the paid flow below.\n\n### MCP Flow (x402 USDC — paid, on-chain settlement)\n\nx402 payment requires HTTP calls — MCP tool calls alone cannot complete the flow:\n\n1. **MCP:** Call `notary_quote` with `work_hash` (see \"Step 1: Compute the Work Hash\" below) → get price ($0.01 USDC) and quote details\n2. **HTTP:** POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements (see Step 2 below for format)\n3. **HTTP:** Sign EIP-3009 `transferWithAuthorization` with your Ethereum key, then POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR (see Step 3 below for format)\n4. **MCP:** Call `notary_verify` with the `job_id` from step 3 → confirm `anchored`\n\n> **Note:** `notary_notarize_paid` appears in `tools/list` for discovery but cannot be called via MCP — x402 payment headers are not supported in MCP tool calls. Use HTTP POST `/notarize` for the actual payment step.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n**Key principle:** The hash must be reproducible by a third party who has the same artifact. Hash the artifact content directly — not metadata about it, not the HTTP response, not the chat history.\n\n#### What to hash (by artifact type)\n\n| Artifact type | What to hash | Python example |\n|---------------|-------------|-----------------|\n| AI text output | The raw response text, UTF-8 encoded | `hashlib.sha256(response_text.encode('utf-8')).hexdigest()` |\n| Source code file | The file content as bytes | `hashlib.sha256(open('main.py','rb').read()).hexdigest()` |\n| JSON data | Canonical JSON (sorted keys, no whitespace) | `hashlib.sha256(json.dumps(data, sort_keys=True, separators=(',',':')).encode()).hexdigest()` |\n| Binary file (image, PDF, etc.) | The file bytes directly | `hashlib.sha256(open('screenshot.png','rb').read()).hexdigest()` |\n| Agent decision | The specific decision string, not the full log | `hashlib.sha256(decision_text.encode('utf-8')).hexdigest()` |\n| Structured output | The serialized output string (deterministic format) | `hashlib.sha256(str(output).encode('utf-8')).hexdigest()` |\n\n#### Common mistakes\n\n- ❌ Hashing the HTTP response (includes headers, status code) — hash only the body\n- ❌ Hashing the chat history (includes user messages) — hash only the AI output\n- ❌ Hashing with different encoding each time — always use UTF-8 for text\n- ❌ Hashing the file path string — hash the file content bytes\n- ✅ Hash exactly the bytes that constitute the artifact, nothing more, nothing less\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n  # agent_sig/agent_pubkey optional — include for Bilateral Signature (v0x04)\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Bilateral Signature (optional, v0x04)\n\nIf you want the PDR to cryptographically bind the agent's signature into the record:\n\n1. Sign your `work_hash` with your Ed25519 private key using NEP-413 (same as Full Chain)\n2. Include `agent_sig` (base64) and `agent_pubkey` (hex) in the POST `/notarize` body\n3. The notary will produce a v0x04 PDR with a **Binding Hash**: `payload_hash = sha256(work_hash + sig_A + agent_pubkey)`\n4. The PDR is still 239 bytes, same price ($0.01), same verification flow\n\nWithout `agent_sig` → ordinary v0x03 PDR (`payload_hash = work_hash`).\n\n**Verify response** now includes `binding_hash` (boolean) and `payload_hash` (replaces `work_hash`):\n- v0x03: `binding_hash=false`, `payload_hash=work_hash`\n- v0x04: `binding_hash=true`, `payload_hash=binding_hash`\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Proof of Authorship (Bilateral Signature, v0x04)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFor stronger provenance, clients can sign the artifact hash with their own Ed25519 key before notarization — this produces a **bilateral PDR (v0x04)** with a binding hash.\n\nThis creates a non-repudiable provenance chain:\nClient Key → Artifact Hash → Binding Hash → AOTrust PDR → Blockchain Anchor\n\nSee the **Bilateral Signature** section under Step 3 above for implementation details.\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution, multi-agent pipelines.\n\nThe standard PDR workflow (v0x03) remains available and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\n---\n\n## Changelog\n\n- v3.8.0 — Added notary_free tool for instant free-tier notarization via MCP without wallet. Updated tools table (4→5), added Free Tier MCP Flow section.\n- v3.7.0 — ClawHub security audit fixes: explicit trigger boundaries in description, Security & Consent section (external transmission warnings, user confirmation rules, wallet safety), updated Proof of Authorship from \"Planned\" to implemented (Bilateral Signature v0x04).\n- v3.6.2 — Bilateral Signature (v0x04): agent_sig + agent_pubkey → binding hash PDR. Verify response: payload_hash + binding_hash fields.\n- v3.6.1 — Added \"What to Hash\" examples (Step 1), common mistakes section\n\nFile v3.8.0:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.8.0\",\n  \"publishedAt\": 1786995512388\n}\n\nFile v3.8.0:skill-card.md\n\n## Description:\n\nIssue public, cryptographically verifiable proof-of-existence records for selected digital artifacts by sending their SHA-256 hashes to AOTrust notarization endpoints, with a free tier and an optional paid on-chain settlement flow.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and agent operators use this skill to notarize hashes of AI outputs, documents, source code, datasets, and other artifacts so they can later prove the artifact existed at a specific time.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Notarization can create public, immutable proof records for selected artifact hashes.\n\nMitigation: Confirm the exact artifact hash with the user before creating proof and use the skill only for artifacts intended for notarization.\n\nRisk: The paid path uses an irreversible $0.01 USDC payment authorization.\n\nMitigation: Verify the hash, destination, and payment amount before approval; require a wallet flow with manual confirmation.\n\nRisk: The external AOTrust API receives the artifact hash and optional signature material.\n\nMitigation: Send only the SHA-256 hash and optional public signature fields; do not upload artifact contents or provide private keys to the agent.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/skills/aotrust-pdr-notarization)\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp)\n- [AOTrust HTTP notarization endpoint](https://api.aotrust.link/notarize)\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify)\n- [PDR binary specification](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md)\n- [PDR parser](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration instructions, JSON]\n\n**Output Format:** [Markdown guidance with shell command and JSON examples; AOTrust endpoints return JSON responses and base64-encoded PDR receipts.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The paid path can create public, immutable proof records and requires manual wallet approval before payment.]\n\n## Skill Version(s):\n\n3.8.0 (source: evidence release, artifact metadata, changelog)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v3.7.0: 3 files, 7629 bytes\n\nFiles: skill-card.md (2605b), SKILL.md (14330b), _meta.json (143b)\n\nFile v3.7.0:SKILL.md\n\n> ⚠️ Canonical version: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/aotrust-notarize/SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\n  ONLY invoke when the user explicitly requests notarization or proof-of-existence for a\n  specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible).\n  Do NOT invoke proactively or as part of unrelated workflows.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.7.0\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\n## ⚠ Before You Start — Security & Consent\n\nThis skill interacts with an **external paid API**. Read this before invoking.\n\n| What leaves your machine | Where it goes | Reversible? |\n|--------------------------|---------------|-------------|\n| `work_hash` (SHA-256 of your artifact) | api.aotrust.link | No — hash is public in the PDR |\n| `agent_sig` + `agent_pubkey` (optional, bilateral) | api.aotrust.link | No — stored in notary ledger |\n| EIP-3009 payment signature | Base Mainnet (on-chain) | No — $0.01 USDC, irreversible |\n\n**Rules:**\n- **Confirm with the user** before notarizing. Show the artifact hash and ask: \"Notarize this for $0.01 USDC?\"\n- **Never use an unattended wallet.** Payment requires manual approval for every transaction.\n- **Do not let the agent manage private keys.** The user signs EIP-3009 manually or via a wallet that requires confirmation.\n- The artifact itself is never uploaded — only its hash. But the hash is public in the PDR and on NEAR blockchain.\n\n---\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → HTTP /notarize (pay) → notary_verify |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (4)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | x402 USDC — discovery only, cannot be called via MCP (see flow below) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow (x402 USDC — the only production path)\n\nx402 payment requires HTTP calls — MCP tool calls alone cannot complete the flow:\n\n1. **MCP:** Call `notary_quote` with `work_hash` (see \"Step 1: Compute the Work Hash\" below) → get price ($0.01 USDC) and quote details\n2. **HTTP:** POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements (see Step 2 below for format)\n3. **HTTP:** Sign EIP-3009 `transferWithAuthorization` with your Ethereum key, then POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR (see Step 3 below for format)\n4. **MCP:** Call `notary_verify` with the `job_id` from step 3 → confirm `anchored`\n\n> **Note:** `notary_notarize_paid` appears in `tools/list` for discovery but cannot be called via MCP — x402 payment headers are not supported in MCP tool calls. Use HTTP POST `/notarize` for the actual payment step.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n**Key principle:** The hash must be reproducible by a third party who has the same artifact. Hash the artifact content directly — not metadata about it, not the HTTP response, not the chat history.\n\n#### What to hash (by artifact type)\n\n| Artifact type | What to hash | Python example |\n|---------------|-------------|-----------------|\n| AI text output | The raw response text, UTF-8 encoded | `hashlib.sha256(response_text.encode('utf-8')).hexdigest()` |\n| Source code file | The file content as bytes | `hashlib.sha256(open('main.py','rb').read()).hexdigest()` |\n| JSON data | Canonical JSON (sorted keys, no whitespace) | `hashlib.sha256(json.dumps(data, sort_keys=True, separators=(',',':')).encode()).hexdigest()` |\n| Binary file (image, PDF, etc.) | The file bytes directly | `hashlib.sha256(open('screenshot.png','rb').read()).hexdigest()` |\n| Agent decision | The specific decision string, not the full log | `hashlib.sha256(decision_text.encode('utf-8')).hexdigest()` |\n| Structured output | The serialized output string (deterministic format) | `hashlib.sha256(str(output).encode('utf-8')).hexdigest()` |\n\n#### Common mistakes\n\n- ❌ Hashing the HTTP response (includes headers, status code) — hash only the body\n- ❌ Hashing the chat history (includes user messages) — hash only the AI output\n- ❌ Hashing with different encoding each time — always use UTF-8 for text\n- ❌ Hashing the file path string — hash the file content bytes\n- ✅ Hash exactly the bytes that constitute the artifact, nothing more, nothing less\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n  # agent_sig/agent_pubkey optional — include for Bilateral Signature (v0x04)\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Bilateral Signature (optional, v0x04)\n\nIf you want the PDR to cryptographically bind the agent's signature into the record:\n\n1. Sign your `work_hash` with your Ed25519 private key using NEP-413 (same as Full Chain)\n2. Include `agent_sig` (base64) and `agent_pubkey` (hex) in the POST `/notarize` body\n3. The notary will produce a v0x04 PDR with a **Binding Hash**: `payload_hash = sha256(work_hash + sig_A + agent_pubkey)`\n4. The PDR is still 239 bytes, same price ($0.01), same verification flow\n\nWithout `agent_sig` → ordinary v0x03 PDR (`payload_hash = work_hash`).\n\n**Verify response** now includes `binding_hash` (boolean) and `payload_hash` (replaces `work_hash`):\n- v0x03: `binding_hash=false`, `payload_hash=work_hash`\n- v0x04: `binding_hash=true`, `payload_hash=binding_hash`\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Proof of Authorship (Bilateral Signature, v0x04)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFor stronger provenance, clients can sign the artifact hash with their own Ed25519 key before notarization — this produces a **bilateral PDR (v0x04)** with a binding hash.\n\nThis creates a non-repudiable provenance chain:\nClient Key → Artifact Hash → Binding Hash → AOTrust PDR → Blockchain Anchor\n\nSee the **Bilateral Signature** section under Step 3 above for implementation details.\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution, multi-agent pipelines.\n\nThe standard PDR workflow (v0x03) remains available and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\n---\n\n## Changelog\n\n- v3.7.0 — ClawHub security audit fixes: explicit trigger boundaries in description, Security & Consent section (external transmission warnings, user confirmation rules, wallet safety), updated Proof of Authorship from \"Planned\" to implemented (Bilateral Signature v0x04).\n- v3.6.2 — Bilateral Signature (v0x04): agent_sig + agent_pubkey → binding hash PDR. Verify response: payload_hash + binding_hash fields.\n- v3.6.1 — Added \"What to Hash\" examples (Step 1), common mistakes section\n\nFile v3.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.7.0\",\n  \"publishedAt\": 1783239317565\n}\n\nFile v3.7.0:skill-card.md\n\n## Description: <br>\nIssues a paid cryptographic proof (PDR) that a specific digital artifact existed at a particular time without uploading the artifact content. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent operators use this skill to create paid proof-of-existence records for specific artifacts after explicit user consent. It is intended for notarizing hashes of documents, code, AI outputs, datasets, logs, or other digital artifacts through AOTrust. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A document-derived hash and payment or authentication metadata are sent to AOTrust and payment settlement is irreversible. <br>\nMitigation: Confirm the exact artifact hash, destination, and $0.01 USDC cost with the user before signing, and use a dedicated low-balance wallet. <br>\nRisk: Public hashes can create linkage risk for sensitive or guessable content even when the artifact itself is not uploaded. <br>\nMitigation: Avoid notarizing sensitive or easily guessable content unless the user understands that the hash will be public in the PDR. <br>\nRisk: Hashing the wrong bytes would notarize the wrong artifact. <br>\nMitigation: Hash the artifact content directly in a reproducible format and show the hash to the user before requesting notarization. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/skills/aotrust-pdr-notarization) <br>\n- [AOTrust verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [PDR binary specification](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown instructions with JSON examples and shell command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires explicit user consent, reproducible artifact hashing, and manual approval of the $0.01 USDC payment before notarization.] <br>\n\n## Skill Version(s): <br>\n3.7.0 (source: server release metadata and artifact metadata/changelog) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.6.2: 3 files, 7116 bytes\n\nFiles: skill-card.md (2979b), SKILL.md (12602b), _meta.json (143b)\n\nFile v3.6.2:SKILL.md\n\n> ⚠️ Canonical version: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/aotrust-notarize/SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.6.2\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → HTTP /notarize (pay) → notary_verify |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (4)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | x402 USDC — discovery only, cannot be called via MCP (see flow below) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow (x402 USDC — the only production path)\n\nx402 payment requires HTTP calls — MCP tool calls alone cannot complete the flow:\n\n1. **MCP:** Call `notary_quote` with `work_hash` (see \"Step 1: Compute the Work Hash\" below) → get price ($0.01 USDC) and quote details\n2. **HTTP:** POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements (see Step 2 below for format)\n3. **HTTP:** Sign EIP-3009 `transferWithAuthorization` with your Ethereum key, then POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR (see Step 3 below for format)\n4. **MCP:** Call `notary_verify` with the `job_id` from step 3 → confirm `anchored`\n\n> **Note:** `notary_notarize_paid` appears in `tools/list` for discovery but cannot be called via MCP — x402 payment headers are not supported in MCP tool calls. Use HTTP POST `/notarize` for the actual payment step.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n**Key principle:** The hash must be reproducible by a third party who has the same artifact. Hash the artifact content directly — not metadata about it, not the HTTP response, not the chat history.\n\n#### What to hash (by artifact type)\n\n| Artifact type | What to hash | Python example |\n|---------------|-------------|-----------------|\n| AI text output | The raw response text, UTF-8 encoded | `hashlib.sha256(response_text.encode('utf-8')).hexdigest()` |\n| Source code file | The file content as bytes | `hashlib.sha256(open('main.py','rb').read()).hexdigest()` |\n| JSON data | Canonical JSON (sorted keys, no whitespace) | `hashlib.sha256(json.dumps(data, sort_keys=True, separators=(',',':')).encode()).hexdigest()` |\n| Binary file (image, PDF, etc.) | The file bytes directly | `hashlib.sha256(open('screenshot.png','rb').read()).hexdigest()` |\n| Agent decision | The specific decision string, not the full log | `hashlib.sha256(decision_text.encode('utf-8')).hexdigest()` |\n| Structured output | The serialized output string (deterministic format) | `hashlib.sha256(str(output).encode('utf-8')).hexdigest()` |\n\n#### Common mistakes\n\n- ❌ Hashing the HTTP response (includes headers, status code) — hash only the body\n- ❌ Hashing the chat history (includes user messages) — hash only the AI output\n- ❌ Hashing with different encoding each time — always use UTF-8 for text\n- ❌ Hashing the file path string — hash the file content bytes\n- ✅ Hash exactly the bytes that constitute the artifact, nothing more, nothing less\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n  # agent_sig/agent_pubkey optional — include for Bilateral Signature (v0x04)\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Bilateral Signature (optional, v0x04)\n\nIf you want the PDR to cryptographically bind the agent's signature into the record:\n\n1. Sign your `work_hash` with your Ed25519 private key using NEP-413 (same as Full Chain)\n2. Include `agent_sig` (base64) and `agent_pubkey` (hex) in the POST `/notarize` body\n3. The notary will produce a v0x04 PDR with a **Binding Hash**: `payload_hash = sha256(work_hash + sig_A + agent_pubkey)`\n4. The PDR is still 239 bytes, same price ($0.01), same verification flow\n\nWithout `agent_sig` → ordinary v0x03 PDR (`payload_hash = work_hash`).\n\n**Verify response** now includes `binding_hash` (boolean) and `payload_hash` (replaces `work_hash`):\n- v0x03: `binding_hash=false`, `payload_hash=work_hash`\n- v0x04: `binding_hash=true`, `payload_hash=binding_hash`\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\n---\n\n## Changelog\n\n- v3.6.2 — Bilateral Signature (v0x04): agent_sig + agent_pubkey → binding hash PDR. Verify response: payload_hash + binding_hash fields.\n- v3.6.1 — Added \"What to Hash\" examples (Step 1), common mistakes section\n\nFile v3.6.2:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.6.2\",\n  \"publishedAt\": 1783019424688\n}\n\nFile v3.6.2:skill-card.md\n\n## Description: <br>\nIssues a cryptographic proof (PDR) that a digital artifact existed at a specific time by notarizing its SHA-256 hash through AOTrust's external service. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, AI agents, and teams use this skill to create and verify timestamped cryptographic receipts for digital artifacts such as AI outputs, documents, source code, datasets, logs, and audit records without uploading the artifact content. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uses AOTrust's external notarization service and requires authentication or payment flow integration. <br>\nMitigation: Install only when that external service is intended, and require explicit user approval before sending artifact hashes or starting service calls. <br>\nRisk: The production notarization flow involves irreversible USDC payments on Base. <br>\nMitigation: Use a wallet flow that requires manual approval for every payment and confirms the artifact hash, amount, destination, and network before signing. <br>\nRisk: An unattended agent with private keys, wallet access, OAuth tokens, or payment authority could submit unintended notarization requests. <br>\nMitigation: Do not give the agent unattended access to private keys or OAuth tokens; keep signing and payment authorization under human-controlled tooling. <br>\nRisk: Hashing the wrong bytes can produce a valid PDR for the wrong artifact. <br>\nMitigation: Confirm the exact artifact content before hashing and use deterministic serialization for structured data. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/skills/aotrust-pdr-notarization) <br>\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp) <br>\n- [AOTrust HTTP notarization endpoint](https://api.aotrust.link/notarize) <br>\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [AOTrust web verifier](https://verify.aotrust.link) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with JSON and shell command examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides the agent through hashing an artifact, requesting a quote, completing an externally approved payment flow, receiving a PDR, and verifying the result.] <br>\n\n## Skill Version(s): <br>\n3.6.2 (source: server release evidence and artifact frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.6.1: 3 files, 6410 bytes\n\nFiles: skill-card.md (2153b), SKILL.md (11589b), _meta.json (143b)\n\nFile v3.6.1:SKILL.md\n\n> ⚠️ Canonical version: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/aotrust-notarize/SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.6.1\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → HTTP /notarize (pay) → notary_verify |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (4)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | x402 USDC — discovery only, cannot be called via MCP (see flow below) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow (x402 USDC — the only production path)\n\nx402 payment requires HTTP calls — MCP tool calls alone cannot complete the flow:\n\n1. **MCP:** Call `notary_quote` with `work_hash` (see \"Step 1: Compute the Work Hash\" below) → get price ($0.01 USDC) and quote details\n2. **HTTP:** POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements (see Step 2 below for format)\n3. **HTTP:** Sign EIP-3009 `transferWithAuthorization` with your Ethereum key, then POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR (see Step 3 below for format)\n4. **MCP:** Call `notary_verify` with the `job_id` from step 3 → confirm `anchored`\n\n> **Note:** `notary_notarize_paid` appears in `tools/list` for discovery but cannot be called via MCP — x402 payment headers are not supported in MCP tool calls. Use HTTP POST `/notarize` for the actual payment step.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n**Key principle:** The hash must be reproducible by a third party who has the same artifact. Hash the artifact content directly — not metadata about it, not the HTTP response, not the chat history.\n\n#### What to hash (by artifact type)\n\n| Artifact type | What to hash | Python example |\n|---------------|-------------|-----------------|\n| AI text output | The raw response text, UTF-8 encoded | `hashlib.sha256(response_text.encode('utf-8')).hexdigest()` |\n| Source code file | The file content as bytes | `hashlib.sha256(open('main.py','rb').read()).hexdigest()` |\n| JSON data | Canonical JSON (sorted keys, no whitespace) | `hashlib.sha256(json.dumps(data, sort_keys=True, separators=(',',':')).encode()).hexdigest()` |\n| Binary file (image, PDF, etc.) | The file bytes directly | `hashlib.sha256(open('screenshot.png','rb').read()).hexdigest()` |\n| Agent decision | The specific decision string, not the full log | `hashlib.sha256(decision_text.encode('utf-8')).hexdigest()` |\n| Structured output | The serialized output string (deterministic format) | `hashlib.sha256(str(output).encode('utf-8')).hexdigest()` |\n\n#### Common mistakes\n\n- ❌ Hashing the HTTP response (includes headers, status code) — hash only the body\n- ❌ Hashing the chat history (includes user messages) — hash only the AI output\n- ❌ Hashing with different encoding each time — always use UTF-8 for text\n- ❌ Hashing the file path string — hash the file content bytes\n- ✅ Hash exactly the bytes that constitute the artifact, nothing more, nothing less\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\n---\n\n## Changelog\n\n- v3.6.1 — Added \"What to Hash\" examples (Step 1), common mistakes section\n\nFile v3.6.1:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.6.1\",\n  \"publishedAt\": 1782061463373\n}\n\nFile v3.6.1:skill-card.md\n\n## Description: <br>\nIssues a cryptographic proof that a digital artifact existed at a specific time using AOTrust PDR notarization. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, agent operators, and audit workflows use this skill to create and verify PDRs for digital artifacts. It guides agents through reproducible SHA-256 hashing, AOTrust MCP or HTTP API calls, x402 USDC payment on Base, and PDR verification. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow requires a user-controlled crypto payment authorization. <br>\nMitigation: Use a wallet with limited funds and confirm the recipient, amount, token, and Base network before signing. <br>\nRisk: Issued PDRs are immutable and non-refundable. <br>\nMitigation: Confirm the artifact hash and intent to notarize before authorizing payment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization) <br>\n- [AOTrust PDR verification](https://verify.aotrust.link) <br>\n- [AOTrust PDR specification](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md) <br>\n- [AOTrust PDR parser](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration] <br>\n**Output Format:** [Markdown with API request examples and shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Includes hash computation guidance, API endpoints, payment requirements, and verification steps.] <br>\n\n## Skill Version(s): <br>\n3.6.1 (source: server release metadata and artifact frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.6.0: 3 files, 5960 bytes\n\nFiles: skill-card.md (2580b), SKILL.md (10006b), _meta.json (143b)\n\nFile v3.6.0:SKILL.md\n\n> ⚠️ Canonical version: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/aotrust-notarize/SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.6.0\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → HTTP /notarize (pay) → notary_verify |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (4)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_quote` | Get price + payment details for a work_hash | Free |\n| `notary_notarize` | NEAR_DIRECT payment (not available on mainnet) | — |\n| `notary_notarize_paid` | x402 USDC — discovery only, cannot be called via MCP (see flow below) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow (x402 USDC — the only production path)\n\nx402 payment requires HTTP calls — MCP tool calls alone cannot complete the flow:\n\n1. **MCP:** Call `notary_quote` with `work_hash` → get price ($0.01 USDC) and quote details\n2. **HTTP:** POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements (see Step 2 below for format)\n3. **HTTP:** Sign EIP-3009 `transferWithAuthorization` with your Ethereum key, then POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR (see Step 3 below for format)\n4. **MCP:** Call `notary_verify` with the `job_id` from step 3 → confirm `anchored`\n\n> **Note:** `notary_notarize_paid` appears in `tools/list` for discovery but cannot be called via MCP — x402 payment headers are not supported in MCP tool calls. Use HTTP POST `/notarize` for the actual payment step.\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n```python\nimport hashlib\nwork_hash = hashlib.sha256(b\"your digital artifact content\").hexdigest()\n```\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"status\": \"notarized\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFXRE3agAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"network\": \"base\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"subject_hash\": \"0000000000000000000000000000000000000000000000000000000000000000\",\n  \"work_hash\": \"d8cb8ce666bdc8053b79029116d937ba2c99640f037877fbafa6320092beef6a\",\n  \"timestamp_utc\": 1781993821,\n  \"issuer_id\": \"notary-node.near\",\n  \"merkle_root\": \"e4e495d4216391f3f78332870d2c025c70a1dd0b63d24d059ce3ece9aabd5b14\",\n  \"payment_hash\": \"cd87ee2300000000000000000000000000000000000000000000000000000000\",\n  \"signature_valid\": true,\n  \"tx_verified_on_chain\": false,\n  \"error\": null\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\nFile v3.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.6.0\",\n  \"publishedAt\": 1781997686723\n}\n\nFile v3.6.0:skill-card.md\n\n## Description: <br>\nIssue a cryptographic proof (PDR) that a digital artifact existed at a specific time without uploading the artifact content. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nAgents, developers, and auditors use this skill to hash digital artifacts, request AOTrust notarization, pay the required USDC fee on Base, and verify the resulting PDR without uploading the artifact content. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: A user may sign an unintended crypto payment if the x402 payment details are not checked. <br>\nMitigation: Verify the payment address, amount, Base network, and expiration before signing the documented $0.01 USDC payment. <br>\nRisk: Submitting raw artifact content would disclose data beyond the intended privacy model. <br>\nMitigation: Hash artifacts locally and submit only the 64-character SHA-256 work_hash. <br>\nRisk: PDR issuance is immutable and payment is non-refundable after issuance. <br>\nMitigation: Confirm the artifact hash and intended notarization before payment, then use the verification endpoint to confirm the receipt. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization) <br>\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp) <br>\n- [AOTrust notarization endpoint](https://api.aotrust.link/notarize) <br>\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [PDR binary specification](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md) <br>\n- [PDR parser](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, code, configuration] <br>\n**Output Format:** [Markdown guidance with HTTP, MCP, bash, JSON, and Python examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guidance emphasizes local SHA-256 hashing, user-approved x402 payment, and PDR verification.] <br>\n\n## Skill Version(s): <br>\n3.6.0 (source: server release metadata and artifact frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.5.1: 3 files, 5894 bytes\n\nFiles: skill-card.md (2855b), SKILL.md (9463b), _meta.json (143b)\n\nFile v3.5.1:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.5.1\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | OAuth 2.1 → tools/list → notary_quote → notary_notarize_paid |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\nOAuth 2.1 with PKCE (S256). Discovery:\n\n- Resource: `https://api.aotrust.link/.well-known/oauth-protected-resource/mcp`\n- Authorization server: `https://api.aotrust.link/.well-known/oauth-authorization-server`\n- Register client: `POST https://api.aotrust.link/oauth/register`\n- Authorize: `GET https://api.aotrust.link/oauth/authorize`\n- Token: `POST https://api.aotrust.link/oauth/token`\n\n### Available Tools (4)\n\n| Tool | Purpose | Payment? |\n|------|---------|----------|\n| `notary_quote` | Get price + sink address for a work_hash | Free |\n| `notary_notarize` | Notarize via NEAR_DIRECT payment | NEAR |\n| `notary_notarize_paid` | Notarize via x402 USDC (DISCOVERY ONLY — see note) | $0.01 USDC |\n| `notary_verify` | Verify a notarization by job_id | Free |\n\n### MCP Flow (x402 USDC — recommended)\n\nThe x402 payment flow uses HTTP, not MCP tool calls directly:\n\n1. Call `notary_quote` with `work_hash` → get price ($0.01 USDC) and quote details\n2. POST to `https://api.aotrust.link/notarize` with `{\"work_hash\": \"...\"}` → get 402 payment requirements\n3. Sign EIP-3009 `transferWithAuthorization` with your Ethereum key\n4. POST to `https://api.aotrust.link/notarize` again with `x-payment` header → get 200 + PDR\n5. Call `notary_verify` with the `job_id` from step 4 → confirm `anchored`\n\n### MCP Flow (NEAR_DIRECT — alternative)\n\n1. Call `notary_quote` → get NEAR amount + sink address\n2. Send NEAR to sink address on-chain\n3. Call `notary_notarize` with `work_hash` + `tx_hash` → get `job_id`\n4. Call `notary_verify` with `job_id` → poll until `anchored`\n\n---\n\n## Interface 2: HTTP API (for Developers)\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n```python\nimport hashlib\nwork_hash = hashlib.sha256(b\"your digital artifact content\").hexdigest()\n```\n\n### Step 2: Request Notarization (expect HTTP 402)\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}\n```\n\nPayment details are in `accepts[0]`:\n- `scheme`: `\"exact\"` — pay exactly the specified amount\n- `network`: `\"base\"` — Base Mainnet (chain ID 8453)\n- `maxAmountRequired`: `\"10000\"` — 10000 micro-USDC = $0.01 USDC\n- `payTo`: where to send payment\n- `asset`: USDC contract on Base (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)\n- `maxTimeoutSeconds`: 300 — payment must be made within 5 minutes\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from `accepts[0]` in Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\"\n}\n```\n\n`pdr_b64` is your 239-byte cryptographic proof (base64-encoded).\n\n### Step 4: Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n\n```bash\n# By job_id\ncurl https://api.aotrust.link/v1/notarize/YOUR_JOB_ID/status\n```\n\nResponse:\n```json\n{\n  \"status\": \"anchored\",\n  \"result\": {\n    \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n    \"payment_hash\": \"679e323c\",\n    \"merkle_proof\": [],\n    \"near_anchor_tx\": \"H4MaR5ctqKcPGV3A7DDjANskum8F7h4jjJtSvgM9ZAGp\"\n  }\n}\n```\n\nOr verify the PDR directly (no job_id needed):\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nResponse:\n```json\n{\n  \"valid\": true,\n  \"version\": 3,\n  \"payment_anchor_type\": \"X402_BASE\",\n  \"issuer_id\": \"notary-node.near\",\n  \"signature_valid\": true,\n  \"merkle_root\": \"f6dc85fc02221d99cb66b12e49ee3c6626b5949e4623662a4f36b243c08de417\",\n  \"payment_hash\": \"679e323c00000000000000000000000000000000000000000000000000000000\"\n}\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## PDR Binary Format (v2.3)\n\n| Format | Size | Payload | Signature |\n|--------|------|---------|-----------|\n| Internal (server storage) | 193 bytes | 129 bytes | 64 bytes Ed25519 |\n| External (client receipt) | 239 bytes | 175 bytes | 64 bytes Ed25519 |\n\nVersion byte: 0x03. Signature: NEP-413 Ed25519 over raw payload.\n\nFull binary spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.\nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.\nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.\nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.\nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.\nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\nOnly the SHA-256 hash of the artifact is included in the PDR.\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to Step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- PDR spec: https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md\n- PDR parser (standalone, offline): https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py\n\nFile v3.5.1:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.5.1\",\n  \"publishedAt\": 1781995559602\n}\n\nFile v3.5.1:skill-card.md\n\n## Description: <br>\nIssue a cryptographic proof (PDR) that a digital artifact existed at a specific time, paid with $0.01 USDC on Base via x402 and anchored daily to NEAR blockchain. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal developers, engineers, and AI agents use this skill to notarize SHA-256 hashes of digital artifacts through MCP or HTTP and receive a publicly verifiable PDR without uploading the artifact content. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The notarization flow requires signing a wallet payment authorization. <br>\nMitigation: Before signing, verify the network, token contract, recipient address, amount, and validity window, and require explicit approval before any agent or wallet automation signs payment requests. <br>\nRisk: The service notarizes a hash only; users who lose or alter the original artifact may not be able to demonstrate what the hash represented. <br>\nMitigation: Keep the original artifact and record the exact hashing procedure alongside the returned PDR and job ID. <br>\nRisk: Issued PDRs are immutable and payments are non-refundable after issuance. <br>\nMitigation: Confirm the SHA-256 hash and payment details before submitting a paid notarization request. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization) <br>\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp) <br>\n- [AOTrust HTTP notarization endpoint](https://api.aotrust.link/notarize) <br>\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [AOTrust verification site](https://verify.aotrust.link) <br>\n- [PDR binary specification](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr-spec.md) <br>\n- [PDR parser](https://github.com/GitSerge-crypto/aotrust-skills/blob/main/pdr_parser.py) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration] <br>\n**Output Format:** [Markdown with HTTP, MCP, bash, Python, and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces guidance for obtaining and verifying PDR receipts; the service returns job IDs, base64-encoded PDRs, payment transaction hashes, and verification status.] <br>\n\n## Skill Version(s): <br>\n3.5.1 (source: server release metadata and SKILL.md metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.4.2: 3 files, 4402 bytes\n\nFiles: skill-card.md (2077b), SKILL.md (6108b), _meta.json (143b)\n\nFile v3.4.2:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.4.2\"\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Get a PDR in 3 Steps\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings,\nand other digital records.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## What You Need\n\n- An Ethereum wallet on **Base Mainnet** with:\n  - At least **$0.01 in USDC** (for the PDR fee)\n  - A small amount of **ETH** (for gas, typically less than $0.01)\n- Ability to make HTTP requests and sign EIP-3009 `transferWithAuthorization`\n\n## How It Works\n\n```\nYOUR AGENT → POST work_hash to /notarize\n           ← HTTP 402 with payment details (payTo, amount, network)\nYOUR AGENT → sign EIP-3009 with your Ethereum key\nYOUR AGENT → POST work_hash + x-payment header\n           ← HTTP 200 with PDR (239 bytes, base64)\n```\n\n---\n\n## Step-by-Step\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n```python\nimport hashlib\nwork_hash = hashlib.sha256(b\"your digital artifact content\").hexdigest()\n```\n\n### Step 2: Request Notarization (No Payment Yet)\n\nSend your work_hash. The server responds with payment instructions.\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n  \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  \"maxAmountRequired\": \"10000\",\n  \"network\": \"eip155:8453\",\n  \"maxTimeoutSeconds\": 300\n}\n```\n\n- `payTo` — where to send payment\n- `asset` — USDC contract on Base\n- `maxAmountRequired` — 10000 micro-USDC = $0.01\n- `network` — Base Mainnet (chain ID 8453)\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Then send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\"\n}\n```\n\nDone. `pdr_b64` is your 239-byte cryptographic proof.\n\n---\n\n## Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.  \nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.  \nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.  \nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.  \nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.  \nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\n\nOnly the SHA-256 hash of the artifact is included in the PDR.\n\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\n\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- Canonical SKILL.md: https://github.com/GitSerge-crypto/aotrust-skills\n\nFile v3.4.2:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.4.2\",\n  \"publishedAt\": 1781973469940\n}\n\nFile v3.4.2:skill-card.md\n\n## Description: <br>\nIssue a cryptographic proof (PDR) that a digital artifact existed at a specific time, with payment via x402 on Base and daily anchoring to NEAR blockchain. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to create publicly verifiable provenance receipts for hashes of digital artifacts such as documents, code, datasets, logs, AI outputs, and compliance records. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill involves x402-paid API calls, and payment headers, wallet keys, signing keys, and API keys can expose sensitive payment data if mishandled. <br>\nMitigation: Install only when paid notarization is intended; send payment values only to the intended HTTPS endpoint, avoid logging secrets or payment headers, and confirm the amount and recipient before paying. <br>\n\n\n## Reference(s): <br>\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [AOTrust PDR web verifier](https://verify.aotrust.link) <br>\n- [AOTrust notarization API](https://api.aotrust.link/notarize) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Code, API Calls, Configuration instructions] <br>\n**Output Format:** [Markdown with bash, Python, and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces instructions for hashing an artifact, submitting a notarization request, signing an x402 payment, and verifying the returned PDR.] <br>\n\n## Skill Version(s): <br>\n3.4.2 (source: server release evidence and skill metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.4.1: 3 files, 4567 bytes\n\nFiles: skill-card.md (2571b), SKILL.md (6108b), _meta.json (143b)\n\nFile v3.4.1:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.4.1\"\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Get a PDR in 3 Steps\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings,\nand other digital records.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## What You Need\n\n- An Ethereum wallet on **Base Mainnet** with:\n  - At least **$0.01 in USDC** (for the PDR fee)\n  - A small amount of **ETH** (for gas, typically less than $0.01)\n- Ability to make HTTP requests and sign EIP-3009 `transferWithAuthorization`\n\n## How It Works\n\n```\nYOUR AGENT → POST work_hash to /notarize\n           ← HTTP 402 with payment details (payTo, amount, network)\nYOUR AGENT → sign EIP-3009 with your Ethereum key\nYOUR AGENT → POST work_hash + x-payment header\n           ← HTTP 200 with PDR (239 bytes, base64)\n```\n\n---\n\n## Step-by-Step\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n```python\nimport hashlib\nwork_hash = hashlib.sha256(b\"your digital artifact content\").hexdigest()\n```\n\n### Step 2: Request Notarization (No Payment Yet)\n\nSend your work_hash. The server responds with payment instructions.\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n  \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  \"maxAmountRequired\": \"10000\",\n  \"network\": \"eip155:8453\",\n  \"maxTimeoutSeconds\": 300\n}\n```\n\n- `payTo` — where to send payment\n- `asset` — USDC contract on Base\n- `maxAmountRequired` — 10000 micro-USDC = $0.01\n- `network` — Base Mainnet (chain ID 8453)\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Then send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\"\n}\n```\n\nDone. `pdr_b64` is your 239-byte cryptographic proof.\n\n---\n\n## Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n## Example Uses\n\n**Personal Records:** Email correspondence, family letters, personal notes, photographs.  \nProves that a specific version of a file existed at a specific time.\n\n**AI Outputs:** Agent reports, LLM responses, generated code, research summaries.  \nCreates independent evidence of when an AI-generated artifact was produced.\n\n**Business Documents:** Contracts, proposals, specifications, financial reports.  \nProvides a timestamped provenance record for important documents.\n\n**Technical Artifacts:** Source code, configuration files, datasets, log files.  \nCreates a verifiable audit trail for technical work.\n\n**Compliance and Audit:** Regulatory evidence, internal approvals, process documentation.  \nProvides a cryptographically verifiable historical record.\n\n## Privacy\n\nAOTrust does not store or publish your artifact content.\n\nOnly the SHA-256 hash of the artifact is included in the PDR.\n\nAnyone can verify the PDR, but the original artifact remains private unless you choose to share it.\n\n## Optional: Proof of Authorship (Planned)\n\nBy default, AOTrust proves that a hash existed at a specific time.\n\nFuture versions may optionally allow clients to sign the artifact hash with their own cryptographic key before notarization.\n\nThis creates a stronger provenance chain:\nClient Key → Artifact Hash → AOTrust PDR → Blockchain Anchor\n\nUseful for: agent reputation, creator attribution, audit trails, dispute resolution.\n\nThe standard PDR workflow remains unchanged and does not require client signatures.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- Canonical SKILL.md: https://github.com/GitSerge-crypto/aotrust-skills\n\nFile v3.4.1:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.4.1\",\n  \"publishedAt\": 1781435838777\n}\n\nFile v3.4.1:skill-card.md\n\n## Description: <br>\nIssue a cryptographic proof that a digital artifact existed at a specific time using a paid AOTrust PDR notarization workflow anchored to NEAR and paid with USDC on Base. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, agents, and teams use this skill to hash digital artifacts, request AOTrust notarization, sign the required payment authorization, and verify the resulting PDR without uploading the artifact content. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow requires signing a USDC payment authorization for an external service. <br>\nMitigation: Verify the Base chain ID, USDC contract, recipient address, amount, timeout, and nonce before signing, and use a low-balance wallet. <br>\nRisk: PDR issuance is paid, immutable, and non-refundable after completion. <br>\nMitigation: Confirm the artifact hash and business need before requesting issuance; use verification for duplicate or already-notarized hashes. <br>\nRisk: A PDR proves timestamped existence of a hash, not artifact authorship or content validity. <br>\nMitigation: Retain the original artifact and verification details, and do not treat the PDR as a substitute for authorship, content, or legal review. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization) <br>\n- [AOTrust Verification Endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [AOTrust Verification App](https://verify.aotrust.link) <br>\n- [AOTrust Notarization API](https://api.aotrust.link/notarize) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with Python snippets, shell commands, JSON examples, and step-by-step guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces notarization and verification instructions; the external service returns a base64 PDR, job ID, and transaction hash.] <br>\n\n## Skill Version(s): <br>\n3.4.1 (source: server release metadata and SKILL.md metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v3.3.0: 3 files, 3668 bytes\n\nFiles: skill-card.md (2356b), SKILL.md (4257b), _meta.json (143b)\n\nFile v3.3.0:SKILL.md\n\n---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base via x402. Anchored daily to NEAR blockchain. Publicly verifiable.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.3\"\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Get a PDR in 3 Steps\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\na digital artifact existed at a specific point in time. Anchored daily to\nNEAR blockchain. $0.01 per proof. No account needed.\n\n## What You Need\n\n- An Ethereum wallet with at least $0.02 USDC on **Base Mainnet** (for fee + gas buffer)\n- Ability to make HTTP requests and sign EIP-3009 `transferWithAuthorization`\n\n## How It Works\n\n```\nYOUR AGENT → POST work_hash to /notarize\n           ← HTTP 402 with payment details (payTo, amount, network)\nYOUR AGENT → sign EIP-3009 with your Ethereum key\nYOUR AGENT → POST work_hash + x-payment header\n           ← HTTP 200 with PDR (239 bytes, base64)\n```\n\n---\n\n## Step-by-Step\n\n### Step 1: Compute the Work Hash\n\nHash your artifact with SHA-256. This is what gets notarized — not the artifact itself.\n\n```python\nimport hashlib\nwork_hash = hashlib.sha256(b\"your digital artifact content\").hexdigest()\n```\n\n### Step 2: Request Notarization (No Payment Yet)\n\nSend your work_hash. The server responds with payment instructions.\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 402):**\n```json\n{\n  \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n  \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  \"maxAmountRequired\": \"10000\",\n  \"network\": \"eip155:8453\",\n  \"maxTimeoutSeconds\": 300\n}\n```\n\n- `payTo` — where to send payment\n- `asset` — USDC contract on Base\n- `maxAmountRequired` — 10000 micro-USDC = $0.01\n- `network` — Base Mainnet (chain ID 8453)\n\n### Step 3: Pay and Get Your PDR\n\nSign an EIP-3009 `transferWithAuthorization` with your Ethereum key:\n\n- `from`: your wallet address\n- `to`: the `payTo` address from Step 2\n- `value`: `maxAmountRequired` from Step 2 (10000 = $0.01)\n- `validAfter`: current Unix timestamp\n- `validBefore`: current time + `maxTimeoutSeconds`\n- `nonce`: random 32-byte hex string\n\nEncode the signature as base64url JSON. Then send it with the `x-payment` header:\n\n```bash\ncurl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\"}'\n```\n\n**Response (HTTP 200):**\n```json\n{\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"pdr_b64\": \"AwEFA1kuagAAAABub3...\",\n  \"tx_hash\": \"0x3c7133009a74...\",\n  \"payment_anchor_type\": \"X402_BASE\"\n}\n```\n\nDone. `pdr_b64` is your 239-byte cryptographic proof.\n\n---\n\n## Verify Your PDR\n\nGo to `https://verify.aotrust.link` and enter the `job_id`.\n\nOr verify programmatically:\n```bash\ncurl https://api.aotrust.link/v1/pdr/verify/YOUR_PDR_B64\n```\n\nAnyone can verify — no account, no key, no authentication required.\n\n---\n\n## What a PDR Proves\n\n- ✅ Your artifact (identified by its SHA-256 hash) existed at a specific time\n- ✅ Payment was settled on Base Mainnet (tx_hash verifiable on-chain)\n- ✅ The notary (notary-node.near) signed the record\n- ✅ The record is anchored to NEAR blockchain via daily Merkle root\n\nA PDR does NOT reveal your artifact content — only its hash.\n\n---\n\n## Error Reference\n\n| Response | Meaning | Action |\n|----------|---------|--------|\n| HTTP 402 | Expected — payment required | Proceed to step 3 |\n| HTTP 400 | Invalid work_hash format | Must be 64-char lowercase hex |\n| HTTP 409 | Duplicate work_hash | Already notarized — use verify |\n| HTTP 429 | Rate limited | Wait 60 seconds, retry once |\n\n---\n\n## Notes\n\n- Price: **$0.01 USDC** flat per PDR. No tiers, no subscriptions.\n- PDRs are **immutable**. Once issued, they cannot be modified.\n- Payment is **non-refundable** after PDR issuance.\n- Daily Merkle root anchored to NEAR by `notary-node.near`.\n- Rate limit: 60 requests/minute per IP.\n- Canonical SKILL.md: https://github.com/GitSerge-crypto/aotrust-skills\n\nFile v3.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.3.0\",\n  \"publishedAt\": 1781426802826\n}\n\nFile v3.3.0:skill-card.md\n\n## Description: <br>\nIssues a cryptographic PDR proving that a digital artifact identified by a SHA-256 hash existed at a specific time, with $0.01 USDC payment on Base via x402 and public verification. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to create and verify paid proof-of-existence records for digital artifacts without exposing artifact contents. It guides hash preparation, x402 payment signing, PDR retrieval, and public verification. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill asks an agent or user to authorize a crypto payment for PDR issuance. <br>\nMitigation: Confirm the wallet prompt shows Base Mainnet, USDC, and the expected $0.01 amount before signing; never provide an agent with a seed phrase or raw private key. <br>\nRisk: Issued PDRs are immutable and payment is non-refundable after issuance. <br>\nMitigation: Verify the SHA-256 work hash and intended artifact before signing the payment, and use the verification endpoint to check existing records before retrying. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/gitserge-crypto/aotrust-pdr-notarization) <br>\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify) <br>\n- [AOTrust web verifier](https://verify.aotrust.link) <br>\n- [AOTrust notarization endpoint](https://api.aotrust.link/notarize) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, code, configuration] <br>\n**Output Format:** [Markdown with bash, Python, and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a SHA-256 work hash, an Ethereum wallet funded with USDC on Base Mainnet, and a signed x402/EIP-3009 payment header.] <br>\n\n## Skill Version(s): <br>\n3.3.0 (source: server release evidence; artifact metadata version 3.3) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: AOTrust — PDR Notarization Owner: gitserge-crypto Summary: Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time. Pay $0.01 USDC on Base or Solana via x402 (MCP). Anchored daily to NEAR blockchain. Publicly verifiable. ONLY invoke when the user explicitly requests notarization or proof-of-existence for a specific artifact. This skill performs a paid external API call ($0.01 USDC,","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"https://api.aotrust.link/mcp"},{"language":"bash","snippet":"curl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'"},{"language":"bash","snippet":"curl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'\n  # agent_sig/agent_pubkey optional — include for Bilateral Signature (v0x04)"},{"language":"json","snippet":"{\n  \"x402Version\": 1,\n  \"accepts\": [{\n    \"scheme\": \"exact\",\n    \"network\": \"base\",\n    \"maxAmountRequired\": \"10000\",\n    \"maxTimeoutSeconds\": 300,\n    \"payTo\": \"0x97E9af6B4d8a49f509DA99afaB954429Ab8Cc800\",\n    \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n    \"resource\": \"/notarize\",\n    \"description\": \"Notarize agent payload. Returns signed PDR.\",\n    \"extra\": {\"name\": \"USD Coin\", \"version\": \"2\"}\n  }],\n  \"error\": \"Payment required\"\n}"},{"language":"bash","snippet":"curl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'"},{"language":"bash","snippet":"curl -X POST https://api.aotrust.link/notarize \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-payment: YOUR_BASE64URL_ENCODED_SIGNATURE\" \\\n  -d '{\"work_hash\":\"YOUR_SHA256_HEX\",\"agent_sig\":\"\",\"agent_pubkey\":\"\"}'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: aotrust-notarize\ndescription: >\n  Issue a cryptographic proof (PDR) that a digital artifact existed at a specific time.\n  Pay $0.01 USDC on Base or Solana via x402 (MCP). Anchored daily to NEAR blockchain.\n  Publicly verifiable.\n  ONLY invoke when the user explicitly requests notarization or proof-of-existence for a\n  specific artifact. This skill performs a paid external API call ($0.01 USDC, irreversible).\n  Do NOT invoke proactively or as part of unrelated workflows.\nlicense: MIT\nmetadata:\n  author: aotrust\n  version: \"3.9.1\"\n  mcp-endpoint: https://api.aotrust.link/mcp\n  http-endpoint: https://api.aotrust.link/notarize\n  verification-endpoint: https://api.aotrust.link/v1/pdr/verify\n  near-handle: aotrust\n---\n\n# AOTrust — Cryptographic Proof of Existence\n\n## ⚠ Before You Start — Security & Consent\n\nThis skill interacts with an **external paid API**. Read this before invoking.\n\n| What leaves your machine | Where it goes | Reversible? |\n|--------------------------|---------------|-------------|\n| `work_hash` (SHA-256 of your artifact) | api.aotrust.link | No — hash is public in the PDR |\n| `agent_sig` + `agent_pubkey` (optional, bilateral) | api.aotrust.link | No — stored in notary ledger |\n| EIP-3009 payment signature | Base Mainnet (on-chain) | No — $0.01 USDC, irreversible |\n\n**Rules:**\n- **Confirm with the user** before notarizing. Show the artifact hash and ask: \"Notarize this for $0.01 USDC?\"\n- **Never use an unattended wallet.** Payment requires manual approval for every transaction.\n- **Do not let the agent manage private keys.** The user signs EIP-3009 manually or via a wallet that requires confirmation.\n- The artifact itself is never uploaded — only its hash. But the hash is public in the PDR and on NEAR blockchain.\n\n---\n\nA PDR (Provenance Data Record) is a 239-byte cryptographic receipt proving\nthat a digital artifact existed at a specific point in time.\n\nWorks with any digital artifact:\nemails, documents, contracts, source code, AI outputs,\nresearch notes, datasets, photos, logs, sensor readings.\n\nThe artifact itself is never uploaded — only its SHA-256 hash.\n\nAnchored daily to NEAR blockchain. $0.01 per proof. No account needed.\n\n## Two Ways to Connect\n\n| Interface | Best for | How |\n|-----------|----------|-----|\n| **MCP** (recommended for AI agents) | AI agents with MCP support | tools/list → notary_notarize_paid (x402 in-band micropayment) |\n| **HTTP API** (for developers) | Direct integration, scripts, CI/CD | POST /notarize → 402 → pay → 200 |\n\nBoth interfaces produce the same PDR. Pick one.\n\n---\n\n## Interface 1: MCP (for AI Agents)\n\n### Endpoint\n\n```\nhttps://api.aotrust.link/mcp\n```\n\n### Authentication\n\n**None required.** The MCP endpoint works without any token or OAuth flow —\nconnect and call `tools/list` directly. Free-tier tools (`notary_free`,\n`notary_quote`, `notary_verify`) are keyless; paid notarization uses in-band\nx402 micropayments (no API key either).\n\nOAuth 2.1 endpoints exist as optional discovery stubs"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7eeg45aqaabzp6g6s8je364x88f0ag\",\n  \"slug\": \"aotrust-pdr-notarization\",\n  \"version\": \"3.9.1\",\n  \"publishedAt\": 1791487292520\n}"},{"path":"skill-card.md","content":"## Description:\n\nCreates and verifies cryptographic proof-of-existence receipts for digital artifacts when a user explicitly requests notarization.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gitserge-crypto](https://clawhub.ai/user/gitserge-crypto)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople and developers use this skill to request a timestamped proof for a specific artifact hash and later verify the resulting receipt. Paid notarization requires explicit user consent and a wallet-approved payment.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The artifact hash is sent to AOTrust and may be publicly visible in the proof.\n\nMitigation: Only submit the hash when the user explicitly requests proof for that specific artifact; do not upload the artifact itself.\n\nRisk: Paid notarization incurs an irreversible $0.01 USDC charge.\n\nMitigation: Before each payment, confirm the exact hash, destination, chain and charge with the user; require manual wallet approval and never authorize unattended signing.\n\n## Reference(s):\n\n- [AOTrust MCP endpoint](https://api.aotrust.link/mcp)\n- [AOTrust HTTP notarization endpoint](https://api.aotrust.link/notarize)\n- [AOTrust PDR verification endpoint](https://api.aotrust.link/v1/pdr/verify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON]\n\n**Output Format:** [Text summary with a proof receipt and verification result]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Receipt includes a public artifact hash; paid proofs cost $0.01 USDC.]\n\n## Skill Version(s):\n\n3.9.1 (source: release evidence and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1557,"uniquenessScore":42,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T08:02:52.955Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:50:22.825Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}