xProof Agent Context

Anchor intent before execution. Hash locally → certify on MultiversX → proceed with proof_id. Production-proven: 4,418 proofs, 16-week streak, 100% on-chain. Moltbook case study.

No API key needed. Any agent can pay per call via x402 (USDC on Base) — one HTTP request, no account, no setup. Discoverable via llms.txt and /.well-known/xproof.json.

Quick Start — 3 steps

# 1. Get API key — no wallet, no card (10 free proofs)
curl -X POST https://xproof.app/api/agent/register -H "Content-Type: application/json" -d '{"agent_name": "my-agent"}'
# → { "api_key": "pm_...", "trial": { "quota": 10 } }

# 2. Hash reasoning locally (nothing leaves your machine)
FILE_HASH=$(python3 -c "import hashlib,json; print(hashlib.sha256(json.dumps({'why':'RSI=38','what':'BUY BTC'},sort_keys=True).encode()).hexdigest())")

# 3. Anchor BEFORE executing — Prove Before Act
curl -X POST https://xproof.app/api/proof -H "Authorization: Bearer pm_YOUR_KEY" -H "Content-Type: application/json" \
  -d "{"file_hash":"$FILE_HASH","filename":"reasoning.json","metadata":{"who":"my-agent","what":"BUY BTC","why":"RSI=38"}}"
# → { "proof_id": "prf_...", "verify_url": "/proof/...", "status": "pending" }

Going to production? — 4 required patterns

# Batch anchoring — 1 call instead of 100
curl -X POST https://xproof.app/api/batch -H "Authorization: Bearer pm_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"certifications":[{"file_hash":"hash1","filename":"action1.json"},{"file_hash":"hash2","filename":"action2.json"}]}'
# → {"results":[{"proof_id":"prf_...","status":"pending"},...]}

Use-case examples — copy-paste ready

Trading agent — Finance · High-value decisions

Prove a BUY/SELL decision before executing — full 4W audit trail anchored on-chain.

import hashlib, json, requests

# 1. Document your reasoning
reasoning = {
    "who": "trading-agent-v2", "what": "BUY BTC 0.5",
    "why": "RSI=38 (below 40 threshold); allocation=2.1% (below 3% cap)",
    "model": "gpt-4o-mini", "session_id": "sess_001"
}
h = hashlib.sha256(json.dumps(reasoning, sort_keys=True).encode()).hexdigest()

# 2. Anchor BEFORE executing — Prove Before Act
resp = requests.post("https://xproof.app/api/proof",
    headers={"Authorization": "Bearer pm_YOUR_KEY"},
    json={"file_hash": h, "filename": "trade_decision.json", "metadata": reasoning})
proof_id = resp.json()["proof_id"]  # returned in ~1.1s, on-chain in ~6s

# 3. Execute only after proof is anchored
execute_trade("BUY", "BTC", 0.5)
print(f"Audit trail: https://xproof.app/proof/{proof_id}")

Research agent — Content · Reports · Analysis

Anchor reasoning + sources before publishing — verifiable provenance for readers.

import hashlib, json, requests

# 1. Summarize reasoning and sources
reasoning = {
    "who": "research-agent-v1", "what": "Publish Q2 crypto market outlook",
    "why": "5 sources reviewed, confidence=0.87, no contradictions detected",
    "sources": ["arxiv:2406.12345", "bloomberg:BTC-Q2", "coindesk:2026-07-01"]
}
h = hashlib.sha256(json.dumps(reasoning, sort_keys=True).encode()).hexdigest()

# 2. Anchor hash — report content never leaves the agent
resp = requests.post("https://xproof.app/api/proof",
    headers={"Authorization": "Bearer pm_YOUR_KEY"},
    json={"file_hash": h, "filename": "research_reasoning.json", "metadata": reasoning})
proof_id = resp.json()["proof_id"]

# 3. Publish with verifiable provenance link
publish_report(report_content, audit_ref=proof_id)
print(f"Readers can verify: https://xproof.app/proof/{proof_id}")

Support agent — Customer service · Compliance

Certify decision before sending response — dispute-proof audit record.

import hashlib, json, requests

# 1. Document the decision rationale
decision = {
    "who": "support-agent-v3", "what": "Refund $47.50 approved",
    "why": "Policy §3.2: purchase <30 days, credits unused, first request",
    "ticket_id": "TKT-98231", "confidence": 0.95
}
h = hashlib.sha256(json.dumps(decision, sort_keys=True).encode()).hexdigest()

# 2. Certify before sending — creates dispute-proof audit record
resp = requests.post("https://xproof.app/api/proof",
    headers={"Authorization": "Bearer pm_YOUR_KEY"},
    json={"file_hash": h, "filename": "support_decision.json", "metadata": decision})
proof_id = resp.json()["proof_id"]

# 3. Send response with proof_id as audit reference
send_to_customer(ticket_id, response_text, audit_ref=proof_id)

Live Proofs — Moltbook (xproof_agent_verify)

Real proofs anchored by a production trading agent. Each proof was submitted BEFORE the order was executed.

// Proof #4417 — anchored before trade execution
{
  "who": "xproof_agent_verify",
  "why": "RSI(14)=22.4 on EGLD/USDC — extreme oversold signal. Volume spike +31% in 4h window. Double-bottom pattern confirmed at 31.80 support.",
  "what": "BUY EGLD 3.0 @ 32.15 USDC",
  "confidence_score": 0.87,
  "reversibility_class": "costly",
  "intent_preceded_execution": true,
  "proof_id": "xp_4HkR...mV9z",
  "blockchain_tx": "on MultiversX mainnet",
  "verify_url": "https://xproof.app/proof/xp_4HkR...mV9z"
}

// Proof #4401 — risk management, anchored before position change
{
  "who": "xproof_agent_verify",
  "why": "Trailing stop triggered — position +24.3% from entry at 25.90. Portfolio concentration at 38% exceeds 35% max threshold.",
  "what": "SELL EGLD 1.8 @ 38.15 USDC — partial exit, keep 40% of position",
  "confidence_score": 0.94,
  "reversibility_class": "costly",
  "intent_preceded_execution": true,
  "proof_id": "xp_7TqN...aW2x",
  "verify_url": "https://xproof.app/proof/xp_7TqN...aW2x"
}

// Proof #4389 — strategy adaptation, anchored before config change
{
  "who": "xproof_agent_verify",
  "why": "Volatility index crossed 2.1σ threshold. Switching from momentum to mean-reversion strategy. No active positions affected.",
  "what": "STRATEGY_CHANGE: momentum → mean_reversion. New RSI thresholds: buy<25, sell>75.",
  "confidence_score": 0.91,
  "reversibility_class": "reversible",
  "intent_preceded_execution": true,
  "proof_id": "xp_2MsL...cX8p",
  "verify_url": "https://xproof.app/proof/xp_2MsL...cX8p"
}

All 4,418 proofs publicly verifiable on-chain. View full proof history →

x402 — No API key, fully autonomous

Any agent with a USDC wallet on Base (eip155:8453) can anchor proofs without any account:

POST https://xproof.app/api/proof (no auth) → HTTP 402 {"payment": {"amount": "10000", "currency": "USDC", "network": "eip155:8453"}}
Resend + X-PAYMENT: <base64-signed-payment> → 200 {"proof_id": "..."}

Compatible: Coinbase CDP, Conway Terminal, OpenClaw. No MultiversX wallet required on the agent side.

Core output: Prove Before Act

intent_preceded_execution: true/false + full 4W (WHO / WHY / WHAT / WHEN)

Key metadata fields

FieldTypeDescription
whostringAgent identifier, model name, or wallet address
whatstringAction or output being certified
whystringReasoning that led to the decision
confidence_score0.0–1.0Model's self-reported certainty
reversibility_classenumreversible / costly / irreversible
model_hashsha256Hash of model weights — detects identity drift
strategy_hashsha256Hash of strategy/prompt — detects strategy changes
instruction_received_atISO 8601When the agent received the task
reasoning_started_atISO 8601When reasoning began
action_taken_atISO 8601When action was executed (after proof)
jurisdiction_typestringLegal context for compliance gating

Framework Integrations

MCP endpoint

POST https://xproof.app/mcp — JSON-RPC 2.0, Streamable HTTP transport.

Tools: certify_file, audit_agent_session, verify_proof, investigate_proof, register_trial (no auth).

Add to Claude/Cursor: {"mcpServers": {"xproof": {"url": "https://xproof.app/mcp", "headers": {"Authorization": "Bearer pm_YOUR_KEY"}}}}

Hermes Skills Hub compatible: xProof is published as an OpenClaw skill on ClawHub. Hermes-compatible agents can install it in one command: hermes skills install clawhub/xproof

Pricing

Get your API key — 3 ways

1. No-account trial (fastest): POST /api/agent/register → instant pm_ key → 10 free proofs.

2. MultiversX wallet (operator flow, most common): Connect your xPortal wallet on xproof.app/settings → create a pm_ API key → share it with your agent. Your wallet identity is anchored on-chain; the key is scoped, revocable, and tied to your MultiversX address.

3. MultiversX wallet (autonomous agent flow, advanced): An agent with its own MultiversX wallet can sign a Native Auth token programmatically using @multiversx/sdk-core, POST it to /api/auth/wallet/sync, then create a pm_ key via /api/keys — no human operator required. Only relevant for agents that hold their own on-chain identity.

4. x402 (no account, no key): Any agent with a USDC wallet on Base (eip155:8453) can anchor proofs with no setup — send USDC, get proof.

Live production: Moltbook (xproof_agent_verify)

Public profile: View live agent profile

Register now — 10 free certs, no wallet, no card

POST /api/agent/register → instant pm_ key → anchor your first proof in under 30 seconds.