HashProof issues verifiable credentials (diplomas, course completions, attendance, memberships) with one API call — no account, no API key, no human onboarding. $0.10 USDC per credential, paid via x402 on Base (eip155:8453) or Celo (eip155:42220). Every credential is registered on-chain in the CredentialRegistry contract on Celo (0x7a1B759A602Aba72a70f99Dffd0a386d7504ce9B), pinned to IPFS, and delivered as a PDF with a QR code anyone can scan to verify for free against three independent sources: database, IPFS and blockchain. Agent flow: GET /templates/:ref/requirements (free) to discover required fields, POST /templates/:ref/preview (free) to check the layout, POST /issueCredential ($0.10 via x402) to issue, then share https://hashproof.dev/verify/:id. Verification is always free and public. Also available as an MCP server (npx hashproof-mcp, in the official MCP registry) and as an agent skill. Full guide: https://hashproof.dev/skill.md
The seven checks, with their evidence
7 recordedRegistered?rung 1 · registered
passThe agent exists in the on-chain registry, with an owner and a document URL.
passed
- block_number
- 78133263
- chain_id
- 42220
- token_id
- 1867
checked at 2026-09-22T00:26:26.480223Z
Reachable?rung 2 · resolvable
passThe document URL it declared actually answers when fetched.
passed
- elapsed_ms
- 483403
- gateway_attempts
{"error":null,"gateway":"https://ipfs.io/ipfs/","http_status":429}, {"error":"ssrf_blocked: dns resolution failed: faile… (337 chars — expand)
{"error":null,"gateway":"https://ipfs.io/ipfs/","http_status":429}, {"error":"ssrf_blocked: dns resolution failed: failed to lookup address information: Temporary failure in name resolution","gateway":"https://cloudflare-ipfs.com/ipfs/","http_status":null}, {"error":null,"gateway":"https://gateway.pinata.cloud/ipfs/","http_status":200}- http_status
- 200
- scheme
- ipfs
- via_gateway
- https://gateway.pinata.cloud/ipfs/
checked at 2026-09-22T00:26:26.480223Z
Readable?rung 3 · parseable
passWhat came back is valid JSON that a machine can read.
passed
- body_bytes
- 2025
- body_sha256
- 4e7179447195ffc3f5b597ac063bf56e30722bae8d258d81cf66361fc24f29e1
- content_type
- application/json
checked at 2026-09-22T00:26:26.480223Z
Follows the spec?rung 4 · conformant
passThe document meets what ERC-8004 requires of it.
passed
- both_fields_present
- false
- legacy_endpoints_field
- false
- may_gaps
- (empty)
- must_violations
- (empty)
- registrations_checked
- 1
- services_field_source
- services
- services_status
- present
- should_gaps
- services[].version
- spec_commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
checked at 2026-09-22T00:26:26.480223Z
Claims its identity?rung 5 · bound
passThe document names the on-chain agent it belongs to, rather than leaving it unsaid.
passed
- declared_agent_id
- 1867
- declared_chain
- 42220
- declared_registry
- eip155:42220:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
- match
- true
- registrations_seen
- 1
checked at 2026-09-22T00:26:26.480223Z
Answers?rung 6 · live
passA declared endpoint responds to a probe. Not implemented yet, so nobody passes or fails it.
passed
- endpoints
{"declared":"https://api.hashproof.dev","elapsed_ms":828,"final_url":"https://api.hashproof.dev/","http_status":200,"ind… (1,014 chars — expand)
{"declared":"https://api.hashproof.dev","elapsed_ms":828,"final_url":"https://api.hashproof.dev/","http_status":200,"index":0,"kind":"https","name":"web","outcome":"live","probed":true,"probed_url":"https://api.hashproof.dev"}, {"declared":"https://api.hashproof.dev/issueCredential","elapsed_ms":1346,"final_url":"https://api.hashproof.dev/issueCredential","http_status":402,"index":1,"kind":"https","name":"web","outcome":"live","payment_gated":true,"probed":true,"probed_url":"https://api.hashproof.dev/issueCredential"}, {"declared":"https://api.hashproof.dev/mcp","elapsed_ms":1161,"final_url":"https://api.hashproof.dev/mcp","http_status":405,"index":2,"kind":"https","name":"MCP","outcome":"not_live","probed":true,"probed_url":"https://api.hashproof.dev/mcp"}, {"declared":"https://github.com/agntcy/oasf/","elapsed_ms":1747,"final_url":"https://github.com/agntcy/oasf/","http_status":200,"index":3,"kind":"https","name":"OASF","outcome":"live","probed":true,"probed_url":"https://github.com/agntcy/oasf/"}- endpoints_answered_not_live
- 1
- endpoints_declared
- 4
- endpoints_live
- 3
- endpoints_our_error
- 0
- endpoints_payment_gated
- 1
- endpoints_probeable
- 4
- endpoints_probed
- 4
- endpoints_refused
- 0
checked at 2026-09-22T02:09:45.320852Z
Has feedback?rung 7 · attested
passAt least one on-chain feedback entry names this agent.
passed
- distinct_authors
- 4
- feedback_count
- 4
checked at 2026-09-22T00:26:26.480223Z
Check it again, now
outside the censusOn-chain snapshot
celo- token id
- 1867
- owner
- 0x0a25c91209a158d0a4922837cdd590ace0d13f0d
- block
- 78,133,263
- observed
- 2026-09-22T00:26:26.484500Z
What the fetch saw
ipfs- scheme
- ipfs
- http status
- 200
- content type
- application/json
- size
- 2,025 bytes
- sha256
- 4e7179447195ffc3f5b597ac063bf56e30722bae8d258d81cf66361fc24f29e1
- elapsed
- 483,403 ms
This run
reproducible- run
- 9099ff7a-d3d5-4719-9ed6-6d2a6a73909d
- chain
- celo
- pinned block
- 78,133,263
- agents
- 9,860
- started
- 2026-09-21T23:40:21.983586Z
- finished
- 2026-09-22T02:08:28.496509Z
- checker
- 0.7.0 · f60139c8802140544532ad9241c5d7a943939769
- spec commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
cargo run -p sweeper -- celo # at block 78133263