x402 Endpoint Trust
Summary: This MCP server lets agents vet x402 endpoints before paying them — checking liveness, 402-envelope compliance, advertised price, on-chain USDC settlement, and change-monitoring — with free discovery tools and paid per-endpoint reports.
Free ecosystem overview:
x402_ecosystem_stats(listings/reachability/compliance/30d settlement volume) andx402_trust_leaderboard(top-25 most trustworthy endpoints).Free preview:
x402_trust_previewreturns complete paid-grade reports for three sample endpoints (best, median, worst) so you see the output shape before paying.Score a specific endpoint (paid):
x402_trust_scoregives a 0-100 score, A-F grade, proceed/caution/avoid/parameterize/unverified/not-payable/free verdict, confidence band, advertised price, structured flags, breakdown, and 30d on-chain stats in one call.Bulk scoring (paid):
x402_trust_bulkscores up to 500 endpoints in one call, auto-selecting the cheapest tier (~$0.045–$0.50).Discovery (paid):
x402_semantic_searchfinds endpoints by plain-language capability query;x402_find_alternativesfinds similar endpoints that out-score a given one.History (paid):
x402_endpoint_historyreturns 1-90 days of listings, price/payTo changes, and probe results.Watch/alerting:
x402_watch_create(paid, 30 days) monitors an endpoint for payTo/price/asset/spec/delisting/liveness changes with optional signed webhooks or Slack/Discord;x402_watch_events(free) polls the append-only log;x402_watch_edit,x402_watch_cancel(free), andx402_watch_renew(paid) manage it.Payments: Paid tools settle over x402 in USDC on Base — auto-pay with
X402_PRIVATE_KEY, or receive a price quote; free tools need no configuration.Verifiability: Signed results are Ed25519-signed over JCS-canonicalized output, verifiable against a pinned key.
x402-trust-mcp
An MCP server that lets your agent check the trust & reliability of x402 endpoints before paying them.
Backed by x402-trust.com, which monitors the entire x402 ecosystem on Base 24/7: uptime probes, 402-envelope spec compliance, advertised-price history, and real on-chain USDC settlement volume per endpoint.
Why
Agents increasingly pay x402 endpoints autonomously. But ~⅔ of listed x402 endpoints are unreachable and ~⅓ of the reachable ones serve non-compliant payment envelopes. Before your agent sends USDC to an unknown endpoint, ask: is it alive, compliant, and does anyone actually pay it?
Related MCP server: x402-mcp
Tools
Tool | Cost | Description |
| free | Aggregate state of the x402 ecosystem (listings, reachability, compliance, 30d settlement volume). |
| free | Top-25 most trustworthy x402 endpoints. |
| free | Showcase of what |
| paid | Trust score (0-100, grade A-F) for a specific endpoint, plus the provider-advertised |
| paid | Observation time-series for a specific endpoint (listings, price changes, probes). |
| paid | Find semantically-similar endpoints that OUT-SCORE a given one. Use this to route away from a mediocre/dead/expensive endpoint toward a more reliable, better-settled one serving the same function. Each alternative carries score, grade, similarity (0-1), price, and a free per-endpoint page. |
| paid | Free-text semantic search across the whole monitored catalog. Describe the capability you need in plain words, get the up to 25 closest endpoints ranked deterministically: cosine similarity bucketed to whole percentage points first (80.3% and 80.5% tie), then trust score, then described-before-undescribed, then id; matches below a 0.5 similarity floor are dropped. Missing description: no fixed malus, only the tiebreak loss at equal bucket + score (fallback embedding via service name + URL path tokens usually lowers similarity). Each match has resource, score, grade, similarity, description, and a free per-endpoint page. Discovery only: no verdicts or flag details (that is |
| paid | Score up to 500 endpoints in a single paid call from cached full-density snapshots. Picks the cheapest tier that fits your list (10/50/100/200/500). Returns score, grade, recommendation, confidence, and |
| paid | Start monitoring one endpoint for 30 days. Alerts on payTo change (takeover signal), price/asset/network change, spec regression, delisting, and liveness. Supports up to 5 webhook + 5 Slack/Discord URLs per watch, all connection-tested before payment. Returns a one-time bearer secret + poll/edit/cancel URLs + |
| free | Poll the append-only event log of an active watch using the watch id and one-time secret. Use the |
| free | Change a watch's webhook/Slack URLs, liveness sensitivity, or subscribed events. Bearer-authed with the secret from |
| free | Soft-cancel a watch: drops the endpoint back to normal probe cadence immediately, but the event log stays readable via |
| paid | Extend an active watch by another 30 days. The secret stays the same. |
Paid tools cost from $0.001 (a semantic search) or $0.005 (a single
trust / similar lookup) up to ~$0.50 (500-endpoint bulk batch) or ~$0.20
for a 30-day watch, charged over x402 (USDC on Base). If you set
X402_PRIVATE_KEY, the server auto-pays within your X402_MAX_USD limit;
otherwise it returns the price quote for your host to pay.
Bulk scoring (x402_trust_bulk)
The bulk tool is the scale axis: score up to 500 endpoints in one call from the same data that powers the leaderboard. It auto-selects the cheapest tier that fits your request:
Tier | Max endpoints | Approx. price |
10 | 10 | ~$0.045 |
50 | 50 | ~$0.20 |
100 | 100 | ~$0.325 |
200 | 200 | ~$0.40 |
500 | 500 | ~$0.50 |
Cached rows older than ~15 minutes are recomputed on-demand from the latest
stored probes and settlements (no live network re-probe), so bulk scores usually
reflect reality within minutes. Per-request recompute limits apply: at most 50
rows / 8 seconds are recomputed; the response tells you via
recompute_limit_hit + recompute_limit. Each result carries score, grade,
recommendation, confidence, probed_at, computed_at, and recomputed so
you can see exactly which rows were freshly computed vs served from cache. URLs
not in the observation set return found: false; you still pay for the batch.
Finding better alternatives (x402_find_alternatives)
Before paying an unknown endpoint, check whether a better-tested alternative
exists for the same purpose. x402_find_alternatives returns up to 25
endpoints (default 5) that are semantically similar to a given URL — matched
on advertised purpose via description embeddings — and that out-score it
on our deterministic trust score. Each alternative returns score, grade,
recommendation, cosine similarity (0-1), amountUsd price, and a free
endpointPage URL. Same-host siblings and avoid-flagged endpoints are
excluded; an empty alternatives array is a valid answer meaning nothing beats
the subject. Cost is ~$0.005 per call.
Semantic search (x402_semantic_search)
Describe the capability you need in plain words and get the up to 25 closest
endpoints in the monitored catalog. Ranking is deterministic: cosine similarity
bucketed to whole percentage points first (80.3% and 80.5% are the same bucket),
then trust score, then described-before-undescribed, then endpoint id, with
matches below a 0.5 cosine-similarity floor dropped entirely (so a query can
return fewer than the requested limit, or none). Endpoints that advertise no
description are still matched via their service name and URL path tokens (host
name as a last resort). The exact effect of a missing description: no fixed
point deduction and no direct similarity malus; the only deterministic penalty
is the described-before-undescribed tiebreak (equal bucket AND equal score:
described wins). Beyond that it is purely indirect — the shorter fallback text
typically yields lower cosine similarity than a prose description, so such
endpoints tend to land in lower buckets, by a query-dependent amount. Each
match returns id, resource, score, grade, raw cosine similarity (0-1;
ranking buckets it), description (when advertised), and a free endpointPage
URL. This is discovery, not verdicts: score/grade are null for unscored
endpoints, and no recommendation or flag detail is included (use
x402_trust_score for that). Cost is ~$0.001 per call.
Watch / alerting (x402_watch_create, x402_watch_events, x402_watch_edit, x402_watch_cancel, x402_watch_renew)
Create (
x402_watch_create, paid) buys 30 days of change monitoring for one endpoint. Pay over x402; receive a one-time bearersecret, apoll_url, arenew_url, and machine-readablenext_steps.Poll (
x402_watch_events, free) reads the append-only event log. It returns two streams:events(endpoint changes — payTo / price / asset / network / spec / delisting / liveness) andwatch_events(lifecycle feedback — created / edited / cancelled / renewed / expiring / expired), each with their own cursor (next_cursorandwatch_events_cursor). Page forward by passing the previous response's cursors assince/watch_since. Cursors/ids are global sequences shared across watches, so a watch's first event id may be >1 — always use the returnednext_cursor, never assume events start at 1.Edit (
x402_watch_edit, free) changes webhook/Slack URLs, liveness sensitivity, or subscribed events. Bearer-authed with the secret.Cancel (
x402_watch_cancel, free) soft-cancels a watch: no new events accrue and probing drops back to normal cadence immediately, but the event log stays readable viax402_watch_eventsuntil the originalexpires_at. Cancel is not a delete.Renew (
x402_watch_renew, paid) extends the watch beforeexpires_at. The secret stays the same.
Optional push delivery to one or more signed HTTPS webhooks and/or Slack/Discord
incoming webhooks can be configured at creation time and updated via edit (up to
5 of each per watch). webhook_url and slack_url accept a single URL string
or an array of URLs. Any URL is connection-tested before you are charged:
the server POSTs a signed connection_test ping and, if it can't be delivered
(3 attempts), rejects the change with notCharged: true so you can retry with
a corrected URL. On success the response reports per-URL delivery under
delivery.connection_test.
If you use a webhook, verify the x-signature header equals sha256= +
HMAC-SHA256(body) keyed by the SHA-256 hex digest of your secret — i.e. the
HMAC key is hex(sha256(secret)), not the raw secret. (The delivery worker only
ever holds that hash, never the plaintext secret.)
x402_trust_score result
A single call returns everything an agent needs to decide whether and at what price to use an endpoint — no second round-trip, no raw-unit guessing:
Field | Meaning |
| 0-100 point score and its A-F grade. |
| Machine verdict: |
|
|
| Overall confidence plus its parts: |
| The score cutoffs for each grade, so the verdict is auditable. |
| The last observed 402 quote: |
| The provider-advertised name and description (unverified claim from the 402 envelope). Shown next to our independent metrics so you can sanity-check what the provider says against what we've measured. |
| Legacy string flags plus structured |
| The full deterministic math (uptime, compliance, latency, age, activity, stability → technical / spec / economic subscores). |
| Observed evidence: probe counts, latency, payTo, |
Everything is computed deterministically (no LLM) from continuous on-chain and probe observation, so the breakdown is fully auditable.
x402 V2 Payment Flow
This MCP server uses the canonical x402 V2 payment flow:
402 +
PAYMENT-REQUIRED— The server responds with HTTP 402 and a base64-encodedPAYMENT-REQUIREDheader containing the payment requirements (accepts, network, asset, amount, payTo).Sign + retry with
PAYMENT-SIGNATURE— The MCP client signs an EIP-3009transferWithAuthorizationfor the selected accept and re-POSTs with thePAYMENT-SIGNATUREheader (base64-encoded payment payload).Settlement +
PAYMENT-RESPONSE— The server settles the payment and responds with the data plus aPAYMENT-RESPONSEheader.
Legacy X-PAYMENT / X-PAYMENT-RESPONSE headers are accepted as a fallback
during the V1→V2 transition period but are not the default.
Accept selection: When a 402 response offers multiple accepts (e.g. Solana
Base USDC), the client selects the best compatible one (canonical USDC on an allow-listed chain) rather than blindly taking the first accept.
Install
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"x402-trust": {
"command": "npx",
"args": ["-y", "x402-trust-mcp"]
}
}
}To enable autonomous payment for the paid tools, add a funded Base USDC wallet:
{
"mcpServers": {
"x402-trust": {
"command": "npx",
"args": ["-y", "x402-trust-mcp"],
"env": {
"X402_PRIVATE_KEY": "0xYOUR_BASE_WALLET_KEY",
"X402_MAX_USD": "0.05"
}
}
}
}Configuration (env vars)
Var | Default | Description |
|
| API base URL. |
| (unset) | Base wallet private key. Enables auto-pay for paid tools. Accepted with or without the |
|
| Per-call auto-pay ceiling. 0 disables auto-pay. |
|
| Cumulative auto-pay cap per process. 0 = unlimited. |
|
| Max paid calls per process. 0 = unlimited. |
|
| Request timeout. |
The free tools work with no configuration at all.
Security
X402_PRIVATE_KEY is a hot wallet — fund it with only what you're willing to
spend on trust lookups. The key never leaves your machine; it signs EIP-3009
payment authorizations locally.
Policy checks enforced before signing:
Chain allow-list (Base mainnet by default)
Canonical USDC contract verification (no arbitrary tokens)
Optional payTo allow-list
Per-call spend ceiling (
X402_MAX_USD)Cumulative spend cap (
X402_MAX_TOTAL_USD)Call-count cap (
X402_MAX_CALLS)
Verifying response signatures
Tool results are provider-signed: the result object of signed tools carries
a top-level signature block with an Ed25519 signature over the
JCS-canonicalized (RFC 8785) response without the signature field. This
proves the content was assembled by x402-trust and not modified afterwards.
To verify a result:
Take the
resultobject and remove itssignaturefield.Canonicalize with JCS (RFC 8785): object keys sorted by UTF-16 code unit order, no whitespace, ECMAScript number formatting.
SHA-256 the canonical UTF-8 bytes; the hex must equal
signature.digest.Verify
signature.value(base64url, no padding) against the public key thatsignature.keyIdresolves to in your PINNED copy of the key document (see below).
Trust anchor: pin, do not follow. signature.publicKeys is a discovery
hint, never a trust source. A verifier that fetches the key URL from the
response it is checking verifies against a key chosen by the sender, which
proves nothing: a forged response would carry the attacker's own key URL and
still verify. Pin one of these in your client instead:
the public key itself (strongest, works offline; add new keys on rotation), e.g.
{ "x402trust-2026-08": "i4jrHKvmZ98-IGgseDfMTjMV4lAaLAgk-EnBeRIJQ5Y" }(current at the time of writing; the key document always carries the full list, retired keys included), orthe key document URL
https://x402-trust.com/.well-known/x402-trust-keys.json, fetched over HTTPS once at bootstrap and cached (rotation-friendly).
Retired keys stay published forever, so a response you froze as evidence
remains verifiable. A worked test vector and a 20-line reference verifier
live at https://x402-trust.com/schemas. Watch management responses
(x402_watch_create, x402_watch_edit, x402_watch_cancel,
x402_watch_renew) are unsigned by design: they carry capability secrets
that must never be forwarded as evidence.
License
MIT
Available Tools
13 toolsx402_ecosystem_statsx402 ecosystem stats (free)A
Free aggregate snapshot of the entire x402 ecosystem (Base + Solana): how many endpoints are listed/active/delisted, what fraction are reachable and spec-compliant, and real on-chain USDC settlement volume / receivers / payers over the last 30 days. Use this to gauge market health before transacting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description fails to disclose data freshness (e.g., how often the snapshot updates), rate limits, or whether the output is static or dynamic. For a tool with zero annotations, the description carries the full burden and doesn't address these behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first enumerates data points, second gives usage guidance. No redundant words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is adequate but lacks details on output format, update frequency, or size limits. It covers the 'what' well but misses the 'how' and 'limitations,' leaving some gaps for an agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. The description adds value by explaining the content of the snapshot, though this is more about output. Baseline for no params is 4, and the description does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs like 'aggregate snapshot' and lists exact metrics (endpoints, settlement volume, etc.). It clearly distinguishes from sibling tools like x402_endpoint_history or x402_trust_score by focusing on ecosystem-wide stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this to gauge market health before transacting,' providing a concrete when-to-use scenario. It could be improved by explicitly naming when not to use (e.g., for individual endpoint details), but the context allows inferring differentiation from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_endpoint_historyx402 endpoint observation history (paid)A
Raw observation time-series for a SPECIFIC x402 endpoint: listing/delisting/relisting events, advertised price changes, payTo changes, and probe results (uptime, latency, quoted amount) over the requested window (1-90 days). Per-probe 'latencyMs' is measured from a single EU vantage point and includes network distance to the endpoint. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (default 30) | |
| resource | Yes | Full x402 resource URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses pay-per-call behavior, auto-pay logic, and measurement specifics (single EU vantage point, includes network distance). This adds valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence packs all essential details, the second adds pricing and measurement context. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description sufficiently describes the return (time-series of events and probe results). It covers input, output, pricing, and measurement caveats. It is complete for a history tool, though pagination or format details are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds significant meaning beyond the schema by explaining the types of events in the time-series (listing, delisting, price changes, probe results) and measurement details, enriching the understanding of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'Raw observation time-series for a SPECIFIC x402 endpoint' and lists the events included. It distinguishes from sibling tools that focus on ecosystem stats or trust scores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use: when you need historical data for a specific endpoint. It does not explicitly mention when not to use or alternatives, but the context of sibling tools makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_find_alternativesFind better-scored alternatives to an x402 endpoint (paid)A
Given an x402 endpoint URL, returns the top semantically-similar endpoints (matched on advertised purpose via description embeddings) that currently OUT-SCORE it on the deterministic trust score. Use this to route away from a mediocre/dead/expensive endpoint toward a more reliable, better-settled one serving the SAME function — e.g. before paying, check if a higher-graded equivalent exists. Each alternative carries its trust 'score', 'grade', 'recommendation', cosine 'similarity' (0-1), 'amountUsd' price, 'priceCeiling' (true when amountUsd is an x402 'upto' authorization ceiling, not a fixed per-call price), and a free 'endpointPage' URL. Same-host siblings and 'avoid'-flagged endpoints are excluded. An empty 'alternatives' array is a valid answer meaning nothing beats the subject. Similarity is independent of latency/geography. Pay-per-call over x402 (~$0.005); auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max alternatives to return (1-25, default 5) | |
| resource | Yes | Full x402 resource URL to find better alternatives for, e.g. https://api.example.com/v1/thing | |
| minScoreDelta | No | Minimum trust-score advantage an alternative must have over the subject (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses exclusions ('same-host siblings and avoid-flagged endpoints are excluded'), the empty-result semantics, that similarity is independent of latency/geography, and the billing behavior ('pay-per-call over x402 (~$0.005); auto-pays if a wallet is configured, otherwise returns the price quote'). It even explains the priceCeiling field's meaning, which is non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the return-shape enumeration, which is dense but relevant. It is a single long paragraph with no filler, though the field-by-field listing could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, paid, billed tool with no output schema and no annotations, the description covers return fields, pricing/authorization semantics, filtering exclusions, and empty-result behavior. Nothing an agent needs in order to call and interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, resource, and minScoreDelta. The description adds no additional syntax or format detail for these three parameters beyond what the schema provides, so this sits at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Given an x402 endpoint URL, returns the top semantically-similar endpoints that currently OUT-SCORE it'), which carves out a distinct niche combining semantic similarity with trust-score filtering. This implicitly separates it from x402_semantic_search (pure similarity) and x402_trust_leaderboard (pure score), so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'route away from a mediocre/dead/expensive endpoint... before paying, check if a higher-graded equivalent exists.' It also clarifies the negative case ('An empty alternatives array is a valid answer'). It stops short of naming which sibling to use for a pure semantic or pure score lookup, so no explicit exclusion of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_semantic_searchSemantic search over the x402 catalog (paid)A
Free-text SEMANTIC SEARCH across the entire monitored x402 endpoint catalog. Given a plain-language query (e.g. "weather forecast", "image generation", "EVM gas price oracle"), returns the up to 25 endpoints whose advertised purpose is semantically closest. Ranking is deterministic and fully specified: cosine similarity bucketed to whole percentage points first (80.3% and 80.5% are the same bucket, so sub-percent noise never outranks a better endpoint), then trust score (0-100), then described-before-undescribed, then endpoint id as a stable final tiebreak. Matches below a 0.5 cosine-similarity floor are dropped entirely, so a query can return fewer than the requested limit (or none). Endpoints that advertise no description are still matched: they are embedded from their service name and URL path tokens instead of a written description (host name as a last resort). The EXACT effect of a missing description: no fixed point deduction, and no direct similarity malus either; the only deterministic penalty is the described-before-undescribed tiebreak (at equal similarity bucket AND equal trust score, a described endpoint ranks first). Beyond that the effect is purely indirect: the shorter fallback text typically yields lower cosine similarity than a prose description, so undescribed endpoints tend to land in lower similarity buckets, by a query-dependent (never fixed) amount. Use this for DISCOVERY: find candidate endpoints for a capability before checking any of them in depth. Each match carries 'id', 'resource' URL, trust 'score' (0-100), 'grade' (A-F), raw cosine 'similarity' (0-1; ranking buckets it to whole percents), 'amountUsd' price (null when not advertised), 'priceCeiling' (true when amountUsd is an x402 'upto' authorization ceiling, not a fixed per-call price), 'description' when advertised, and a free 'endpointPage' URL. 'score'/'grade' are null for endpoints not yet scored. Deliberately NO verdict/recommendation or flag detail: the per-endpoint trust report (x402_trust_score) carries those. Pay-per-call over x402 (~$0.001); auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches to return (1-25, default 25) | |
| query | Yes | Free-text search query, e.g. "weather forecast". Describe the capability you need in plain words; matching is by meaning, not substrings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does so thoroughly: pay-per-call pricing (~$0.001), auto-pay when a wallet is configured versus returning a price quote, the deterministic ranking order with tiebreaks, the 0.5 cosine floor that can return fewer than the requested limit, and the exact treatment of undescribed endpoints. It even discloses what is deliberately omitted from results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded in the first sentence, and the output-field inventory and pricing note are dense but useful. The paragraph detailing missing-description effects is noticeably verbose and repeats the same point (no fixed penalty, only indirect similarity effect), which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description enumerates the returned fields (id, resource, score, grade, similarity, amountUsd, priceCeiling, description, endpointPage) and their nullability. Combined with the pricing/auth behavior and ranking rules, an agent has everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters (baseline 3). The description adds meaning beyond it: matching is by meaning not substrings (reinforcing the query param), the top-N cap of 25, and the important behavioral note that a query can return fewer than the requested limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (semantic free-text search across the monitored x402 endpoint catalog) and frames the scope precisely. It explicitly distinguishes itself from the trust-report siblings by naming x402_trust_score for verdicts/recommendations, so an agent can tell the tools apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ("Use this for DISCOVERY: find candidate endpoints for a capability before checking any of them in depth") and a when-not/alternative condition (per-endpoint trust report via x402_trust_score carries verdicts and flag detail). Nothing needed for routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_trust_bulkx402 bulk trust scoring (paid)A
Score up to 500 x402 endpoints in a SINGLE paid call. Returns the authoritative full-density trust score (0-100, grade A-F or '?' when unmeasured, recommendation proceed|caution|avoid|parameterize|unverified|not-payable|free), confidence, probed_at, computed_at, and a recomputed flag for each requested resource. Cache rows older than ~15 minutes are recomputed on-demand from the latest stored probes and settlements (no live network re-probe), so bulk scores typically reflect reality within minutes. Each recomputed row also refreshes that endpoint's free public snapshot (page, badge, card) immediately. Per-request recompute limits apply: at most 50 endpoints / 8 seconds are recomputed; the response includes recompute_limit_hit and recompute_limit so you know if the cap was reached. The smallest tier that fits your request is selected automatically (10/50/100/200/500 endpoints; ~$0.045/$0.20/$0.325/$0.40/$0.50). Resources not in our observation set return found:false; you still pay for the batch. For a fresh live probe, use x402_trust_score. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Optional fixed tier size. If omitted, the cheapest tier that fits `resources` is used. | |
| resources | Yes | List of full x402 resource URLs (https://...) to score. Duplicates are ignored; max 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: cache staleness (~15 min) with on-demand recompute, no live network re-probe, side effect of refreshing the free public snapshot, recompute caps (50 endpoints / 8 seconds) surfaced via `recompute_limit_hit`/`recompute_limit`, `found:false` for unobserved resources with billing still applied, and automatic smallest-tier selection with per-tier pricing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core capability and pricing/refund caveats in a tight sequence, and every sentence carries distinct operational information. It is dense to the point of being long, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description enumerates the returned fields (score, grade, recommendation, confidence, probed_at, computed_at, recomputed, recompute_limit flags) and the payment/failure modes. Nothing material an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value beyond the schema by giving the tier price points, confirming the auto-selection behavior, and clarifying the '?' unmeasured case for scores. It does not, however, add syntax or format detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (score), resource (x402 endpoints), and scale (up to 500 in a single paid call), and immediately distinguishes itself from the single-endpoint sibling `x402_trust_score`. An agent can tell what it returns (score 0-100, grade, recommendation, confidence, timestamps) without opening anything else.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'For a fresh live probe, use `x402_trust_score`', and explains the payment path (auto-pays if a wallet is configured, otherwise returns a price quote). It does not address when to prefer other siblings like `x402_trust_preview` or `x402_trust_leaderboard`, so coverage of alternatives is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_trust_leaderboardx402 trust leaderboard (free)A
Free top-25 most trustworthy x402 endpoints, ranked by a deterministic trust score (uptime, envelope compliance, latency, age, on-chain settlement activity, price stability). Latency is measured from a single EU vantage point and includes network distance to the endpoint (so it is only lightly weighted). Use this to discover reliable paid endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that it's free, top-25, deterministic trust score with components, and that latency is measured from a single EU point and lightly weighted. Addresses limitations honestly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a purpose: main output and ranking criteria, latency measurement detail, and use case recommendation. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description explains the output content (top-25 endpoints, trust score factors) and pricing (free). Sufficient for a simple list tool with no parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters and schema coverage is 100%, so per guidelines baseline is 4. Description adds no parameter info but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists the top-25 most trustworthy x402 endpoints based on a deterministic trust score. Distinguishes from siblings by specifying 'free' and 'top-25', differentiating it from other trust tools like x402_trust_score or x402_trust_bulk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to discover reliable paid endpoints,' providing clear context for when to use. Does not mention when not to use or directly compare with alternatives, but the use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_trust_previewx402 trust preview — full sample reports (free)A
FREE showcase of what x402_trust_score returns. You do NOT choose the endpoint: this returns the COMPLETE paid-grade trust report (every field — exact score, scoreRange, full component breakdown, advertised price, on-chain settlement figures, all flags) for THREE endpoints picked from the current population — the best-scored, the median, and the worst-scored ('samples' each carry 'role', 'populationRank', and the full 'report'). Use it to see exactly what the paid output looks like across the entire quality range BEFORE paying. It cannot score an endpoint you choose — to evaluate YOUR OWN endpoint, call x402_trust_score (paid). Takes no arguments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses complete behavioral details: returns three specific samples with full reports, is free, and cannot score user-chosen endpoints. No side effects, but as a read-only preview, no additional disclosure is needed. With no annotations, the description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence is informative and necessary. The description is front-loaded with the key purpose and constraints, and flows logically without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains what the sample reports contain (every field). It also addresses the use case and limitations. The tool is simple, and the description leaves no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%. The description adds meaning by explaining that you do not choose the endpoint, which clarifies the lack of parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a free showcase returning complete trust reports for three sample endpoints (best, median, worst). It distinguishes from x402_trust_score (paid) by explicitly noting it cannot score a user-chosen endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (to preview paid output before paying) and when not to use (to evaluate your own endpoint, instead use x402_trust_score). Also notes it takes no arguments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_trust_scorex402 trust score for an endpoint (paid)A
Trust score (0-100, grade A-F, or '?' when unmeasured) for a SPECIFIC x402 endpoint -- cataloged or not (uncataloged endpoints are live-probed on first query, auto-adopted, score carries a low-confidence first-contact flag). PLUS a machine-readable verdict ('recommendation': proceed|caution|avoid|parameterize|unverified|not-payable|free), the advertised price ('advertised.amountUsd'), a confidence-adjusted band ('scoreRange'), and structured flags ('flagsDetailed' with code/severity/message; any severity 'error' means avoid). The 'parameterize' verdict (with 'templated':true) means the resource URL still contains an unresolved template placeholder (e.g. {slug}, :slug or %7B…%7D) but we DO have a real signal (scored probes or a discovery fallback): substitute a valid value first, then the health metrics apply to the resolved URL. The 'unverified' verdict (grade '?') means we have NO measurement at all (every probe excluded and no discovery payment requirements to fall back on): it is unknown, not bad, so verify the endpoint yourself before paying. The 'not-payable' verdict (grade '?') means the URL answers a 402 with an EMPTY accepts[] (an auth/API-key gate such as sign-in-with-x), or answers a bare 401/403 with no payment envelope, so it is not an x402-payable resource at all and there is nothing to settle. The 'free' verdict (grade '?') means the endpoint answers plain requests with data (HTTP 200, no payment envelope) and has never presented a payment challenge: a free resource with no payment flow to grade, unmeasured by design, not a negative verdict. For templated per-item endpoints that ARE payable, a varying payTo/price is EXPECTED (one wallet/price per item): the report surfaces 'stats.payToVaries'+'payToDistinct30d' and 'advertised.amountRange30d' as a 'payto-varies'/'price-varies' note rather than a 'payto-changed-recently' hijack error; always pay the payTo in the live 402 quote, not a cached listing. 'stats.scoredProbes30d' vs 'stats.excluded30d' show how many probes actually back the score. Includes the full component breakdown, the provider-advertised 'serviceName' and 'description' (unverified provider claims, shown next to our independent metrics), and 30-day on-chain stats. Note: 'stats.avgLatencyMs' is measured from a single EU vantage point and includes network distance to the endpoint (see 'stats.latencyVantage'), so a geographically distant endpoint reads slower even when its server is fast. One call answers WHETHER and at WHAT PRICE to use an endpoint. Call this BEFORE paying an unknown x402 endpoint to avoid dead, fraudulent, or recently-hijacked services. Each paid call also refreshes the endpoint's free public snapshot (page, badge, card) immediately. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| resource | Yes | Full x402 resource URL to evaluate, e.g. https://api.example.com/v1/thing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the paid per-call model with auto-pay-or-quote fallback, live-probing and auto-adoption of uncataloged endpoints, the low-confidence first-contact flag, the side effect of refreshing the free public snapshot, and the single-EU-vantage latency caveat. It also enumerates verdict semantics (proceed/caution/avoid/parameterize/unverified/not-payable/free) and what each means for the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and each clause is informative, but it is delivered as one sprawling paragraph dense with nested parentheticals and duplicated verdict explanations. The sheer length and lack of visual structure make it hard to scan, even though almost nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the sole source of behavioral and return-shape information, and it covers the score, verdict vocabulary, price/band/flags fields, probe stats, templated-endpoint handling, and victory conditions comprehensively. An agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about the single `resource` argument: it may be cataloged or uncataloged (triggering a live probe), and it may still contain an unresolved template placeholder (e.g. {slug}, :slug), which the caller must resolve. That goes beyond the schema's bare URL example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource+scope: a trust score (0-100, grade A-F) for a SPECIFIC x402 endpoint, cataloged or not. It is unambiguous about what the tool produces. However, it never names an alternative sibling (e.g. x402_trust_bulk for many endpoints, x402_trust_preview, x402_trust_leaderboard), so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear trigger: 'Call this BEFORE paying an unknown x402 endpoint to avoid dead, fraudulent, or recently-hijacked services,' and frames it as the one call that answers 'WHETHER and at WHAT PRICE.' This is strong context, but no explicit when-not exclusions or named alternative tools are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_watch_cancelx402 watch — cancel early (free)A
Soft-cancel a watch immediately: no new events accrue, but the event log stays READABLE via x402_watch_events until the original expires_at (cancel is not a delete). Probing drops back to normal cadence as soon as no active watches cover the endpoint. Bearer-authed with the secret from x402_watch_create. Free and idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| secret | Yes | The one-time bearer secret returned by x402_watch_create. | |
| watch_id | Yes | Watch id returned by x402_watch_create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: soft-cancel (not delete), no new events, events readable until original expiry, probing cadence drops, auth requirement, free, idempotent. Comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with key information, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what the tool does and its effects. No output schema but idempotency implies minimal response. Minor gap on exact return value, but overall complete for a cancellation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds value by explaining the secret is from x402_watch_create and watch_id is from create. Provides provenance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool performs a soft-cancel on a watch, distinguishing it from a delete. The verb 'cancel' and resource 'watch' are specific, and the description adds nuance about event log readability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (immediate soft-cancel), contrasts with delete, and mentions idempotency. Could be more explicit about alternatives among siblings, but the sibling list makes it clear this is the cancel tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_watch_createx402 watch — create 30-day endpoint monitor (paid)A
Start monitoring ONE x402 endpoint for 30 days. Get alerted on changes that break autonomous payment: payTo changes (possible takeover/rug — but for a templated per-item endpoint a payTo move is expected variance and is delivered as severity 'warn', not 'critical'), price changes, asset/network changes, 402-spec regressions, delisting, and liveness down/recovered. A self-healing endpoint that repeatedly blips is auto-detected as liveness_flapping and its individual down/up alerts are coalesced into a single flapping notice (plus one 'stopped flapping' notice when it stabilizes) so you are not spammed. Returns a one-time bearer secret + poll URL + renew URL + edit URL + cancel URL + machine-readable next_steps. Use x402_watch_events to poll the append-only log, or configure push delivery to one or more signed HTTPS webhooks and/or Slack/Discord incoming webhooks (max 5 each). webhook_url/slack_url accept a single URL string or an array of URLs. All URLs are connection-tested BEFORE payment — unreachable URLs are rejected with no charge (retry with a corrected URL). On success the response reports per-URL delivery in delivery.connection_test. Webhook signature: x-signature = 'sha256=' + HMAC-SHA256(body) keyed by hex(sha256(secret)), NOT the raw secret. Pay-per-call over x402 (~$0.20); auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Event types to subscribe to (default all): payto_change, price_change, asset_network_change, spec_regression, delisting, liveness_down, liveness_recovered, liveness_flapping, latency_regression. | |
| endpoint | Yes | Full x402 resource URL to watch. It must already be in our observation set. | |
| slack_url | No | Optional Slack or Discord incoming webhook URL(s). Single string or array; max 5. | |
| webhook_url | No | Optional signed HTTPS webhook URL(s) for push delivery. Single string or array; max 5. | |
| liveness_sensitivity_n | No | Consecutive missed probes before liveness_down surfaces to you (1=paranoid … 10=relaxed; default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does so thoroughly. It discloses critical behaviors: payTo changes on templated endpoints are severity 'warn' not 'critical', liveness_flapping coalesces alerts, all URLs are connection-tested before payment with no charge for unreachable ones, webhook signature details (HMAC-SHA256 keyed by hex of sha256 secret, not raw secret), and pay-per-call cost. This is exemplary transparency beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long due to the tool's complexity, but every sentence adds value: purpose, event semantics, flapping behavior, return URLs, alternatives, URL configuration, signature format, and cost. It is front-loaded with the primary purpose and flows logically. No tautology or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, no annotations, and no output schema, the description is remarkably complete. It explains return artifacts (bearer secret, poll/renew/edit/cancel URLs, next_steps), payment flow, webhook signature construction, event types, and delivery testing. The only minor omission is a detailed list of event types (left to schema), but the description mentions them by name and provides enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra semantics: webhook_url/slack_url accept a single string or an array (max 5), all URLs are connection-tested before payment, and delivery is reported in 'delivery.connection_test'. These details go beyond the schema's property descriptions, enhancing understanding of parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Start monitoring ONE x402 endpoint for 30 days.' It clearly differentiates from siblings by naming x402_watch_events for polling and mentioning renew/edit/cancel URLs returned on success. The scope (one endpoint, 30 days) and delivered event types are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (start a new monitor) and explicitly names an alternative for consuming events: 'Use x402_watch_events to poll the append-only log.' It also describes payment behavior and that URLs are connection-tested before payment, but does not give explicit 'when not to use' exclusions beyond implying this is for creation. This is clear context without a full when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_watch_editx402 watch — edit delivery URLs / sensitivity / events (free)A
Edit an active watch: change webhook/Slack URLs, liveness sensitivity, or subscribed events. Bearer-authed with the secret from x402_watch_create. Newly-added URLs are connection-tested before the change is persisted; if any new URL fails, the existing config is unchanged. Delivery fields are full-replace per channel (omit to leave that channel unchanged). Returns the updated watch view.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Event types to subscribe to (default all). Omit to keep current events. | |
| secret | Yes | The one-time bearer secret returned by x402_watch_create. | |
| watch_id | Yes | Watch id returned by x402_watch_create. | |
| slack_url | No | Replace Slack/Discord URL(s). Single string or array; max 5. Omit to keep current URL(s). | |
| webhook_url | No | Replace webhook URL(s). Single string or array; max 5. Omit to keep current webhook(s). | |
| liveness_sensitivity_n | No | 1=paranoid … 10=relaxed. Omit to keep current value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behaviors: bearer authentication, connection testing for new URLs, atomicity (unchanged config on failure), full-replace semantics, and return of updated watch view. Missing some edge-case error behavior, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, and every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions returns the updated watch view, which is sufficient. It covers the main functional aspects, though error handling details are omitted. Overall, complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining connection testing and full-replace behavior, which goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Edit an active watch: change webhook/Slack URLs, liveness sensitivity, or subscribed events.' It uses specific verbs and resources, and distinguishes itself from sibling tools like create, cancel, and renew.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: requires a secret from x402_watch_create, and explains the full-replace behavior per channel. However, it does not explicitly exclude cases where this tool should not be used (e.g., for creating a new watch).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_watch_eventsx402 watch — poll event log (free)A
Read the append-only event log for an active x402 watch. Returns two streams: events (endpoint changes — payTo/price/asset/spec/delisting/liveness) and watch_events (lifecycle feedback — created/edited/cancelled/renewed/expiring/expired). Nothing between two polls is lost. Provide the watch_id and the one-time secret from x402_watch_create. Advance since with the returned next_cursor (endpoint events) and watch_since with watch_events_cursor (lifecycle events). Cursors/ids are GLOBAL sequences shared across watches (a watch's first event id may be >1); always page by the returned cursor rather than assuming they start at 1. Cancelled watches remain READABLE until expires_at (no new events accrue). If the watch has push delivery, still poll to reconcile missed webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Endpoint-event cursor: the `next_cursor` from a previous poll. Omit for the first poll. | |
| secret | Yes | The one-time bearer secret returned by x402_watch_create. | |
| watch_id | Yes | Watch id returned by x402_watch_create. | |
| watch_since | No | Lifecycle-event cursor: the `watch_events_cursor` from a previous poll. Omit for the first poll. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It reveals that nothing is lost between polls, cursors are global sequences, and cancelled watches stay readable. This provides comprehensive behavioral context beyond a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of about 10 sentences, packing substantial information without excessive verbosity. Could benefit from light structuring (e.g., separating streams), but remains clear and focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description covers both event streams, cursor usage, reliability guarantees, lifecycle behavior, and push reconciliation. This provides all necessary context for correct usage without needing to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds valuable context: since and watch_since are cursors from previous polls, and secret/watch_id come from creation. It explains cursor advancement and global sequence nature, exceeding schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads an append-only event log for an x402 watch, returning two streams. It distinguishes from sibling tools (create, cancel, edit, renew) by focusing on polling and event retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to poll, how to use cursors, and that cancelled watches remain readable. It mentions push delivery reconciliation, but does not explicitly list scenarios where alternative tools should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_watch_renewx402 watch — renew 30 days (paid)A
Extend an active x402 watch by another 30 days before it expires. The secret stays the same. Pay-per-call over x402 (~$0.20); auto-pays if a wallet is configured, otherwise returns the price quote.
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes | Watch id returned by x402_watch_create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that secret stays same and payment model, but omits behavior on invalid watch_id or expired watch, and does not mention idempotency or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no superfluous words. Information is front-loaded and efficiently conveys core functionality, payment, and secret persistence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return format. It vaguely mentions 'returns the price quote,' but does not specify structure or cover error cases like missing watch or expired watch. Lacks completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter description in schema is adequate ('Watch id returned by x402_watch_create'). The tool description adds no extra meaning about the parameter itself, only behavioral context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool extends an active watch by 30 days, distinguishing it from sibling tools like x402_watch_create (creates) and x402_watch_events (lists events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies timing ('before it expires') and payment behavior (auto-pay or price quote). However, it does not explicitly state when not to use it (e.g., if watch expired) or mention alternatives like creating a new watch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.11.2- Added
x402_semantic_search
1 tool update
v1.7.0- Added
x402_find_alternatives
1 tool update
v1.6.0- Changed
x402_watch_create1 field changed- changed
Input schema / properties / events / descriptionPrevious value: -"Event types to subscribe to (default all): payto_change, price_change, asset_network_change, spec_regression, delisting, liveness_down, liveness_recovered, latency_regression."New value: +"Event types to subscribe to (default all): payto_change, price_change, asset_network_change, spec_regression, delisting, liveness_down, liveness_recovered, liveness_flapping, latency_regression."
1 tool update
- Changed
x402_watch_events2 fields changed- changed
Input schema / properties / since / descriptionPrevious value: -"Cursor: the highest event_id from a previous poll. Omit for the first poll."New value: +"Endpoint-event cursor: the `next_cursor` from a previous poll. Omit for the first poll." - added
Input schema / properties / watch_sinceAdded value: +{ + "description": "Lifecycle-event cursor: the `watch_events_cursor` from a previous poll. Omit for the first poll.", + "type": "string" +}
3 tool updates
v1.5.0- Added
x402_watch_cancel - Changed
x402_watch_create6 fields changed- added
Input schema / properties / slack_url / $refAdded value: +"#/properties/webhook_url" - changed
Input schema / properties / slack_url / descriptionPrevious value: -"Optional Slack or Discord incoming webhook URL for push delivery."New value: +"Optional Slack or Discord incoming webhook URL(s). Single string or array; max 5." - removed
Input schema / properties / slack_url / typeRemoved value: -"string" - added
Input schema / properties / webhook_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - changed
Input schema / properties / webhook_url / descriptionPrevious value: -"Optional signed HTTPS webhook URL for push delivery."New value: +"Optional signed HTTPS webhook URL(s) for push delivery. Single string or array; max 5." - removed
Input schema / properties / webhook_url / typeRemoved value: -"string"
- Added
x402_watch_edit
4 tool updates
v1.4.0- Added
x402_trust_bulk - Added
x402_watch_create - Added
x402_watch_events - Added
x402_watch_renew
5 tool updates
v1.0.0- First observed
x402_ecosystem_stats - First observed
x402_endpoint_history - First observed
x402_trust_leaderboard - First observed
x402_trust_preview - First observed
x402_trust_score
TDQS
Scored across 13 tools
Every tool has a clearly distinct purpose: discovery (semantic_search, leaderboard, ecosystem_stats), single/bulk/preview scoring (trust_score, trust_bulk, trust_preview), history (endpoint_history), alternatives (find_alternatives), and watch lifecycle (create, events, edit, cancel, renew). The descriptions explicitly differentiate free vs paid and single vs batch, so an agent can reliably select the right tool.
All tools use consistent snake_case with the x402_ prefix, no camelCase or mixed styles. The structural pattern varies slightly (some verb-first, some noun-first) but remains predictable and readable across the whole set.
13 tools is well-scoped for an endpoint trust and monitoring service, covering discovery, scoring, history, and watch management without redundancy. Each tool appears to earn its place.
The surface offers comprehensive scoring, discovery, history, alternatives, and a full watch lifecycle (create, events, edit, cancel, renew). Minor gaps exist: no tool to list active watches or retrieve current watch configuration outside the event log, and no free endpoint metadata fetch beyond the preview sample.
Maintenance
Related MCP Connectors
Entity verification, sanctions screening, and trust scoring for AI agents via x402 micropayments.
Verify x402 payment endpoints before an AI agent pays: scam scan, on-chain checks, trust scores.
Trust layer for the x402 agent economy: 40 pay-per-call SKUs, USDC on Base, verifiable proofs.
AI agent execution safety via x402 micropayments: risk scoring, integrity, memory checks
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to access paid content by integrating cryptocurrency payments through the x402 protocol, allowing LLMs to verify payments and retrieve paid resources automatically.1-
- AlicenseCqualityDmaintenanceMCP server bringing 100+ x402-paid APIs to AI agents (Claude, Cursor, MCP-aware clients). Auto-discovers tools from CDP Bazaar; handles USDC micropayments on Base.10033 npm1MIT
- FlicenseAqualityCmaintenancePay-per-call tools for AI agents including trust checks, due diligence, market data, and human-verified approvals, settled in USDC on Base via the x402 protocol.16-
- AlicenseAqualityAmaintenancex402 Ads lets AI agents buy and verify ad placements with per-request USDC payments. Agents can discover inventory, submit campaign context, receive structured placement options, and pay through x402 without API keys or accounts. Built for autonomous promotion, attribution, and pay-per-action agent commerce.772 npmMIT