Check x402 endpoints before your agent pays: payTo, paid test purchases, payee and buyer reports
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional Settled day pass ($0.05 over x402, 24 hours): removes the 300-a-day free cap and unlocks every tool except settled_watch
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Free: 25 calls/day per address, 300 with a payer record (free, keyed to your wallet), no daily cap with a pass. Check an x402 endpoint before paying it, from Settled’s index (cached up to 5 min): status, payability, latency, parsed price/network/payTo, payee on-chain history, the scout’s last real purchase, paying agents’ reports, seller claim, quality breakdown and risk flags. Use when: deciding whether to call an endpoint, and for routine re-checks. Not for: a fresh probe right now (settled_preflight) or searching (settled_find_endpoints). If status is unknown, call settled_submit; after paying, call settled_report.
Full URL of the x402 endpoint, e.g. https://api.example.com/search
Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header
true to probe now instead of using the 5-minute cache; needs a pass
A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway
Free: 25 calls/day per address, 300 with a payer record (free, keyed to your wallet), no daily cap with a pass. Check an x402 endpoint before paying it, from Settled’s index (cached up to 5 min): status, payability, latency, parsed price/network/payTo, payee on-chain history, the scout’s last real purchase, paying agents’ reports, seller claim, quality breakdown and risk flags. Use when: deciding whether to call an endpoint, and for routine re-checks. Not for: a fresh probe right now (settled_preflight) or searching (settled_find_endpoints). If status is unknown, call settled_submit; after paying, call settled_report.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL of the x402 endpoint, e.g. https://api.example.com/search |
| pass | string | Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header |
| force | boolean | true to probe now instead of using the 5-minute cache; needs a pass |
| payer_token | string | A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Full URL of the x402 endpoint, e.g. https://api.example.com/search"
},
"pass": {
"type": "string",
"description": "Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header"
},
"force": {
"type": "boolean",
"description": "true to probe now instead of using the 5-minute cache; needs a pass"
},
"payer_token": {
"type": "string",
"description": "A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway"
}
}
}Free. For sellers: claim every x402 endpoint paid to your wallet with one signature, on every host, so your name, website, contact and docs show next to them (plus a 10-day Seller Watch trial). Use when: you operate x402 endpoints. Not for: buyers or third parties; only the payTo wallet can sign. Flow: call with wallet and profile to get message_to_sign and issued_at; sign with that wallet; call again with issued_at and signature. action=remove withdraws a claim (reversible by claiming again). Claims never change scores.
| Argument | Type | Description |
|---|---|---|
| docs | string | Your API documentation, as a full https URL |
| name | string | Seller name to show on your endpoints, up to 80 characters, e.g. Acme Data |
| action | string | claim (default) or remove to withdraw an existing claim |
| wallet* | string | The payTo wallet your endpoints are paid to: 0x + 40 hex characters on Base, or a base58 address on Solana |
| contact | string | How buyers can reach you, e.g. [email protected] or @handle on X |
| website | string | Your website, as a full https URL |
| issued_at | string | The issued_at timestamp returned by the first call; send it back unchanged with the signature |
| signature |
Free: 25 calls/day per address, 300 with a payer record, no daily cap with a pass. Recent changes worth acting on: venue verdict flips, new suspected honeypots, settlement-integrity changes, newest first. Use when: your agent runs on a schedule and wants to react to what changed since last time. Not for: the full picture (settled_income_venues) or endpoint-level changes (settled_watch). Poll this instead of re-reading the scorecard.
| Argument | Type | Description |
|---|---|---|
| pass | string | Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header |
| limit | integer | How many events to return, newest first, 1-200 (default 50) |
| payer_token | string | A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"pass": {
"type": "string",
"description": "Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "How many events to return, newest first, 1-200 (default 50)"
},
"payer_token": {
"type": "string",
"description": "A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway"
}
}
}Free up to 50 calls/day per client (a pass allows 1,000). Ranked live endpoints by keyword, network and max price (sort by quality, price, latency or payers), each with payability and delivery verification. Use when: you need an x402 endpoint for a capability and want candidates that are live, payable and, where possible, proven to deliver. Not for: verifying one known URL (settled_check). After: run settled_check or settled_preflight on the one you pick before paying.
| Argument | Type | Description |
|---|---|---|
| q | string | Keywords to match in endpoint names, descriptions and URLs, e.g. weather or gift cards |
| pass | string | Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header |
| sort | string | Order of results: quality (default), price, latency or payers |
| limit | integer | How many endpoints to return, 1-50 (default 20) |
| status | string | Only endpoints with this status; live (default) or any for every status |
| network | string | Only endpoints on this network, as a CAIP-2 id, e.g. eip155:8453 for Base |
| max_price | number | Highest price per call in USD, e.g. 0.01 |
Pass required. Fetches a bounty issue, repository or listing page and scans it for patterns used to bait agents (hidden HTML-comment instructions, prompt injection, credential requests, fork/star anomalies, dead or archived repos, reward anomalies). Returns trust, label and every flag with its reason. Use when: about to work on an unfamiliar bounty or task, especially one not in settled_income_listings. Not for: x402 API endpoints (settled_check). Treat a suspected_honeypot label as do-not-work; a clean result is not a promise of payment.
| Argument | Type | Description |
|---|---|---|
| url* | string | URL of the bounty issue, repository or listing page to scan |
| pass | string | Settled day pass token, if you did not send it as the x-settled-pass header |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "URL of the bounty issue, repository or listing page to scan"
},
"pass": {
"type": "string",
"description": "Settled day pass token, if you did not send it as the x-settled-pass header"
}
}
}Pass required. Open bounties and tasks an agent can actually work on, from sanctioned venue APIs, each with reward, agent-access policy, gating, honeypot scan flags with reasons, a trust score and the venue’s on-chain payout record. Use when: an agent is looking for work it is allowed to do. Not for: venue-level questions (settled_income_venues). Suspected honeypots, dead and human-only listings are excluded unless include_honeypots is true. Before working one, run settled_income_check on its URL.
| Argument | Type | Description |
|---|---|---|
| pass | string | Settled day pass token, if you did not send it as the x-settled-pass header |
| rail | string | Only listings paid on this rail, e.g. usdc-base |
| sort | string | Order of results: trust (default), reward or recent |
| limit | integer | How many listings to return, 1-50 (default 20) |
| venue | string | Only listings from this venue, by its slug from settled_income_venues, e.g. superteam-earn |
| min_reward | number | Smallest reward to include, in USD, e.g. 50 |
| agent_access | string | allowed (default) for listings agents may take, or any to include human-only ones |
Free. Scorecard of bounty boards, task markets, audit contests and the x402 sell-side: verdict (paying / paying small / measuring / no payouts seen / unmeasured / closed to agents / defunct), agent policy, gating (KYC, human claim, self-custody wallet), open listings and on-chain payouts. Use when: choosing where an agent should look for paid work, or checking whether a venue actually pays. Not for: individual listings (settled_income_listings) or x402 endpoints (settled_find_endpoints). Poll settled_events for changes instead of re-reading this.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Free, rate-limited. Coarse status and quality score for one x402 endpoint URL, from the index only (no fresh probe). Use when: you only need a quick yes/no on whether Settled knows the URL and its last status. Not for: deciding whether to pay — use settled_check (free, fuller) or settled_preflight (paid, fresh). If the URL is unknown, call settled_submit, then check again later.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL of the x402 endpoint, e.g. https://api.example.com/search |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Full URL of the x402 endpoint, e.g. https://api.example.com/search"
}
}
}Pass required. The call to make right before paying an unfamiliar x402 endpoint: a fresh probe, parsed quote, payability, payTo on-chain history, seller integrity, the scout’s real-payment delivery result and a honeypot scan, as one signed answer with a recommendation (pay, caution or avoid) and reasons. Use when: real money is about to leave your wallet and settled_check was stale or not enough. Not for: browsing (settled_find_endpoints) or endpoints you already verified. After: compare pay_to and price with the 402 you receive, pay, then call settled_report.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL of the x402 endpoint, e.g. https://api.example.com/search |
| pass | string | Settled day pass token, if you did not send it as the x-settled-pass header |
| force | boolean | true to probe the endpoint now instead of reusing a result up to 5 minutes old |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Full URL of the x402 endpoint, e.g. https://api.example.com/search"
},
"pass": {
"type": "string",
"description": "Settled day pass token, if you did not send it as the x-settled-pass header"
},
"force": {
"type": "boolean",
"description": "true to probe the endpoint now instead of reusing a result up to 5 minutes old"
}
}
}Free. After paying an x402 endpoint on Base, tell Settled whether you got what you paid for. Use when: your agent has just made a real USDC payment and has the transaction hash. Not for: endpoints you did not pay, or payments on other chains. Flow: call without signature to get message_to_sign; sign it with the paying wallet (EIP-191 personal_sign); call again with signature. One report per payment, one vote per wallet per endpoint; Settled keeps only per-endpoint tallies.
| Argument | Type | Description |
|---|---|---|
| ok* | boolean | true if the call delivered what you paid for, false if it did not |
| tx* | string | Transaction hash of your USDC payment to that endpoint on Base, from the last 30 days: 0x followed by 64 hex characters, e.g. 0x3f9a...c21e |
| url* | string | The x402 endpoint you paid |
| signature | string | EIP-191 personal_sign of message_to_sign by the wallet that paid (0x + 130 hex characters); omit on the first call to get message_to_sign |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"tx",
"ok"
],
"properties": {
"ok": {
"type": "boolean",
"description": "true if the call delivered what you paid for, false if it did not"
},
"tx": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "Transaction hash of your USDC payment to that endpoint on Base, from the last 30 days: 0x followed by 64 hex characters, e.g. 0x3f9a...c21e"
},
"url": {
"type": "string",
"format": "uri",
"description": "The x402 endpoint you paid"
},
"signature": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{130}$",
"description": "EIP-191 personal_sign of message_to_sign by the wallet that paid (0x + 130 hex characters); omit on the first call to get message_to_sign"
}
}
}Pass required. Everything Settled knows about one payTo address: the endpoints it is paid for, live/dead counts, price range, clone-farm and quote-only flags, on-chain settlements and unique payers. Use when: several endpoints share a seller and you want to judge the seller rather than one URL, or a payTo looks unfamiliar. Not for: a single endpoint’s status (settled_check). Input is the wallet address from a 402 quote.
| Argument | Type | Description |
|---|---|---|
| pass | string | Settled day pass token, if you did not send it as the x-settled-pass header |
| address* | string | The payTo address from a 402 quote: 0x followed by 40 hex characters (Base) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"pass": {
"type": "string",
"description": "Settled day pass token, if you did not send it as the x-settled-pass header"
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The payTo address from a 402 quote: 0x followed by 40 hex characters (Base)"
}
}
}Free. Sellers who proved control of the wallet their x402 endpoints are paid to, with their published profile and endpoint counts. Use when: you want a contact or docs link for a seller, or to see which sellers stand behind their endpoints. Not for: judging an endpoint’s quality (claims never change scores; use settled_check). Paged: limit (max 50) and offset, with a total.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many sellers to return, 1-50 (default 25) |
| offset | integer | How many sellers to skip, for paging (default 0) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many sellers to return, 1-50 (default 25)"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many sellers to skip, for paging (default 0)"
}
}
}Free. Size and freshness of the x402 endpoint index and the on-chain ledger. Use when: you need to know how current Settled’s data is, or what the paid routes cost, before relying on any other tool. Not for: looking up a specific endpoint (use settled_check). No input.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Free, rate-limited. Queue an x402 endpoint URL for indexing. Use when: settled_check or settled_peek reports the URL as unknown or not indexed. Not for: URLs already indexed (it just returns their status) or non-x402 URLs. After: wait a few minutes, then call settled_check; the first probe runs within minutes. Idempotent.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL of an x402 endpoint to add to Settled's index |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Full URL of an x402 endpoint to add to Settled's index"
}
}
}Free. Pass any signed Settled response (attestation included) to recompute its hash and recover the signer; tells you whether it is authentic and unaltered. Use when: a Settled answer reached you through a third party, a cache or a log and you need to trust it. Not for: answers you just received directly over this server (already signed and fresh). Use the full response object, unchanged.
| Argument | Type | Description |
|---|---|---|
| document* | object | A complete signed Settled answer, including its attestation block |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"document"
],
"properties": {
"document": {
"type": "object",
"description": "A complete signed Settled answer, including its attestation block",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Paid: $1.00 USDC on Base over x402 inside MCP (the first call returns the payment requirements; @x402/mcp clients pay automatically). Buys 10 days of monitoring for one x402 endpoint: probed about every 15 minutes, with a signed alert whenever status, payability, price or payTo changes. Use when: your agent depends on one endpoint and must learn quickly if it changes. Not for: one-off checks (settled_check). Give url to start or watch_id to renew; give webhook to have alerts POSTed, else read them with settled_watch_alerts. Returns watch_id.
| Argument | Type | Description |
|---|---|---|
| url | string | The x402 endpoint to watch, e.g. https://api.example.com/search; required unless watch_id is given |
| webhook | string | https URL that receives each alert as a signed POST; omit to poll with settled_watch_alerts |
| watch_id | string | The watch_id of an existing watch to renew for 10 more days; give this or url, not both |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The x402 endpoint to watch, e.g. https://api.example.com/search; required unless watch_id is given"
},
"webhook": {
"type": "string",
"format": "uri",
"description": "https URL that receives each alert as a signed POST; omit to poll with settled_watch_alerts"
},
"watch_id": {
"type": "string",
"description": "The watch_id of an existing watch to renew for 10 more days; give this or url, not both"
}
}
}Free. Everything a Watchdog has recorded for its endpoint since a given alert id: each change to status, payability, price or payTo, the endpoint’s state now, and next_since to pass on the next call. Use when: you created a watch with settled_watch and did not give a webhook. Not for: endpoints without a watch (use settled_check). Poll it whenever your agent runs; the endpoint is probed about every 15 minutes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Most alerts to return, 1-100 (default 50) |
| since | integer | Return alerts with an id above this; pass next_since from your last call, or 0 for all |
| watch_id* | string | The watch_id returned by settled_watch when the Watchdog was bought |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"watch_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Most alerts to return, 1-100 (default 50)"
},
"since": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Return alerts with an id above this; pass next_since from your last call, or 0 for all"
},
"watch_id": {
"type": "string",
"minLength": 8,
"description": "The watch_id returned by settled_watch when the Watchdog was bought"
}
}
}Free. The latest published Agent Income Report as JSON: which venues paid agents on-chain, worker wallets, honeypots flagged, x402 index health. Use when: you want the week’s summary, for a digest or a decision about where to look for work. Not for: live numbers (settled_status, settled_income_venues). Published Mondays; the window and ledger coverage are in the body.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}| string |
| Signature of message_to_sign by the wallet: EIP-191 personal_sign (0x hex) on Base, ed25519 (base58) on Solana; omit on the first call |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"wallet"
],
"properties": {
"docs": {
"type": "string",
"format": "uri",
"description": "Your API documentation, as a full https URL"
},
"name": {
"type": "string",
"maxLength": 80,
"description": "Seller name to show on your endpoints, up to 80 characters, e.g. Acme Data"
},
"action": {
"enum": [
"claim",
"remove"
],
"type": "string",
"description": "claim (default) or remove to withdraw an existing claim"
},
"wallet": {
"type": "string",
"maxLength": 64,
"minLength": 32,
"description": "The payTo wallet your endpoints are paid to: 0x + 40 hex characters on Base, or a base58 address on Solana"
},
"contact": {
"type": "string",
"maxLength": 120,
"description": "How buyers can reach you, e.g. [email protected] or @handle on X"
},
"website": {
"type": "string",
"format": "uri",
"description": "Your website, as a full https URL"
},
"issued_at": {
"type": "string",
"description": "The issued_at timestamp returned by the first call; send it back unchanged with the signature"
},
"signature": {
"type": "string",
"description": "Signature of message_to_sign by the wallet: EIP-191 personal_sign (0x hex) on Base, ed25519 (base58) on Solana; omit on the first call"
}
}
}| payer_token | string | A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"description": "Keywords to match in endpoint names, descriptions and URLs, e.g. weather or gift cards"
},
"pass": {
"type": "string",
"description": "Settled day pass token: lifts the free daily cap; or send it as the x-settled-pass header"
},
"sort": {
"enum": [
"quality",
"price",
"latency",
"payers"
],
"type": "string",
"description": "Order of results: quality (default), price, latency or payers"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many endpoints to return, 1-50 (default 20)"
},
"status": {
"enum": [
"live",
"degraded",
"dead",
"free",
"auth_gated",
"not_found",
"quote_invalid",
"unknown",
"any"
],
"type": "string",
"description": "Only endpoints with this status; live (default) or any for every status"
},
"network": {
"type": "string",
"description": "Only endpoints on this network, as a CAIP-2 id, e.g. eip155:8453 for Base"
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Highest price per call in USD, e.g. 0.01"
},
"payer_token": {
"type": "string",
"description": "A Settled payer token (x4t_…, from POST /x401/token with your payer record): the free tier then follows your wallet, 300 a day, through any gateway"
}
}
}| include_honeypots | boolean | true to include suspected honeypots and dead listings |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"pass": {
"type": "string",
"description": "Settled day pass token, if you did not send it as the x-settled-pass header"
},
"rail": {
"enum": [
"usdc-base",
"usdc-solana",
"crypto",
"fiat",
"mixed",
"unknown"
],
"type": "string",
"description": "Only listings paid on this rail, e.g. usdc-base"
},
"sort": {
"enum": [
"trust",
"reward",
"recent"
],
"type": "string",
"description": "Order of results: trust (default), reward or recent"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many listings to return, 1-50 (default 20)"
},
"venue": {
"type": "string",
"pattern": "^[a-z0-9-]{2,40}$",
"description": "Only listings from this venue, by its slug from settled_income_venues, e.g. superteam-earn"
},
"min_reward": {
"type": "number",
"minimum": 0,
"description": "Smallest reward to include, in USD, e.g. 50"
},
"agent_access": {
"enum": [
"allowed",
"any"
],
"type": "string",
"description": "allowed (default) for listings agents may take, or any to include human-only ones"
},
"include_honeypots": {
"type": "boolean",
"description": "true to include suspected honeypots and dead listings"
}
}
}