PayToll is a self-describing API toolkit that gives agents on-demand access to DeFi, crypto data, AI models, trading, and social APIs — no API keys, no signup, just pay per call. Every endpoint accepts a JSON POST and settles via x402 v2 USDC micropayments on Base. Call GET /v1/meta?detailed=true to automatically discover all endpoints, input schemas, and pricing. Query Aave V3 best supply APY and lowest borrow APR across chains. Get market data, health factors, and user positions. Build supply, borrow, repay, and withdraw transactions. Get real-time crypto prices. Resolve ENS names to Ethereum addresses. Validate wallet addresses. Proxy requests to OpenAI GPT, Anthropic Claude, and Google Gemini. Get DEX swap quotes and build cross-chain swap transactions. Fetch on-chain token data and liquidity pools. Search Twitter/X, look up users, fetch tweets, and post tweets. Pricing: $0.0005–$0.08 per call in USDC on Base. Integration: HTTP POST with JSON body, or install paytoll-mcp from npm for MCP-compatible agents (Claude, Cursor).
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
- 25824613
- chain_id
- 1
- token_id
- 25069
checked at 2026-08-24T11:35:32.449134Z
Reachable?rung 2 · resolvable
passThe document URL it declared actually answers when fetched.
passed
- bytes
- 2534
- data_uri_variant
- base64
- inline
- true
- scheme
- data
- uri
- data:application/json;base64,ewogICJ0eXBlIjogImh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtODAwNCNyZWdpc3RyYXRpb24tdjEiLAogICJuYW1lIjogIlBheXRvbGwiLAogICJkZXNjcmlwdGlvbiI6ICIgUGF5VG9sbCBpcyBhIHNlbGYtZGVzY3JpYmluZyBBUEkgdG9vbGtpdCB0aGF0IGdpdmVzIGFnZW50cyBvbi1kZW1hbmQgYWNjZXNzIHRvIERlRmksIGNyeXB0byBkYXRhLCBBSSBtb2RlbHMsIHRyYWRpbmcsIGFuZCBzb2NpYWwgQVBJcyDigJQgbm8gQVBJIGtleXMsIG5vIHNpZ251cCwganVzdCBwYXkgcGVyIGNhbGwuXG5cbkV2ZXJ5IGVuZHBvaW50IGFjY2VwdHMgYSBKU09OIFBPU1QgYW5kIHNldHRsZXMgdmlhIHg0MDIgdjIgVVNEQyBtaWNyb3BheW1lbnRzIG9uIEJhc2UuIENhbGwgR0VUIC92MS9tZXRhP2RldGFpbGVkPXRydWUgdG8gYXV0b21hdGljYWxseSBkaXNjb3ZlciBhbGwgZW5kcG9pbnRzLCBpbnB1dCBzY2hlbWFzLCBhbmQgcHJpY2luZy5cblxuUXVlcnkgQWF2ZSBWMyBiZXN0IHN1cHBseSBBUFkgYW5kIGxvd2VzdCBib3Jyb3cgQVBSIGFjcm9zcyBjaGFpbnMuIEdldCBtYXJrZXQgZGF0YSwgaGVhbHRoIGZhY3RvcnMsIGFuZCB1c2VyIHBvc2l0aW9ucy4gQnVpbGQgc3VwcGx5LCBib3Jyb3csIHJlcGF5LCBhbmQgd2l0aGRyYXcgdHJhbnNhY3Rpb25zLiBHZXQgcmVhbC10aW1lIGNyeXB0byBwcmljZXMuIFJlc29sdmUgRU5TIG5hbWVzIHRvIEV0aGVyZXVtIGFkZHJlc3Nlcy4gVmFsaWRhdGUgd2FsbGV0IGFkZHJlc3Nlcy4gUHJveHkgcmVxdWVzdHMgdG8gT3BlbkFJIEdQVCwgQW50aHJvcGljIENsYXVkZSwgYW5kIEdvb2dsZSBHZW1pbmkuIEdldFxuXG5ERVggc3dhcCBxdW90ZXMgYW5kIGJ1aWxkIGNyb3NzLWNoYWluIHN3YXAgdHJhbnNhY3Rpb25zLiBGZXRjaCBvbi1jaGFpbiB0b2tlbiBkYXRhIGFuZCBsaXF1aWRpdHkgcG9vbHMuIFNlYXJjaCBUd2l0dGVyL1gsIGxvb2sgdXAgdXNlcnMsIGZldGNoIHR3ZWV0cywgYW5kIHBvc3QgdHdlZXRzLlxuXG4gIFByaWNpbmc6ICQwLjAwMDXigJMkMC4wOCBwZXIgY2FsbCBpbiBVU0RDIG9uIEJhc2UuXG5cbiAgSW50ZWdyYXRpb246IEhUVFAgUE9TVCB3aXRoIEpTT04gYm9keSwgb3IgaW5zdGFsbCBwYXl0b2xsLW1jcCBmcm9tIG5wbSBmb3IgTUNQLWNvbXBhdGlibGUgYWdlbnRzIChDbGF1ZGUsIEN1cnNvcikuIiwKICAiaW1hZ2UiOiAiaHR0cHM6Ly9ibG9iLjgwMDRzY2FuLmFwcC8wNWY1NzdiMzJjMDZhYTNiNjM3YWY2MTUwZDY3ZmMxY2QxNzA1NDRiNWMzM2YyMjI1MmM2MGI1ZGI3ZWMzZTFjLmpwZyIsCiAgInNlcnZpY2VzIjogWwogICAgewogICAgICAibmFtZSI6ICJNQ1AiLAogICAgICAiZW5kcG9pbnQiOiAiaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcGF5dG9sbC1tY3AiLAogICAgICAidmVyc2lvbiI6ICIyMDI1LTA2LTE4IiwKICAgICAgIm1jcFRvb2xzIjogWwogICAgICAgICJhYXZlLWJlc3QteWllbGQiLAogICAgICAgICJhYXZlLWJlc3QtYm9ycm93IiwKICAgICAgICAiYWF2ZS1tYXJrZXRzIiwKICAgICAgICAiYWF2ZS1oZWFsdGgtZmFjdG9yIiwKICAgICAgICAiYWF2ZS11c2VyLXBvc2l0aW9ucyIsCiAgICAgICAgImFhdmUtc3VwcGx5IiwKICAgICAgICAiYWF2ZS1ib3Jyb3ciLAogICAgICAgICJhYXZlLXJlcGF5IiwKICAgICAgICAiYWF2ZS13aXRoZHJhdyIsCiAgICAgICAgImNyeXB0by1wcmljZSIsCiAgICAgICAgImVucy1sb29rdXAiLAogICAgICAgICJ3YWxsZXQtdmFsaWRhdG9yIiwKICAgICAgICAibGxtLW9wZW5haSIsCiAgICAgICAgImxsbS1hbnRocm9waWMiLAogICAgICAgICJsbG0tZ29vZ2xlIiwKICAgICAgICAic3dhcC1xdW90ZSIsCiAgICAgICAgInN3YXAtYnVpbGQiLAogICAgICAgICJ0b2tlbi1iYWxhbmNlIiwKICAgICAgICAib25jaGFpbi10b2tlbi1wcmljZSIsCiAgICAgICAgIm9uY2hhaW4tdG9rZW4tZGF0YSIsCiAgICAgICAgInNlYXJjaC1wb29scyIsCiAgICAgICAgInRyZW5kaW5nLXBvb2xzIiwKICAgICAgICAidHdpdHRlci1zZWFyY2giLAogICAgICAgICJ0d2l0dGVyLXVzZXItbG9va3VwIiwKICAgICAgICAidHdpdHRlci10d2VldC1sb29rdXAiLAogICAgICAgICJ0d2l0dGVyLXVzZXItdHdlZXRzIiwKICAgICAgICAidHdpdHRlci1wb3N0IgogICAgICBdCiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJTZWxmLWRlc2NyaWJpbmcgUkVTVCBBUEkuIFJldHVybnMgYWxsIGVuZHBvaW50cywgSlNPTiBpbnB1dCBzY2hlbWFzLCBhbmQgcGVyLWNhbGwgcHJpY2luZy4gQWxsIHJvdXRlcyBhY2NlcHQgUE9TVCB3aXRoIEpTT04gYm9keSBhbmQgc2V0dGxlIHZpYSB4NDAyIHYyIFVTREMgb24gQmFzZS4iLAogICAgICAiZW5kcG9pbnQiOiAiaHR0cHM6Ly9hcGkucGF5dG9sbC5kZXYvdjEvbWV0YT9kZXRhaWxlZD10cnVlIgogICAgfQogIF0sCiAgInJlZ2lzdHJhdGlvbnMiOiBbXSwKICAic3VwcG9ydGVkVHJ1c3RzIjogWwogICAgInJlcHV0YXRpb24iCiAgXSwKICAiYWN0aXZlIjogdHJ1ZSwKICAieDQwMnN1cHBvcnQiOiB0cnVlCn0=
checked at 2026-08-24T11:35:32.449134Z
Readable?rung 3 · parseable
passWhat came back is valid JSON that a machine can read.
passed
- body_bytes
- 2534
- body_sha256
- 91b1b1195902890900a43d7eaeda372a166ab1cb102bdaaddbd7ece473efcdb1
- content_type
- —
checked at 2026-08-24T11:35:32.449134Z
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
- x402Support, supportedTrust
- must_violations
- (empty)
- registrations_checked
- 0
- services_field_source
- services
- services_status
- present
- should_gaps
- services[].version, registrations
- spec_commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
checked at 2026-08-24T11:35:32.449134Z
Claims its identity?rung 5 · bound
unclaimedThe document names the on-chain agent it belongs to, rather than leaving it unsaid.
unclaimed — the document made no claim to check
- declared_agent_id
- —
- declared_chain
- —
- declared_registry
- —
- match
- —
- reason
- unclaimed
- registrations_seen
- 0
checked at 2026-08-24T11:35:32.449134Z
Answers?rung 6 · live
failA declared endpoint responds to a probe. Not implemented yet, so nobody passes or fails it.
did not pass
- endpoints
- {"declared":"https://www.npmjs.com/package/paytoll-mcp","elapsed_ms":245,"final_url":"https://www.npmjs.com/package/paytoll-mcp","http_status":403,"index":0,"kind":"https","name":"MCP","outcome":"not_live","probed":true,"probed_url":"https://www.npmjs.com/package/paytoll-mcp"}, {"declared":"https://api.paytoll.dev/v1/meta?detailed=true","elapsed_ms":281,"final_url":"https://api.paytoll.dev/v1/meta?detailed=true","http_status":404,"index":1,"kind":"https","name":"Self-describing REST API. Returns all endpoints, JSON input schemas, and per-call pricing. All routes accept POST with JSON body and settle via x402 v2 USDC on Base.","outcome":"not_live","probed":true,"probed_url":"https://api.paytoll.dev/v1/meta?detailed=true"}
- endpoints_answered_not_live
- 2
- endpoints_declared
- 2
- endpoints_live
- 0
- endpoints_our_error
- 0
- endpoints_payment_gated
- 0
- endpoints_probeable
- 2
- endpoints_probed
- 2
- endpoints_refused
- 0
checked at 2026-08-24T13:24:55.917314Z
Has feedback?rung 7 · attested
failAt least one on-chain feedback entry names this agent.
did not pass
- distinct_authors
- 0
- feedback_count
- 0
- reason
- no_feedback
checked at 2026-08-24T11:35:32.449134Z
On-chain snapshot
mainnet- token id
- 25069
- owner
- 0x2646c377ea6d171e230fa64d0377466746969dfb
- block
- 25,824,613
- observed
- 2026-08-24T11:35:32.450397Z
What the fetch saw
data- scheme
- data
- request url
- —
- final url
- —
- http status
- —
- content type
- —
- size
- 2,534 bytes
- sha256
- 91b1b1195902890900a43d7eaeda372a166ab1cb102bdaaddbd7ece473efcdb1
- elapsed
- 0 ms
This run
reproducible- run
- 49418208-967d-41de-8762-2b02c8654622
- chain
- mainnet
- pinned block
- 25,824,613
- agents
- 50,419
- started
- 2026-08-24T11:03:55.159273Z
- finished
- 2026-08-24T12:45:59.131330Z
- checker
- 0.7.0 · 9d5393c75e1c70208ad73f51dc4685b4e5f5c37d
- spec commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
cargo run -p sweeper -- mainnet # at block 25824613