TWZRD Agent Intelligence
Server Details
Pre-spend trust for AI agents that buy: check x402 services and product listings before paying.
- Status
- Healthy
- Uptime
- 99.2% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- twzrd-sol/twzrd-trust
- GitHub Stars
- 0
- Server Listing
- TWZRD Agent Intel
TDQS
Scored across 28 tools
The tool set includes many overlapping wallet-intel and pre-spend tools (get_readiness_card_tool, low_level_preflight, evaluate_x402_resource, check_listing, score_wallet_for_intel, get_provider_reputation, get_merchant_card, is_wash_fleet, etc.). Descriptions explicitly distinguish payer vs seller, free vs low-level, and resource vs wallet, but the boundaries still require careful reading and invite misselection.
Names are consistently snake_case with recognizable verb/prefix families such as get_, score_, verify_, and twzrd_watch_. Minor deviations like get_readiness_card_tool, low_level_preflight, and twzrd_demo_gate keep it from being fully uniform, but the pattern is largely predictable.
At 28 tools, the surface is heavy for what is largely a discovery, trust-check, and verification server. Multiple tools cover closely related wallet scoring, reputation, and preflight use cases, so the count feels over-expanded rather than tightly scoped.
Core trust, scoring, receipt verification, watch management, claim reading, and directory workflows are present. However, get_solana_market_status refers to other get_solana_market_* tools that are absent, the paid intel retrieval endpoints are only referenced via HTTP paths rather than exposed as tools, and some lifecycle operations are missing, leaving notable gaps.
Available Tools
28 toolscheck_listingARead-onlyIdempotentInspect
Pre-spend check of one product against the published listing cards. Free, read-only.
Returns unknown_seller when no published card covers the product (not a clean seller),
expired when the card is past expires_at, check_failed when the card cannot be verified
or the declared price is above the advertised one, and advertised when a current card
matches. It never authorizes a payment: authorizes_spend is always false. needs_approval
is true for every result except advertised, and also for an advertised card that
advertises nothing, advertises no price, cannot check the declared price, or is
declared below its advertised price (an unverified discount, including zero). It does
not fetch the store page, open a checkout or move money.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Optional subject market (e.g. US); must agree with the card when given. | |
| product | No | Optional subject product; must agree with the card when given. | |
| variant | No | Optional subject variant (e.g. Ink); must agree with the card when given. | |
| merchant | No | Optional subject merchant; must agree with the card when given. | |
| product_url | No | The store product URL the agent is about to buy from. Matched exactly against the published card's next_hop URL, the same rule as the paid checkout brief. | |
| declared_unit_price | No | Optional unit price the seller is asking, in USD. Above the card's advertised price is refused (phantom_markup_detected); below it is discount_unverified and needs approval. |
Output Schema
| Name | Required | Description |
|---|---|---|
| claims | No | The card's claims (name, value, state, reason). Unknown claims stay unknown. |
| digest | No | sha256 of the matching card's exact text (get_claim); null for unknown_seller. |
| reason | Yes | Why: e.g. no_card_for_product_url, expired_claim, phantom_markup_detected, current_card. |
| result | Yes | unknown_seller | expired | check_failed | advertised. |
| expires_at | No | Earliest claim expiry on the matching card. |
| artifact_id | No | The matching card's artifact id; null when no card covers the candidate. |
| price_check | No | verified | discount_unverified | unverified | absent | above_advertised | invalid, when a price was declared or checked. |
| needs_approval | Yes | True for every result except advertised, and for an advertised card that advertises nothing, advertises no price, cannot check the declared price, or is declared below its advertised price: a human approves before any spend. |
| authorizes_spend | Yes | Always false. advertised is current evidence, never permission to pay. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations: it enumerates every verdict (unknown_seller, expired, check_failed, advertised), states that authorizes_spend is always false, and spells out exactly when needs_approval is true, including edge cases like an unverified discount including zero. It also bounds side effects explicitly.
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 core purpose is front-loaded in one sentence and the verdict enumeration is information-dense rather than padded. The needs_approval sentence is long and clause-heavy, costing a little readability, but every clause carries distinct behavior.
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 read-only, idempotent verification tool with a full input schema and an output schema, the description supplies the decision logic (verdict meanings, approval rules, no-spend guarantee) an agent needs to interpret results, with nothing material 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 all six parameters in detail, including matching rules and price semantics. The description reinforces price behavior via the needs_approval logic but adds no syntax beyond what the schema provides, so the baseline 3 applies.
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 opening line states a specific verb and resource ('Pre-spend check of one product against the published listing cards') plus the cost/safety profile ('Free, read-only'). An agent can immediately distinguish this verification-before-buying tool from retrieval siblings like get_merchant_card or get_publication.
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?
Usage context is clear ('pre-spend check', the URL the agent is 'about to buy from'), and it plants exclusions ('It does not fetch the store page, open a checkout or move money'). However, it never names a sibling alternative such as get_shopping_check or low_level_preflight, so routing among the 27 siblings still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_walletsARead-onlyIdempotentInspect
Free discovery: side-by-side intel for two wallets (e.g. choosing between two
candidate providers). Returns both full score objects and which ranks higher by
the wash-discounted effective_score ("tie" on equal, null if a side is unavailable).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_a | Yes | First wallet (Solana base58 or Base 0x) to compare. | |
| wallet_b | Yes | Second wallet (Solana base58 or Base 0x) to compare. |
Output Schema
| Name | Required | Description |
|---|---|---|
| wallet_a | No | Full score object for the first wallet. |
| wallet_b | No | Full score object for the second wallet. |
| higher_effective_score | No | Wallet with the higher wash-discounted score, or "tie", or null if a side was unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description discloses meaningful return behavior: it returns full score objects, ranks by wash-discounted effective_score, returns 'tie' on equality, and returns null if a side is unavailable. This gives the agent important edge-case knowledge without needing to invoke the tool.
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 compact, well-structured, and front-loaded with the core purpose. The parenthetical use case and return semantics are concise yet informative, with no filler or redundant restating of the tool name.
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 two-parameter, read-only comparison tool, the description covers the purpose, usage context, return value shape, ranking logic, tie behavior, and unavailable-side behavior. Combined with complete schema descriptions and an output schema, nothing critical is missing for an agent to select and invoke this 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?
The input schema already provides 100% parameter coverage with clear descriptions for wallet_a and wallet_b, including accepted formats (Solana base58 or Base 0x). The tool description does not add new parameter-level meaning, but the schema fully carries that burden, so baseline 3 is appropriate.
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 identifies a specific operation—comparing two wallets—and clearly states the resource ('two wallets') and the output ('both full score objects' and rank). It also implies the distinguishing use case ('choosing between two candidate providers'), which differentiates it from single-wallet or batch siblings like score_wallet_for_intel and score_wallets_batch.
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 gives clear context: use this tool when you need side-by-side intelligence for exactly two wallets, such as comparing candidate providers. It does not explicitly name alternative tools or state when not to use it, but the 'two wallets' framing and the example make the intended usage unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_x402_resourceDestructiveInspect
One-shot x402 guard. Fetches resource_url, extracts the seller wallet from the 402 accepts
array (prefers Solana network entries), runs TWZRD preflight, and returns a spending decision.
Side effect: a live 402 observation (resource_url, payTo, price) is upserted into the
service catalog when the catalog database is configured; this tool is not read-only.
wash_flagged=true never soft-allows. Unlabeled leftover 0.05 / leftover=0 is not a unit price.
Decision:
"allow" -> proceed only under agent policy. Never when wash_flagged=true.
"warn" -> proceed with caution up to the cap; first paid hop is teaser_url ($0.001 /quick). Optional V7 receipt_url is $0.05.
"block" -> DO NOT PAY. Stop immediately.
"unknown" -> is_x402 == False: no 402 challenge was issued at all, so nothing was
evaluated -- this is NOT a trust verdict. A seller can trivially make
this happen by returning a non-402 status to this probe while charging
through a different path for a real caller. Never treat "unknown" as
a green light; if the caller actually intends to pay this resource_url,
that separate payment path needs its own evaluation.
Hard-stops:
wash_flagged=true never soft-allows (decision=block).
price_usdc is a unit price only when price_kind=exact. Unlabeled leftover 0.05 /
leftover=0 and scheme=upto leftover defaults are not a per-request price.
Revenue path: when decision is "warn", fetch teaser_url first ($0.001 USDC to TWZRD,
GET /v1/intel/quick/{seller}). Optional receipt_url is the $0.05 V7 signed credential.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | HTTP method to use when probing the resource. Default: GET. | GET |
| price_usdc | No | Caller-supplied exact unit price in USDC — overrides a 402 exact quote. Leave unset to use the 402-reported amount when price_kind=exact. Unlabeled leftover 0.05 / leftover=0 is not a unit price. | |
| agent_intent | No | Natural-language description of what the agent intends to purchase. | |
| resource_url | Yes | URL of the x402 resource to evaluate before paying. Will be fetched to extract 402 payment requirements. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The evaluated resource URL. |
| error | No | Error or info message; present on non-402 and degraded paths. |
| is_x402 | No | True if the resource returned HTTP 402 with x402 payment requirements. |
| decision | No | Spend decision: "allow" | "warn" | "block" | "unknown". wash_flagged=true never soft-allows — this field is block. "unknown" means is_x402 is False -- no 402 challenge was issued, so no trust evaluation happened. Never treat "unknown" as a green light. |
| price_kind | No | exact | upto_cap | unknown. upto_cap means price_usdc is not a unit price. |
| price_usdc | No | Quoted unit price in USDC from the 402 response. Null when the accept is scheme=upto / price_kind=upto_cap, or the figure is unlabeled leftover 0.05 / leftover=0 (not a unit price). |
| teaser_url | No | First paid hop: $0.001 score-only teaser URL. |
| receipt_url | No | Optional $0.05 V7 portable receipt URL. |
| trust_score | No | Composite trust signal, 0-100. |
| upsell_usdc | No | Cost of the first paid hop in USDC (0.001 teaser). |
| receipt_usdc | No | Cost of the optional V7 receipt in USDC (0.05). |
| seller_wallet | No | Seller wallet extracted from the 402 accepts array (Solana preferred). |
| max_price_usdc | No | Advertised maximum USDC when price_kind is upto_cap. |
| readiness_card | No | Full readiness card from the preflight evaluation. |
get_claimARead-onlyIdempotentInspect
Read the Vuori Kore Short listing-claim artifact (com.twzrd.shopping.listing_claims/1.1).
Tool twin of the twzrd://claims/vuori-kore resource: what is claimed about this
checkout, by whom, in what state, on what evidence. Verified on every read
(publication signature, artifact digest, schema, evidence binding); a read that
fails any check is refused, never served. `unknown` claims stay unknown. Each claim
carries expires_at; after it, treat the claim as historical. Read-only; this never
starts a payment or checkout.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | Yes | The MCP resource this tool mirrors. |
| text | Yes | The artifact or evidence bundle, byte-for-byte as the resource serves it. Parse it after checking `digest`. |
| digest | Yes | sha256 of the exact bytes in `json`, as bound in the signed publication. |
| artifact_id | Yes | Artifact id of the signed publication that was read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint), the description discloses detailed verification behavior: publication signature, artifact digest, schema, evidence binding, and that a failing read is refused. It also notes that unknown claims stay unknown and that claims carry an expiry. This exceeds the annotation coverage significantly.
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 compact and front-loaded with the core purpose, then adds verification, state behavior, and safety. Each sentence contributes new information; there is no filler or repetition. It is slightly long but appropriate for the complexity of the resource.
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 read tool with an output schema, the description fully covers what the tool does, its safety profile, edge cases (unknown, expired), and verification guarantees. Nothing an agent needs to decide whether to call it 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?
The tool has zero parameters, so the description need not explain any. The schema is trivially covered at 100%. Per calibration, a baseline of 4 applies, and the description adds no parameter-related confusion.
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 identifies the specific artifact (Vuori Kore Short listing-claim), states the resource it twins, and enumerates the information it provides (what is claimed, by whom, state, evidence). It also distinguishes its read-only nature from any payment/checkout actions, making its purpose unambiguous among sibling tools.
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 explicitly states the tool is read-only and never starts a payment or checkout, which is a clear usage constraint. It also explains that unknown claims remain unknown and that after expires_at the claim is historical, providing context on when to rely on the result. However, it does not name alternative tools for comparison, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_counterpartiesARead-onlyIdempotentInspect
Free discovery (capped teaser): the top-N merchants a wallet actually pays, by
event count, with per-edge tx_count / total_usdc / first+last timestamps.
See WHO a counterparty transacts with before trusting it. The list is capped
(default 10, max 25) and `capped`/`total_distinct_merchants` disclose how much
is withheld; the FULL deduped payment graph and numeric edge weights are part
of the paid intel surface (GET /v1/intel/trust/{wallet}). Fail-open.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max counterparties to return (default 10, hard cap 25 - this is a capped teaser). | |
| wallet | Yes | Payer Solana wallet public key (32-44 base58 chars) whose counterparties (merchants paid) to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only on the degraded path. |
| capped | No | True if the full merchant set exceeds the returned list. |
| wallet | No | The payer wallet looked up. |
| returned | No | Number of counterparties returned (<= limit). |
| teaser_note | No | States that the full deduped graph + edge weights are paid. |
| total_events | No | Total observed payment events for this payer. |
| counterparties | No | Capped top-N merchants paid, each with tx_count, total_usdc, first_at, last_at. |
| data_available | No | False when the corpus/DB was unavailable. |
| total_distinct_merchants | No | Total distinct merchants this payer has paid (full, uncapped). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds behavioral traits: it's a capped teaser, returns top-N by event count, includes 'capped' and 'total_distinct_merchants' fields, and mentions 'fail-open'. This adds context about data completeness and potential partial success.
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 well-structured with a clear lead sentence and subsequent details. It is somewhat verbose but contains no wasted sentences. It front-loads the main purpose.
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 has 2 parameters and an output schema, the description is complete. It explains the return format (per-edge details, capped/total fields), notes the paid alternative, and mentions failure behavior ('fail-open'). No critical information 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 baseline is 3. The description adds meaning by clarifying the 'wallet' parameter is a payer and the 'limit' is a cap (teaser). It also provides context about the default and maximum. This adds value beyond the 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 lists top-N merchants a wallet pays, with per-edge details. It uses specific verbs ('discover', 'list') and resources ('merchants', 'wallet'). However, it does not explicitly differentiate from sibling tools like get_merchant_card or get_provider_reputation, though the context suggests it's a counterparty discovery tool.
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 usage guidance: it's a free capped teaser, useful before trusting a counterparty, and notes that the full graph is paid. It implicitly suggests when to use (free discovery) and when not (if full graph needed). It does not explicitly mention alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidenceARead-onlyIdempotentInspect
Read the evidence bundle behind the Vuori Kore Short listing claims.
Tool twin of the twzrd://claims/vuori-kore/evidence resource: canonical_evidence/1
envelopes and capture records. A claim's evidence digest is the RFC 8785 SHA-256 of
its envelope; recompute it to check. Verified with the artifact on every read and
refused on any mismatch. Raw page bytes are not served. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | Yes | The MCP resource this tool mirrors. |
| text | Yes | The artifact or evidence bundle, byte-for-byte as the resource serves it. Parse it after checking `digest`. |
| digest | Yes | sha256 of the exact bytes in `json`, as bound in the signed publication. |
| artifact_id | Yes | Artifact id of the signed publication that was read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, so the description's job is to add behavioral depth, and it does. It discloses that the evidence digest is an RFC 8785 SHA-256 of the envelope, that every read is verified against the artifact, that mismatches cause refusal, and that raw page bytes are not returned. These are non-obvious behaviors an agent would not know from annotations alone.
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 front-loaded with the core purpose and each subsequent sentence adds a distinct, useful fact: resource twin, digest format, verification behavior, and a content limitation. It is somewhat dense with jargon like 'RFC 8785 SHA-256' and 'canonical_evidence/1', but no sentence is wasted.
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 read tool with a rich annotation set and an output schema, the description is remarkably complete. It explains what the tool accesses, how integrity is checked, what happens on mismatch, and what is excluded. An agent has enough information to invoke it correctly and interpret its behavior without further investigation.
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?
With zero parameters and 100% schema coverage, the baseline is 4. The description adds meaning by identifying the exact resource being read (canonical_evidence/1 envelopes and capture records) even though no input parameters are needed, which helps the agent understand what the fixed invocation actually returns.
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 and resource: 'Read the evidence bundle behind the Vuori Kore Short listing claims.' It further distinguishes itself by naming the exact backing resource URI and framing itself as the 'Tool twin' of that evidence resource, which separates it from sibling tools like get_claim that serve the claim itself rather than the evidence bundle.
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 intended use is implied: call this tool when you need the evidence bundle behind the claim, and it does state a limitation ('Raw page bytes are not served'). However, it never explicitly names an alternative or states when not to use it, so the guidance relies on inference rather than a clear routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_facilitator_footprintARead-onlyIdempotentInspect
Free discovery: which x402 facilitators a payer has settled through, and how many.
unique_facilitators = 1 is a thin/captive agent (locked to one rail); breadth
across facilitators indicates a more established cross-rail agent. Returns the
facilitator_ids list plus tx/merchant context. Fail-open: a DB gap returns
data_available=false rather than erroring.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Solana wallet public key (32-44 base58 chars) to look up its x402 facilitator footprint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only on the degraded path. |
| found | No | True if the wallet has observed corpus activity. |
| wallet | No | The wallet looked up. |
| tx_count | No | Total observed paid calls. |
| last_seen | No | ISO timestamp of last observed activity. |
| first_seen | No | ISO timestamp of first observed activity. |
| data_available | No | False when the corpus/DB was unavailable. |
| facilitator_ids | No | The facilitator identifiers observed for this payer. |
| unique_merchants | No | Distinct merchants paid. |
| unique_facilitators | No | Distinct x402 facilitators this payer has settled through (1 = thin/captive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and idempotentHint. The description adds beyond these by specifying fail-open behavior (returns data_available=false on DB gap) and the exact data returned (facilitator_ids list plus tx/merchant context), which are not covered by annotations.
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 concise with four sentences covering purpose, interpretation, and behavioral details. It is front-loaded with the main purpose and avoids fluff, though could be slightly more compact.
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 has only one parameter and an output schema (exists but not shown), the description provides sufficient context: purpose, interpretation hints, and fail-open behavior. It is complete for the tool's complexity.
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 schema already fully describes the wallet parameter (format, base58). The description does not add any additional parameter semantics, so baseline score of 3 applies.
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 it provides discovery of which x402 facilitators a payer has settled through and their count, with a specific verb (discovery) and resource (facilitator footprint). It distinguishes from sibling tools like get_x402_directory by focusing on a specific payer's settled facilitators.
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 gives interpretive guidance (e.g., unique_facilitators = 1 indicates a thin/captive agent) and contextual hints for when to use the tool (to assess cross-rail activity). However, it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_merchant_cardARead-onlyIdempotentInspect
Free merchant card: observed inbound payment-graph quality around a Solana
receive wallet.
Dual input (PR-3): pass ``wallet`` and/or ``resource_id``. Resource resolves via
the first-party registry (TWZRD seed) to a pay_to, then the same graph card.
Does NOT claim service quality (resource_listing_only / catalog_listing_only).
HTTP twin: GET /v1/intel/merchant_card/{wallet_or_resource_id}.
Compact (default) includes observed_at, stale, corpus_complete_day,
corpus_age_days. Catalog services stay behind full=true.
wash_flagged is tri-state: true (flagged) | false (evaluated clean) |
null (never evaluated - NOT clean). wash_flagged=true never soft-allows
(next_action.decision=refuse; no warn/allow/quick). Unlabeled leftover
0.05 / leftover=0 is not a unit price; cheapest_listed_price_usdc omits
leftover and upto_cap amounts. Route on next_action.decision
(refuse | insufficient_evidence | no_negative_signal); the card is
down-only and never returns allow. `reason` carries the specific
finding (e.g. a soft wash risk collapsed into "refuse", or a corpus
outage collapsed into "insufficient_evidence") when the 3-value
decision alone is not enough context.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | If true, include catalog services. Default is the compact decision surface. | |
| wallet | No | Receive wallet (x402 pay_to / merchant pubkey). Observed payment-graph card only — not a business, demand, or identity attestation. | |
| resource_id | No | Optional registry resource_id (HTTP path template or mcp:tool). Resolved to merchant_wallet via PR-3 seed; claim resource_listing_only. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnly/idempotent hints are backed and heavily extended by the prose: the card is down-only and never returns allow, wash_flagged is tri-state with refusal behavior, and reason collapses edge cases into the three decision values. This gives the agent actionable knowledge about the output that annotations alone cannot.
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 dense and long, but front-loaded with the purpose and inputs; decision semantics and special-value caveats are grouped at the end. It could be trimmed, but nearly every sentence carries domain-specific operational information rather than 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 an output schema exists and the tool is a read-only card, the description is complete: input resolution, default vs full behavior, key output fields, decision routing, tri-state flag semantics, and caveats about price fields are all covered. There are no obvious gaps that would prevent correct invocation.
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 schema already documents all three parameters at 100% coverage, and the description adds clarifying behavior on top: dual wallet/resource_id resolution via PR-3, full vs compact output surfaces, and what full=true does with catalog services. It does not add much syntax-level detail, but the extra meaning is useful.
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 first line names the exact resource ('merchant card') and the exact data observed ('inbound payment-graph quality around a Solana receive wallet'), so an agent immediately knows what this tool computes. It also adds negative scope ('Does NOT claim service quality') and a decision surface, distinguishing it from service-quality or business-attestation siblings.
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 gives clear invocation context: pass wallet and/or resource_id, default is compact, full=true pulls catalog services, and consumers should route on next_action.decision. It does not name sibling tools or provide an explicit when-not-to-use statement, so it stops short of full alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poec_scoreARead-onlyIdempotentInspect
Free preview: PoEC v0 (Proof of Economic Contribution) for a payer wallet,
computed from the same observed x402 snapshot score_wallet_for_intel returns.
poec_score = log10(1 + observed USDC sent) x success_quality x diversity
x wash_cleanliness, behind hard floors (>=5 paid calls, >=3 distinct
counterparties, wash_factor >= 0.5, not single-counterparty, wash_flag
clean). Any failed floor, or an unobservable corpus, scores 0.0 with
floors_passed=false - the floors fail closed, never open. wash_factor is a
cleanliness multiplier (1.0 = clean) and is never inverted.
Honesty contract: `claimable` is ALWAYS false. Volume here is
corpus-observed, not a payout unlock. `success_quality` comes from the
payer join onto signed `receipt_settlement_leaves` (0211); if that join
is unobservable, `success_rate` stays in evidence_gaps and the score
reads 0.0. What this surface already shows honestly is the floor filter
(eligible_v0) and every component the score is built from. Self-reported
settlements go through submit_contribution_claims.
Base (EVM) 0x wallets are scored from the relayer-attributed x402_base_daily
rollup (90d) with the same shape, but no wash/sybil graph exists for Base
payers yet, so their wash_flag reads "unknown" (never "clean"), the wash
floor stays closed, and poec_score stays 0.0 regardless of real volume.
A wallet the corpus could not observe at all returns `error` set; on that
path any real observed Base volume is attached under `base_observed`.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Payer wallet (Solana base58 or Base 0x) to score for Proof of Economic Contribution. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | ISO timestamp the snapshot was scored at. |
| error | No | Present only when the wallet could not be observed at all (e.g. not a valid Solana pubkey, upstream unavailable) -- distinguishes 'not scoreable' from a genuinely inactive wallet, both of which otherwise read as poec_score 0.0. |
| wallet | No | The scored payer wallet. |
| claimable | No | Always false: volume is corpus-observed, not facilitator-attested or joined to a settlement leaf. |
| wash_flag | No | "clean" | "single_counterparty" | "unknown", from the intel snapshot. |
| components | No | observed_volume, success_quality, diversity, hop_multiplier, wash_cleanliness, solana_boost. |
| paid_calls | No | Observed x402 paid calls sent. |
| poec_score | No | log10(1 + observed USDC sent) x success_quality x diversity x wash_cleanliness; 0.0 when any floor fails. |
| eligible_v0 | No | Floors passed and observed volume > 0. A floor filter, not an unlock. |
| success_rate | No | Signed receipt_settlement_leaves for this payer / observed paid_calls, capped at 1.0. None = join unobservable; 0.0 = join ran, zero attested leaves. Never implies claimable. |
| base_observed | No | Present only for a Base (EVM) wallet TWZRD has independently observed paid calls from: real paid_calls/total_usdc/distinct_counterparties (90d, high-confidence, x402_base_daily). Informational only -- no wash/sybil evaluation exists for Base payers yet, so poec_score and floors_passed are unaffected by this field. |
| evidence_gaps | No | Inputs with no live source. Empty plus success_rate 0.0 means the 0211 join ran and this wallet has no signed settlement leaf — not a missing join. |
| floors_passed | No | All hard floors held: >=5 paid calls, >=3 distinct counterparties, wash_factor >= 0.5, not single-counterparty, wash_flag clean, corpus observable. |
| score_version | No | PoEC contract version, e.g. "poec_v0". |
| source_intel_score | No | intel_score of the underlying snapshot. |
| source_effective_score | No | effective_score of the underlying snapshot. |
| distinct_counterparties | No | Distinct counterparties observed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is highly transparent about edge-case behavior, including returning an error for unobserved wallets, Base wallets being marked wash_flag 'unknown', floors staying closed, and scores being 0.0 in those cases. This goes well beyond the readOnlyHint and idempotentHint annotations without contradicting them.
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 heavily repetitive, restating the same floor/failure semantics multiple times with nearly identical phrasing (e.g., 'floors fail closed, never open' and 'never inverted'). While the structure is logical, the redundancy makes it less concise than it should be.
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?
Even though an output schema exists and return values need not be explained, the description covers important contextual edge cases such as unobserved wallets, Base-specific limitations, and the error path. It is complete enough for an agent to understand when and how the tool behaves.
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 already fully describes the wallet parameter as a payer wallet with Solana base58 or Base 0x formats, so the description adds little new parameter-level meaning. Since schema coverage is 100%, the baseline score of 3 is appropriate.
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 that the tool scores a payer wallet for Proof of Economic Contribution and explicitly references the same x402 snapshot returned by score_wallet_for_intel, helping distinguish it from that related tool. It also mentions the alternative path for self-reported settlements via submit_contribution_claims.
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 gives usable guidance by contrasting this tool with score_wallet_for_intel's snapshot and explicitly routing self-reported settlements to submit_contribution_claims. It could more explicitly state when to choose this tool over other siblings, but the main alternatives are addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provider_reputationARead-onlyIdempotentInspect
Free discovery: corpus-backed SELLER reputation for a merchant/provider wallet.
Answers "is this provider organic, narrow, or a wash fleet?" from the merchant's
inbound payment graph over the last 90 days: unique payers, repeat-payer %,
heavy-fleet revenue concentration, captive-payer % (onboarding-sink proxy), and
a scripted-fleet uniformity signal, and top_payer_tx_pct (captive
concentration). Returns wash_label + reputation tier + wash_flagged
(tri-state: true | false | null; null = never evaluated, not clean).
Complements score_wallet_for_intel (payer side) with the seller side.
wash_flagged=true never soft-allows (buyer refuse; preflight block). Fail-open:
a DB gap returns wash_label/tier "unknown" AND wash_flagged=null (plus
wash_confidence) - an unevaluated verdict, never a clean one. This is the free
seller signal. First paid hop is GET /v1/intel/quick/{wallet} (0.001 USDC).
Optional V7 renorm + signed receipt is GET /v1/intel/trust/{wallet} (0.05 USDC).
| Name | Required | Description | Default |
|---|---|---|---|
| merchant | Yes | Seller/merchant Solana wallet public key (the pay_to address) to score on inbound corpus reputation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Degraded-path reason (e.g. db_unavailable, no_corpus_inbound). |
| merchant | No | The seller/merchant Solana wallet looked up. |
| total_tx | No | Total inbound paid calls (90d). |
| wash_label | No | Seller class: "provider_organic_broad" | "provider_mixed" | "provider_narrow_or_unknown" | "wash_shaped" | "fleet_dominated" | "unknown". |
| wash_flagged | No | true = fleet/wash/captive/scripted-fleet signals tripped — never soft-allow (refuse / preflight block); false = evaluated and clean; null = never evaluated (unknown - do NOT coerce to false). |
| score_version | No | provider_reputation_v1. |
| unique_payers | No | Distinct payers observed paying this merchant (90d). |
| wash_confidence | No | "full" when self+reciprocal+ring ran; "base_2cycle" when the Base 2-cycle overlay ran but the live 3-cycle ring query did not return (not a full screen); "partial_inbound_only" when the circular-flow overlay did not run. |
| avg_tx_per_payer | No | Average inbound tx per payer. |
| repeat_payer_pct | No | Percent of payers who paid more than once. |
| top_payer_tx_pct | No | Percent of inbound settles supplied by the single largest payer (captive concentration; >=90 with volume floor flags wash; null = not computed). |
| captive_payer_pct | No | Percent of payers who pay ONLY this merchant (captive/onboarding-sink proxy). |
| heavy_fleet_tx_cv | No | Tx-count uniformity across heavy-fleet payers; near-zero = scripted sybil fleet. |
| total_revenue_usd | No | Total inbound USDC revenue (90d). |
| heavy_fleet_payers | No | Count of heavy single-counterparty fleet payers. |
| heavy_fleet_revenue_pct | No | Percent of revenue from heavy-fleet payers. |
| provider_reputation_tier | No | Tier: "tier_a_provider" | "tier_b_provider" | "tier_tail" | "tier_wash_demo" | "unknown". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses critical runtime behavior: wash_flagged is tri-state where null means 'never evaluated, not clean', fail-open behavior on DB gaps returns an 'unevaluated' verdict rather than a clean one, and wash_flagged=true blocks preflight/buyer refusal. This is exactly the kind of non-obvious behavior an agent needs.
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 dense but purposeful: purpose, output semantics, fallback behavior, sibling contrast, and paid alternatives are all packed in without fluff. A few parenthetical asides make it slightly run-on, but every sentence earns its place and the core purpose is front-loaded.
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 single-parameter, read-only, idempotent tool with an output schema, the description is complete. It covers call semantics, failure behavior, pricing, and the relationship to the paid API, leaving no material gap in what an agent needs to invoke or interpret this 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?
The schema already documents the sole parameter 'merchant' with 100% coverage, so the description does not need to carry much weight. It adds the useful nuance that the merchant is the pay_to address scored on 'inbound corpus reputation', but no new format or constraints 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 opens with a specific verb and resource: 'free discovery: corpus-backed SELLER reputation for a merchant/provider wallet.' It names the exact questions answered and the computed signals (wash_label, reputation tier, wash_flagged), and explicitly differentiates from score_wallet_for_intel as the seller-side complement to the payer side.
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 clearly frames this as the free seller signal, states that it complements score_wallet_for_intel, and names the paid upgrade paths with prices. It does not explicitly state when NOT to use it relative to siblings like is_wash_fleet or low_level_preflight, so exclusion guidance is slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publicationARead-onlyIdempotentInspect
Read the signed publication record behind the current Vuori Kore Short claims.
Tool twin of the twzrd://claims/vuori-kore/publication resource. Returns the
Ed25519 publication record, the verify key and its sha256 fingerprint. Verify the
signature over the signed message, then compare sha256 of each get_claim /
get_evidence text with artifact_digest / evidence_digest. With the key fingerprint
pinned from a second source (the published fingerprint in the connector packet),
that check does not trust this server; without it, it shows only that the record
and the served bytes agree. The signature admits bytes to the resource; it is not
a merchant attestation. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | Yes | The MCP resource this tool mirrors. |
| text | Yes | claim_publication_proof/1 JSON: the signed publication record, verify_key, key_fingerprint and the signed-message construction. |
| digest | Yes | sha256 of the exact bytes in `text` (the proof document itself). |
| artifact_id | Yes | Artifact id named by the signed publication record. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, yet the description adds substantial disclosure of the return shape (Ed25519 record, verify key, sha256 fingerprint) and, unusually, the trust model: the check only proves record/bytes agreement unless the fingerprint is pinned from a second source, and the signature is explicitly not a merchant attestation. Auth/error behavior is unstated, keeping it below a 5.
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 purpose, and each sentence carries verification or trust-model information rather than filler. The verification instructions are dense and slightly meandering, but nothing is truly wasted.
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 an output schema present, return values need not be explained, yet the description still frames what comes back and how to use it. For a zero-param read tool, nothing an agent needs in order to call 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?
The tool takes zero parameters, so per the baseline a 4 applies. The description does name fields from sibling tools (artifact_digest, evidence_digest) that contextualize the comparison, but there is nothing parameter-level for this tool to document.
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: reads the signed publication record behind the current Vuori Kore Short claims. Names its relationship to the twzrd://claims/vuori-kore/publication resource and to the get_claim/get_evidence siblings, so an agent can place it precisely among the claim-verification tools.
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?
Explains what to do with the output (verify the signature, then compare sha256 of get_claim/get_evidence text against artifact_digest/evidence_digest), which implicitly positions it as the anchoring step before those comparisons. It stops short of an explicit when-to-use vs when-not statement, but the workflow context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_readiness_card_toolARead-onlyIdempotentInspect
PRIMARY free pre-spend gate (advisory). Pass seller_wallet OR resource_name.
wash_flagged=true never soft-allows. Unlabeled leftover 0.05 / leftover=0 is not a unit price.
When to use: before any x402 payment to a seller/resource.
When not to use: after you already decided to refuse; use verify_receipt for signed receipts only.
Pricing: free. Result is advisory (buyer policy still applies).
Hard-stops:
wash_flagged=true never soft-allows (decision=block / do_not_pay; no warn/allow/quick).
Unlabeled leftover 0.05 / leftover=0 is not a unit price; read price_kind.
Caller-supplied or scheme/price_kind=exact 0.05 stays a unit price.
Decision semantics (top-level, no nesting via MCP):
decision=block / recommended_action=do_not_pay -> DO NOT PAY.
decision=warn / recommended_action=proceed_with_cap -> pay only up to maximum_recommended_spend_usdc.
decision=allow / recommended_action=proceed_for_small_spend -> proceed under agent policy (no free-tier cap).
next_action (enrollment handoff — do not stop after free card):
next_step_type / payment_required / executable / command describe an
optional next step. A host may use command only under its own policy.
Never paste path templates (:pubkey / {pubkey}) as seller_wallet.
Also returns reason_codes[], confidence, model_version, decision_envelope.
No counterparty named (seller_wallet missing / a template / not a wallet, and
no resource_name or resource_url): decision=block, trust_score null, score null,
null_reason=no_subject, reason_codes NO_COUNTERPARTY (+ PLACEHOLDER_SELLER_WALLET),
seller_wallet_rejected echoes what you sent. That is an input bug, not a seller
verdict: fix the input and re-run.
trust_score is a free heuristic, NOT the full corpus.
Next: on allow/warn for material spend, next_action.command is the
optional AgentCash paid-trust or AutoGate install string, then verify_receipt
on the signed V7 receipt.
Optional: twzrd_watch_add for re-check after recheck_after_unix.
Additive: top-level aop_bind program registry (evidence hierarchy) when enabled;
never mutates decision / can_spend.
| Name | Required | Description | Default |
|---|---|---|---|
| price_usdc | No | Caller-supplied exact unit price in USDC. Leave unset unless you have an exact quote. Unlabeled leftover 0.05 / leftover=0 is not a unit price. | |
| agent_intent | No | Natural-language intent describing the planned paid action. | |
| buyer_wallet | No | Buyer's Solana wallet public key used for spend-context checks. | |
| resource_url | No | Canonical endpoint URL for the resource, if available. | |
| resource_name | No | Provider or resource label in a marketplace (for example marketplace:agent-name). Provide this OR seller_wallet. | |
| seller_wallet | No | Seller's Solana base58 wallet (32-44 chars) for the listing or endpoint. Provide this OR resource_name. CRITICAL: never pass OpenAPI templates (:pubkey, {pubkey}, {seller_wallet}, SELLER_WALLET, PAY_TO_WALLET) — use accepts[].payTo from a 402 challenge. | |
| queried_pubkey | No | Consumer pubkey, echoed on output when provided (attribution only). | |
| marketplace_score | No | Optional upstream marketplace trust score (0-100) to blend into preflight context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | ISO-8601 of data_as_of_unix. Null when the subject was never measured. |
| basis | No | Typed evidence entries {class, kind, source, observed_at, weight, ...}; observed_at is null with observed_at_null_reason on an honest-null card. |
| proof | No | Proof block: v5_receipt_upsell_available, has_v5_receipts, receipt_endpoint, known_seller_wallets, provider_reputation. |
| score | No | Draft-02 score 0..1, or null when no evidence was measured (see null_reason). An assessor never fabricates this; the legacy trust_score keeps a cautious default for old consumers. |
| stale | No | True when the seller's last settle is older than 7 days, or when there is no settle and the ledger head is older than 7 days or missing. Warning only; not a wash refuse. |
| caveats | No | Risk factors and the always-on trust_score_basis caveat. |
| version | No | Card schema version, e.g. readiness_card_v1. |
| category | No | Resource category (e.g. defi, defi_intelligence). |
| decision | No | Spend decision: "allow" | "warn" | "block". wash_flagged=true never soft-allows — this field is block (no warn/allow/quick). |
| can_spend | No | Price-aware proceed flag (not 'true only on allow'). block → false; allow → true (unless known price exceeds free-tier ceiling); warn → true only when price_usdc is known and fits under recommended_cap_usdc, else false. Free card is advisory; AutoGate on the pay path enforces. |
| issued_at | No | ISO-8601 card issue time. |
| expires_at | No | ISO-8601 card validity end (an expired card is an absent card). |
| next_fixes | No | Actionable steps the provider can take to raise trust. |
| price_kind | No | exact | upto_cap | unknown. upto_cap means price_usdc is not a unit price. |
| price_usdc | No | Quoted unit price in USDC. Null when price_kind is upto_cap or the figure is unlabeled leftover 0.05 / leftover=0 (scheme=upto leftover defaults, including stale 0.05, are not a unit price). |
| null_reason | No | Why score is null: "unknown_subject" | "insufficient_signal" | "evaluation_failed" | "no_subject" (no counterparty was named at all). Null when scored. |
| observed_at | No | ISO-8601 of the seller's last settle, else the ledger head day. Null when neither exists. Not card-build time. |
| paid_teaser | No | First paid hop: $0.001 score-only teaser (/v1/intel/quick/{wallet}). |
| trust_score | No | Composite trust signal, 0-100. |
| ledger_basis | No | Ledger head basis, for example exact or mixed_estimated. |
| recheck_hint | No | One-line hint: re-verify via GET /v1/intel/trust/{pubkey}. Do not gate solely on recheck_after_unix -- it is unsigned on a paid receipt; use your own max_age_seconds. |
| resource_name | No | Resolved resource/provider label. |
| seller_wallet | No | Seller Solana wallet, if known. |
| max_price_usdc | No | Advertised maximum USDC when price_kind is upto_cap. Not a unit price. |
| paid_deep_dive | No | Optional Path A V7 receipt surface (/v1/intel/trust/{wallet}). |
| queried_pubkey | No | Consumer pubkey echoed when provided on input (attribution only; not a settle gate). |
| staleness_days | No | Recommended re-check cadence in days (7 high-quality, 3 partial/stale). ADVISORY AND UNSIGNED on a paid receipt. |
| corpus_age_days | No | Whole days since corpus_complete_day. Null when the ledger head is missing. |
| data_as_of_unix | No | Seller last-activity unix when known. Null on unknown_subject / insufficient_signal / evaluation_failed — never card-build time. Card TTL is recheck_after_unix. |
| paid_price_usdc | No | Price of the optional V7 receipt in USDC (0.05). |
| root_provenance | No | WZRD protocol root metadata (for deposit/claim/settle resources): latest_root_seq, dataset_hash (if known), leaf_version (GLOBAL_V5), verification_status, onchain_match (null = call verify_root_inputs before on-chain action), market_velocity (when the market data service is configured, for cross-referencing on-chain velocity/attention signals with the root's attention_bonus). Auto-populated on protocol keywords/mints/categories. Complements the verify_root_inputs tool for independent GLOBAL_V5 leaf + dataset + sorted-pair root recompute from public leaves. Null/absent on non-protocol resources. |
| paid_teaser_usdc | No | Price of the first paid hop in USDC (0.001). |
| score_decay_model | No | step:<=7d=1.0,<=30d=0.8,<=90d=0.5,>90d=0.25 (the recency decay on paid scores). ADVISORY AND UNSIGNED on a paid receipt. |
| trust_score_basis | No | Provenance of the score; ALWAYS the free heuristic, never the paid corpus model. |
| recheck_after_unix | No | UNIX timestamp after which this intel is stale. ADVISORY AND UNSIGNED on a paid receipt -- it is outside the signed leaf, so a receipt holder can extend it and the receipt still verifies. Enforce your own policy via verify_receipt(max_age_seconds=...), which checks the SIGNED preimage.timestamp_unix. |
| corpus_complete_day | No | Ledger head complete day (YYYY-MM-DD) from x402_ledger_head. Null when that row is missing. Not the 2026-07-09 copy floor. |
| ledger_exact_through | No | Last day of exact event capture on the ledger head. Later days may be estimates. |
| seller_wallet_rejected | No | Set when the seller_wallet you sent was discarded: {"value", "reason": "template_placeholder" | "not_a_wallet_address"}. With no resource_name/resource_url the card is decision=block, null_reason=no_subject, reason_codes NO_COUNTERPARTY (+ PLACEHOLDER_SELLER_WALLET). Fix the input; this is not a verdict about any seller. |
| corpus_complete_through_unix | No | Behavioral corpus coverage watermark, or null when none is plumbed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (readOnlyHint, idempotentHint): it documents the block/warn/allow decision mapping, hard-stop rules, the no-counterparty input-bug path, that trust_score is a free heuristic not the full corpus, and that the aop_bind registry is additive and never mutates decision/can_spend. This is rich behavioral context an agent needs before paying.
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 primary role and uses labeled sections, but it is long and prone to repetition – the 'wash_flagged=true never soft-allows' and template-rejection rules each appear more than once. The density of edge-case bullets makes it harder to scan than necessary for a free advisory check.
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 an output schema present, return values need not be explained, yet the description still covers decision semantics, next_action handoff, null_reason=no_subject behavior, and the additive aop_bind block. Nothing critical for correct invocation or interpretation of the result appears 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 already 100%, so the baseline is 3. The description adds genuine value beyond the schema: 'Pass seller_wallet OR resource_name' as the routing rule, the price_kind distinction that unlabeled 0.05 is not a unit price, and the explicit ban on passing path templates as seller_wallet. Still, most per-parameter detail lives in 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?
States a specific role: 'PRIMARY free pre-spend gate (advisory)' that returns a decision card before x402 payments. It also names a sibling it is not ('use verify_receipt for signed receipts only'), which helps disambiguate. However the core noun ('readiness card') is never plainly defined, so an agent must infer the primary deliverable from the decision-semantics block rather than a clean one-line purpose.
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: before any x402 payment to a seller/resource' and 'When not to use: after you already decided to refuse; use verify_receipt for signed receipts only.' It names the alternative tool and the condition selecting it, plus follow-up routing (verify_receipt on the signed receipt, twzrd_watch_add for re-checks).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shopping_checkARead-onlyIdempotentInspect
Read the free Agent Shopping Check for Vuori Kore Short, Ink, US.
Same report as https://twzrd.xyz/shopping-check/vuori-kore/: product
context, advertised claims with exact sources and observation times,
unverified purchase completion and other gaps, and three editorial
merchant fixes. Built from the verified signed publication on every read.
Expired observations are historical. Never pays or starts checkout.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds real context beyond them: the report is free, is built from a verified signed publication on every read, expired observations are treated as historical, and it never starts checkout. These extras usefully set expectations about freshness and provenance.
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 then a compact enumeration of contents and behavioral constraints. It is somewhat dense and prose-heavy but every sentence carries information; nothing is redundant 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?
An output schema exists, so return values need not be spelled out, yet the description still summarizes them. Combined with the provenance, freshness, and no-checkout details, the definition is complete enough for an agent to call it correctly; only an explicit sibling-routing rule 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?
The tool takes zero parameters, so there are no argument semantics to explain; per the rubric a 0-param tool gets a baseline of 4. The description does not need to compensate for any schema gap here.
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 (Read) and a precise resource (Agent Shopping Check) scoped to a named product (Vuori Kore Short, Ink, US). The description enumerates the report's contents (product context, advertised claims, gaps, merchant fixes), so an agent knows exactly what artifact this returns. It is clearly distinguishable from siblings like get_publication or get_claim.
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?
Usage is only implied: the agent can infer this is a read-only report fetch and that 'Never pays or starts checkout' marks a boundary, but there is no explicit when-to-use, when-not, or named alternative among the many sibling tools (get_publication, get_claim, evaluate_x402_resource). No routing guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solana_market_statusARead-onlyIdempotentInspect
Health probe for the Solana Market API data backend.
Call this to gate or degrade gracefully BEFORE the other get_solana_market_*
tools: it does a short-timeout hit on the data service and reports whether it
is reachable, so an agent can tell "market has no data" from "service is down"
without failing a real query.
Free discovery tool. When the market data service exposes /status, the response
includes prod_key_configured, data_first_available, and an actionable note
describing what to configure for full on-chain visibility.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| score | No | Normalized velocity score 0.0-1.0. |
| trend | No | Velocity trend: rising | stable | declining. |
| detail | No | Human-readable status or error detail. |
| available | No | True if the Solana Market data service responded. |
| velocity_rank | No | Velocity rank from market signals (higher better). |
| market_velocity | No | Full velocity payload when present (rank/trend/score/last_updated). Populated into ReadinessCard.root_provenance.market_velocity for WZRD protocol resources. |
| base_url_configured | No | Whether the market data-service base URL is explicitly configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds significant behavioral context: short-timeout hit, reports reachability, and mentions response fields (prod_key_configured, data_first_available, actionable note), which goes well beyond the annotations.
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 concise (5 sentences) and front-loaded with the key purpose. Every sentence adds value, though minor tightening could be possible.
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 zero parameters and an existing output schema, the description fully explains the tool's purpose, usage guidance, and behavioral details. It is complete for the agent to decide when and how to use 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?
There are zero parameters, so baseline is 4. The description does not need to add parameter info; it correctly focuses on the tool's purpose and 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 clearly states the tool is a health probe for the Solana Market API data backend, using specific verb+resource ('Health probe') and explicitly distinguishes it from sibling tools by advising to call it before other get_solana_market_* tools.
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 tells when to use this tool ('Call this to gate or degrade gracefully BEFORE the other get_solana_market_* tools') and provides context about being a free discovery tool, giving clear guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_intel_agentsARead-onlyIdempotentInspect
Leaderboard of observed payer wallets in the x402 settlement graph, each
with its intel score. This is behavioral corpus research, not identity
proof or evidence that the wallet is a TWZRD customer.
Ranks by the wash-discounted effective_score (single-counterparty fleets are
demoted, not hidden) with a deterministic tiebreaker. Set min_paid_calls to
suppress one-shot wallets and max_days_since_last to suppress dormant ones.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of ranked payer wallets to return (default 10). | |
| min_paid_calls | No | Filter out wallets with fewer than this many observed paid calls (default 0 = no filter). Use to get credible *active* counterparties, not a raw dump. | |
| max_days_since_last | No | Only include wallets active within this many days (default null = no recency filter). Use e.g. 14 to exclude dormant or historical payers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of rows returned. |
| error | No | Present only on the degraded path. |
| agents | No | Ranked agent rows, each with intel_score, effective_score, wash fields, and rank. |
| score_model | No | Self-describing scoring contract. |
| score_version | No | Scoring contract version. |
| data_available | No | False when the corpus/DB was unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations (readOnlyHint, idempotentHint) by explaining the ranking mechanism: 'Ranks by the wash-discounted effective_score (single-counterparty fleets are demoted, not hidden).' This reveals important behavioral context for interpreting 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?
The description is concise (three sentences), front-loads the main purpose, and avoids extraneous information.
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 simplicity (3 optional parameters, output schema exists), the description covers purpose, ranking logic, parameter intent, and a disclaimer about the data's nature. It is complete for effective usage.
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's parameter guidance ('suppress one-shot wallets', 'suppress dormant ones') largely repeats the schema descriptions, adding minimal new value.
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 it returns a 'Leaderboard of observed payer wallets in the x402 settlement graph, each with its intel score.' This distinguishes it from sibling tools like score_wallet_for_intel (single wallet) and get_counterparties (different aspect).
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 guidance on parameter usage: 'Set min_paid_calls to suppress one-shot wallets and max_days_since_last to suppress dormant ones.' It also includes a disclaimer about the nature of the data. However, it does not explicitly state when to use this tool versus alternatives like score_wallet_for_intel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_x402_directoryARead-onlyIdempotentInspect
Wash overlay on ingested PayAI/CDP/Agentic listings (PayAI not_indexed).
Prefer HTTP GET /v1/intel/resources for the resource join SOT (callable URL +
discovery claim listed|live_402 + settlement reputation on pay_to). That
surface is HTTP-only. Use this tool when you need
the ingested listing overlay indexed by payTo. Not GET /v1/intel/bazaar/offers
(TWZRD Bazaar catalog) and not 402 extensions.bazaar.
Solana wash overlay is the only wash graph. Base listings additionally
carry high-confidence EIP-3009 corpus membership from x402_base_daily;
they remain wash_unknown. Polygon listings carry wash_unknown.
Query params — flagged_only, limit, source — mirror GET /v1/intel/x402-directory.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max directory rows to return (1-500). | |
| source | No | Source filter: payai_bazaar, cdp_bazaar, agentic_market, or None for all. | |
| flagged_only | No | Return only wash-flagged listings. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description is consistent with those. It adds meaningful behavioral context beyond the annotations: the PayAI surface is not_indexed, 'Solana wash overlay is the only wash graph,' Base listings only carry EIP-3009 corpus membership yet 'remain wash_unknown,' and Polygon listings 'carry wash_unknown.' This flags data-coverage limitations an agent must know before trusting wash-flag 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?
The description is dense but front-loaded: purpose first, then alternative routing, then data caveats, then params. Every sentence earns its place. The only knock is heavy domain jargon (wash overlay, SOT, not_indexed, EIP-3009 corpus, wash_unknown), which trades readability for compactness.
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 output schema (return shape covered), annotations (safety profile covered), and 100% param coverage, the description fills the remaining gaps well: when to use it, what it is not, and chain-specific wash-coverage caveats. The main residual gap is that 'mirror GET /v1/intel/x402-directory' assumes external knowledge of an HTTP surface the agent may not have, though the output schema mitigates this.
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 all three parameters (limit range 1-500, source filter values, flagged_only semantics). The description only adds a cross-reference that the params 'mirror GET /v1/intel/x402-directory,' which is marginal. Per the rubric, baseline 3 is correct since the schema carries the load.
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 states a specific resource and scope: a wash overlay on ingested PayAI/CDP/Agentic listings, retrieved 'when you need the ingested listing overlay indexed by payTo.' It explicitly distinguishes itself from GET /v1/intel/resources (resource join SOT), GET /v1/intel/bazaar/offers (TWZRD Bazaar catalog), and 402 extensions.bazaar, so an agent can route correctly without opening schemas.
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?
Usage guidance is explicit and contrastive: 'Prefer HTTP GET /v1/intel/resources for the resource join SOT' (with the reason: callable URL + discovery claim + settlement reputation), then 'Use this tool when you need the ingested listing overlay indexed by payTo,' and 'Not GET /v1/intel/bazaar/offers... and not 402 extensions.bazaar.' When-to-use, when-not-to-use, and the preferred alternative are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_wash_fleetARead-onlyIdempotentInspect
Free discovery: cheap circular-flow (wash) check for a payer wallet.
Returns the CATEGORICAL classification (clean / self_pay / reciprocal /
self+reciprocal), an is_circular bool, and the observed event counts +
distinct_merchants from the wallet's corpus edges. Use as a fast Sybil/wash
gate before trusting a counterparty.
Accepts a Solana public key or a Base/EVM address. On Base the signal reads
the high-confidence x402 rollup only, and 3-cycle ring detection does not run
(Solana-only precomputed matview), so ring_events=0 there means NOT EVALUATED,
never "no rings observed".
Fail-open: a DB gap returns classification "unknown". The numeric wash discount
(wash_factor / wash_ratio) and the full renormalized model stay paid — they are
NOT returned here.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Wallet to check for circular-flow / wash behavior: a Solana public key (32-44 base58 chars) or a Base/EVM address (0x + 40 hex). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | No | Which corpus answered: "solana" or "base". Base reads the high-confidence x402 rollup only. |
| error | No | Present only on the degraded path. |
| reason | No | Degraded-path reason, if any. |
| wallet | No | The wallet checked. |
| is_circular | No | True if any self-pay or reciprocal (2-cycle) flow was observed. |
| ring_events | No | Events forming a 3-cycle ring. Meaningless unless ring_evaluated is true: 0 with ring_evaluated false means NOT LOOKED FOR, not none found. |
| self_events | No | Events where the wallet paid itself. |
| total_events | No | Total observed payment events. |
| classification | No | Circular-flow class: "clean" | "self_pay" | "reciprocal" | "self+reciprocal" | "unknown". |
| ring_evaluated | No | True only when the ring axis actually ran for this wallet: the precomputed Solana ring aggregate was read, or the live Base 3-cycle query returned. False when the ring lookup failed or the Solana wallet has no aggregate row yet - in both of which ring_events=0 means not evaluated, never none found. |
| reciprocal_events | No | Events forming a 2-cycle (counterparty also pays this wallet). |
| distinct_merchants | No | Distinct merchants this wallet paid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds critical behavioral details beyond these: fail-open DB gap returns 'unknown', and Base-specific limitation where ring_events=0 means NOT EVALUATED. This transparently discloses edge cases and platform differences, going well beyond annotation coverage.
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 purpose and then organized behavioral details. Each sentence adds value, no redundancy. The structure flows logically from what it does, to platform caveats, to what is not returned, making it efficient and scannable.
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?
Output schema exists, so return format is covered. The description covers edge cases (DB gap, Base behavior), what is not returned, and usage context. It gives an agent all necessary information to decide when to call and what to expect, with no missing critical details.
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 covers 100% of parameter details (wallet formats). The description reinforces this and adds platform-specific behavior for the parameter, e.g., 'On Base the signal reads the high-confidence x402 rollup only, and 3-cycle ring detection does not run.' This adds meaningful context beyond the schema's type description.
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 identifies the tool as a 'cheap circular-flow (wash) check for a payer wallet' with specific outputs (classification, is_circular bool, counts). It distinguishes itself from paid alternatives by noting the free discovery aspect and that the wash discount is not returned, making its purpose unambiguous.
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 'Use as a fast Sybil/wash gate before trusting a counterparty.' It also clarifies what is not returned (paid wash factor), implying when to seek a paid alternative. However, it does not explicitly name a sibling tool as the alternative, so guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
low_level_preflightARead-onlyIdempotentInspect
Low-level preflight check. Returns a richer result object including
paid_quick_endpoint ($0.001 first hop) and optional paid_trust_endpoint ($0.05 V7).
wash_flagged=true never soft-allows. Unlabeled leftover 0.05 / leftover=0 is not a unit price.
Prefer get_readiness_card_tool for most callers. Use this when you need
max_spend_recommendation_usdc, full_report_hint, or the suggest_full_report
flag. The embedded `readiness_card` carries the SAME full shape as
get_readiness_card_tool (see the outputSchema).
Hard-stops:
wash_flagged=true never soft-allows (decision=block; no warn/allow/quick).
Unlabeled leftover 0.05 / leftover=0 is not a unit price; read readiness_card.price_kind.
| Name | Required | Description | Default |
|---|---|---|---|
| price_usdc | No | Caller-supplied exact unit price in USDC. Leave unset unless you have an exact quote. Unlabeled leftover 0.05 / leftover=0 is not a unit price. | |
| agent_intent | No | What the agent intends to do with the purchased response or tool. | |
| buyer_wallet | No | Buyer's Solana wallet public key; enables buyer-context evidence in scoring. | |
| resource_url | No | Canonical endpoint URL for the resource, if available. | |
| resource_name | No | Provider or listing identifier to evaluate before payment. | |
| seller_wallet | No | Seller's Solana wallet public key for reputation and spend checks. | |
| marketplace_score | No | Optional marketplace-provided score (0-100) for blend-in scoring context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Decision-consistent one-line rationale. |
| decision | No | Spend decision: "allow" | "warn" | "block". wash_flagged=true never soft-allows — this field is block (no warn/allow/quick). |
| evidence | No | Evidence bullets behind the decision. |
| trust_score | No | Composite trust signal, 0-100. |
| readiness_card | No | The full ReadinessCard shape (same keys as get_readiness_card_tool). |
| full_report_hint | No | How to fetch the paid full report. |
| paid_quick_endpoint | No | First paid hop: $0.001 score-only teaser, if seller identity is known. |
| paid_trust_endpoint | No | Optional $0.05 V7 receipt path, if seller identity is known. |
| suggest_full_report | No | Whether to upsell the paid V7 receipt report. |
| max_spend_recommendation_usdc | No | Suggested per-call spend ceiling for this decision. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, yet the description adds real behavioral context beyond them: hard-stop rules where wash_flagged=true forces decision=block with no warn/allow/quick path, and the pricing interpretation rule that an unlabeled leftover 0.05 / leftover=0 is not a unit price. Some of this is output-interpretation guidance rather than tool behavior, but the hard-stop semantics are genuinely additive.
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 opening leads with edge-case pricing jargon rather than a plain statement of purpose, which hurts front-loading. Content is also duplicated: 'wash_flagged=true never soft-allows' appears twice, and the 'Unlabeled leftover 0.05 / leftover=0' rule is restated in the body and again in the schema. The material earns its place but the redundancy and ordering cost it.
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?
An output schema exists and the description correctly points to it ('see the outputSchema') rather than re-documenting return values, and it flags that the embedded readiness_card has the SAME shape as the sibling tool. For a 7-parameter, zero-required evaluation tool this covers routing, hard-stops, and return structure adequately. It stops short of stating any required auth or wallet prerequisites.
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?
With 7 parameters at 100% schema description coverage, the schema already documents each field's meaning, so the baseline is 3. The description echoes one schema rule for price_usdc ('Unlabeled leftover 0.05 / leftover=0 is not a unit price') but adds no new per-parameter syntax or constraints beyond that. Credit is limited because the schema is doing the heavy lifting.
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 names the tool as a 'Low-level preflight check' and immediately clarifies what it returns (a richer result object with paid_quick_endpoint / paid_trust_endpoint), so an agent can see this is a deeper evaluation pass. It distinguishes itself from the closest sibling by naming get_readiness_card_tool and the extra fields only this tool exposes. The core entity being preflighted (an x402 resource/seller before payment) is only inferable from the parameter names, not stated outright.
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 explicitly routes callers: 'Prefer get_readiness_card_tool for most callers. Use this when you need max_spend_recommendation_usdc, full_report_hint, or the suggest_full_report flag.' That names the alternative and the exact conditions that select this tool over it. Nothing about when to reach for this versus the readiness card 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.
score_wallet_for_intelARead-onlyIdempotentInspect
Free discovery: PAYER-side 0-100 intel score for a wallet from the x402
payments it SENT (paid calls, distinct counterparties, volume, recency).
Not a seller check: to vet a seller/payTo before paying, use
get_readiness_card_tool (gate) or get_provider_reputation / get_merchant_card
(seller reputation). A pure seller scores 0 here by construction and the
response says so in seller_side_hint. A Base 0x wallet is scored from the
relayer-attributed x402_base_daily rollup (90d) with the same shape; no Base
wash graph exists yet, so its wash_flag is "unknown" unless single-counterparty.
Uses a simple transparent heuristic (volume log + breadth + spend log + recency
decay) — the exact formula is returned inline as `score_model`. Returns
intel_score, the wash-discounted effective_score + wash_flag/wash_factor
(cheap Sybil signal), counts, component breakdown, and a data_available flag.
Malformed pubkeys are rejected cleanly; the failure path returns the same
shape as success.
Sourced from the cross-facilitator corpus via the public Rust HTTP endpoint
GET /v1/agents/{wallet}/x402 (backed by the x402_solana_payer_agg matview).
First paid hop is the score-only teaser GET /v1/intel/quick/{wallet} (0.001 USDC).
Optional V7 signed receipt (intel_renorm_v1_1: score_raw, confidence,
breadth_factor, wash_factor) is GET /v1/intel/trust/{wallet} (0.05 USDC).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Wallet to score: a Solana base58 pubkey or a Base 0x address, using x402 payment-history intelligence. |
Output Schema
| Name | Required | Description |
|---|---|---|
| role | No | Observed role: "payer" | "merchant" | "both" | "unknown". |
| basis | No | Human-readable basis line. |
| chain | No | "base" when scored from the Base corpus; null on the Solana path. |
| error | No | Present only on the degraded path. |
| wallet | No | The scored wallet: Solana base58 pubkey or Base 0x address (lowercased). |
| network | No | CAIP-2 network of the corpus used, e.g. "eip155:8453"; null on the Solana path. |
| last_seen | No | ISO timestamp of last observed activity. |
| wash_flag | No | "clean" | "single_counterparty" | "unknown". |
| first_seen | No | ISO timestamp of first observed activity. |
| paid_calls | No | Observed x402 paid calls SENT (payer side). |
| total_usdc | No | Total observed USDC sent. |
| intel_score | No | Raw activity-reputation score, 0-100. |
| score_model | No | Self-describing scoring contract (scale, formula, component maxes, recency tiers). |
| wash_factor | No | Multiplier applied to intel_score for effective_score. |
| window_days | No | Observation window in days when the corpus is windowed (Base: 90); null on the Solana path. |
| score_version | No | Scoring contract version. |
| wash_coverage | No | Which wash signals exist for this chain. Base: single-counterparty only, so wash_flag is "unknown" (never "clean") for multi-counterparty wallets. |
| data_available | No | False when the corpus could not be observed (vs genuinely inactive). |
| effective_score | No | Wash-discounted score (single-counterparty fleets demoted). |
| score_components | No | Per-component breakdown: volume, breadth, spend, recency_factor. |
| seller_side_hint | No | Set when this wallet reads as a SELLER (role merchant, or payments received with no paid calls sent). intel_score here is the PAYER-side score and is 0 for a pure seller by construction; it is not a verdict about the seller. Points at get_provider_reputation / get_merchant_card (seller side) and get_readiness_card_tool (the pre-spend gate). |
| payments_received | No | Observed x402 paid calls RECEIVED (merchant side). |
| total_usdc_received | No | Total observed USDC received (merchant side). |
| is_single_counterparty | No | True if all payments went to one counterparty (Sybil signal). |
| distinct_counterparties | No | Distinct counterparties (merchants paid + payers received from). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/idempotent, but the description adds substantial behavior: the transparent heuristic components, wash_flag/wash_factor semantics, Base vs Solana scoring paths and the 'unknown' wash_flag caveat, clean rejection of malformed pubkeys, and the guarantee that the failure path returns the same shape as success. These are exactly the traits annotations cannot convey.
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 exclusion, then layers in caveats and endpoints. It is dense and long, and the trailing endpoint/pricing details (quick teaser, signed receipt) are more operational than call-relevant, keeping it just short of maximally tight.
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 scoring tool with dual-chain logic, wash signals, and a non-trivial failure path, the description covers inputs, semantics, edge cases, and downstream signals. With an output schema present it need not restate return fields, yet it still names the key ones, so nothing 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% and already documents that the wallet is a Solana base58 pubkey or Base 0x address, so the baseline is 3. The description adds real meaning beyond the schema by explaining how a Base 0x wallet is scored (relayer-attributed x402_base_daily rollup, 90d) versus the Solana path.
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/resource/scope: a 'PAYER-side 0-100 intel score for a wallet from the x402 payments it SENT', with the exact signals (paid calls, distinct counterparties, volume, recency). It also explicitly names the sibling it is not (seller checks -> get_readiness_card_tool, get_provider_reputation, get_merchant_card), so an agent can disambiguate without opening other schemas.
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 (free payer-side discovery) and when-NOT-to-use ('Not a seller check'), routing to named alternatives for seller vetting. It also flags the seller-scores-zero edge case so an agent won't misread a 0 as an error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_wallets_batchARead-onlyIdempotentInspect
Free discovery: score up to 25 wallets in a single call (each via the same
transparent model as score_wallet_for_intel). Convenience for triaging a set of
candidate counterparties at once; `requested`/`capped` disclose any truncation.
| Name | Required | Description | Default |
|---|---|---|---|
| wallets | Yes | List of wallets (Solana base58 or Base 0x) to score in one call (hard cap 25; extras are dropped). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of wallets scored. |
| error | No | Present only on the degraded path. |
| capped | No | True if the request exceeded max_per_call. |
| results | No | Per-wallet score objects (same shape as score_wallet_for_intel). |
| requested | No | Number of valid wallets requested. |
| max_per_call | No | Hard cap on wallets per batch call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and idempotent behavior. The description adds valuable behavioral context by disclosing the 25-wallet cap, the fact that truncation is disclosed via requested/capped fields, and that this is a 'Free discovery' operation. These details go beyond the annotations without contradicting them.
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 compact and front-loaded, immediately stating the key value ('score up to 25 wallets in a single call'). Every clause adds relevant information: the model reference, the triaging use case, and truncation disclosure behavior. No filler or repetition.
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 one fully-documented parameter, rich annotations, and an output schema, the description covers the remaining context an agent needs: batch size, relationship to the single-wallet tool, and truncation disclosure. Nothing critical is missing for selecting and invoking this 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?
There is only one parameter, and the schema covers it fully, including wallet formats and the hard cap. The description adds a reference to the same transparent model as score_wallet_for_intel, but this is not essential parameter semantics. Since schema coverage is 100%, the baseline of 3 is appropriate.
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 scores up to 25 wallets in a single call, using the same model as score_wallet_for_intel. It names the resource (wallets), the action (score), and the batch-specific scope, making it easy to distinguish from the single-wallet sibling.
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 phrase 'Convenience for triaging a set of candidate counterparties at once' provides clear context for when to use this tool. It does not explicitly state when not to use it or directly recommend the single-wallet alternative, but the reference to score_wallet_for_intel and the batch framing make the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_contribution_claimsARead-onlyIdempotentInspect
PoECX bridge: report settlements from your OWN rails (not TWZRD's paid
routes) for cross-check against TWZRD's independently-ingested x402
corpus, by on-chain signature.
A claim whose tx_signature, payer/merchant, and amount all match what
TWZRD's own ingest independently observed is materially stronger evidence
than either a bare self-report or the anonymous corpus alone — the
signature is real and on-chain, and a mismatch can't be forged to pass.
Unmatched claims are returned too, with a reason, never silently dropped.
This is a preview, not an unlock: `claimable` is always false. It exists
to let a real counterparty with its own settlement volume start feeding
PoECX before any on-chain payout path exists — see the PoECX plan.
Capped at 25 claims per call (discovery convenience, not bulk export);
extras are dropped, never silently ignored — see `capped`/`claims_requested`.
Within that cap, only the first claim per (chain, tx_signature,
transfer_index) is checked. Omitted transfer_index is the first leg
(dedup key 0). Later copies of the same leg appear in `unverified`
with reason_code `duplicate_claim` and `duplicate_of` pointing to the
zero-based first input index. Two legs of one tx count twice. This
deduplicates one preview report, not claims across separate calls.
| Name | Required | Description | Default |
|---|---|---|---|
| claims | Yes | Self-reported settlements to cross-check. Each item: {"tx_signature": str, "chain": "solana"|"base", "amount_usdc": float (optional), "transfer_index": int (optional, Solana transfer_index / Base log_index; omitted is first leg)}. Any other chain value is rejected before it ever reaches a query. | |
| wallet | Yes | The wallet these settlement claims are being reported for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Plain-language caveat on what this report does and doesn't prove. |
| as_of | No | ISO timestamp this report was built. Two reports of the same claims that differ only in tier after a backfill are distinguishable by as_of + classification_version. |
| capped | No | True if claims_requested exceeded max_per_call and extras were dropped. |
| wallet | No | The wallet the claims were submitted for. |
| verified | No | Per-claim detail for verified claims, each carrying observed_x402_confidence and observed_facilitator_id. |
| claimable | No | Always false today — this is a preview, not an on-chain payout unlock. |
| unverified | No | Per-claim detail for unverified claims, each with a reason. |
| max_per_call | No | Hard cap on claims per call. |
| score_version | No | Report contract version, e.g. "poecx_bridge_v0". |
| verified_usdc | No | Sum of observed USDC for verified claims across all tiers, including excluded. Use verified_usdc_x402_high for allowlist-attributed Base volume. |
| claims_verified | No | Unique chain/transaction/leg claims whose wallet and amount matched TWZRD's independently-observed corpus. |
| claims_requested | No | Number of claims in the original request, before any cap. |
| claims_submitted | No | Number of claims actually processed (after cap). |
| corpus_available | No | False when DSN/query failed so claims were not corpus-checked. Distinct from a genuine miss. |
| attestation_class | No | "CORPUS_CROSS_CHECKED" when the corpus was observed; "CORPUS_UNAVAILABLE" when lookup could not run (not a miss). Not TWZRD-attested settlement. |
| claims_duplicates | No | Repeated chain/transaction/leg claims within the capped input; included in claims_unverified and excluded from value totals. |
| claims_unverified | No | Claims not found, with a mismatched wallet or amount, or duplicated within this report. |
| classification_version | No | Base cluster-pin / KNOWN_CLUSTERS snapshot id. Moves when corpus reclassify changes high/unknown/excluded meaning; distinct from score_version. |
| verified_usdc_x402_high | No | Sum of observed USDC for verified claims whose observed_x402_confidence is high (allowlist attribution, not protocol confirmation). Excluded/unknown/untiered are omitted. |
| verified_usdc_by_confidence | No | Verified USDC split by evidence tier: "high" = relayer funding-cluster is on TWZRD's x402 operator allowlist (attribution, not protocol-level confirmation); "unknown" = observed on-chain transfer TWZRD could not confirm as x402; "excluded" = TWZRD affirmatively classified the settlement as not x402; "untiered" = chain ingest has no confidence tier (Solana). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses extensive behavioral traits beyond annotations: unmatched claims are returned with a reason, cap of 25 with dropped extras, dedup behavior with duplicate handling, preview status with claimable always false, and chain value rejection. This goes far beyond the readOnly and idempotent annotations, adding valuable context for the agent.
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 but well-structured, opening with the core purpose, then detailing cross-check strength, preview status, cap, and dedup. Every sentence adds necessary information for correct invocation, and it is front-loaded with the most critical purpose.
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 complexity of the tool, including dedup, caps, preview mode, and output schema, the description covers key behaviors: unmatched claims returned, cap behavior, dedup handling, preview status, and chain validation. It also references output fields like `capped`/`claims_requested` and `unverified`, ensuring the agent understands the complete response behavior.
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 already provides full descriptions for both parameters, so baseline is 3. The description adds extra semantics for transfer_index dedup key and how duplicates are reported, which goes beyond the schema. It also clarifies that chain values other than solana/base are rejected. This additional context elevates the score to 4.
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: reporting settlement claims from one's own rails for cross-check against TWZRD's independent corpus. It uses a specific verb ('report') and resource ('settlements'), and distinguishes from sibling tools by explicitly noting 'not TWZRD's paid routes' and that it is a preview. This is specific and not a tautology.
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 for when to use this tool: for a real counterparty with settlement volume to feed PoECX, and explicitly notes it is a preview, not an unlock. It also indicates alternatives indirectly by stating 'not TWZRD's paid routes' and references the PoECX plan. However, it does not name specific sibling alternatives, so it gets a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twzrd_demo_gateARead-onlyIdempotentInspect
No-spend transcript of the TWZRD buyer-side x402 trust gate, a recorded example,
not a live run - discoverable at runtime with no install and no human.
Returns a deterministic transcript showing the gate's behaviour on a fixture
counterparty: the block path ABORTS and a wallet/signer is never contacted, the
allow path would proceed, and ok=true. Spends no USDC, contacts no wallet.
This call surfaces an EXTERNAL_RUN *candidate* in TWZRD's honest attribution
ledger (it carries a non-internal integration id + your run_id, tagged with your
real inbound IP). A candidate is NOT an EXTERNAL_RUN: proof still requires a
non-VPS source_ip and matching your run_id to your own transcript via
packages/twzrd-agent-intel/scripts/count_attributed_runs.py --confirm.
See the returned not_external_run_proof.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Optional caller-supplied run id to correlate with your transcript. Omit to have one generated for this call. | |
| integration | No | Stable label for your integration (e.g. your agent/app name). Echo it plus the returned run_id in your own transcript so a run can later be confirmed. Defaults to a generic MCP-discovery label. | mcp-agent-discovery |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and idempotentHint, yet the description adds substantial behavioral context beyond them: the block path ABORTS without contacting a wallet/signer, no USDC is spent, and the call records an EXTERNAL_RUN candidate with the caller's run_id and real inbound IP in an attribution ledger. It also discloses a non-obvious side effect (ledger surfacing) and that proof is not implied.
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 purpose is front-loaded in the first sentence, but the description runs long and repeats the no-spend/no-wallet message ('Spends no USDC, contacts no wallet' restates 'a wallet/signer is never contacted'). The attribution-ledger paragraph earns its place, but there is avoidable 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?
An output schema exists, so return-value detail is not required and the description correctly focuses on behavior and the caveat that a candidate is NOT transitive proof. It covers side effects and constraints well; only explicit when-to-use routing to sibling tools 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 both parameters (run_id, integration) are already fully documented in the schema, including defaults and nullability. The description mentions run_id correlation but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
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 names a specific resource (the TWZRD buyer-side x402 trust gate) and explicitly frames this as a recorded no-spend demo transcript rather than a live run, which separates it from live siblings like evaluate_x402_resource. It is clear, but the actual action (returning a deterministic fixture transcript) is embedded in prose rather than stated as a crisp verb+resource.
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 conveys the usage context ('discoverable at runtime with no install and no human') and the not-a-live-run framing, but never states when to choose this tool over live siblings such as evaluate_x402_resource or low_level_preflight. The agent must infer the demo/smoke-test use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twzrd_watch_addAInspect
Register a re-call watch on a seller wallet.
After registration, TWZRD will proactively re-check the seller's trust intel
when `recheck_after_unix` elapses and POST a notification to your webhook_url
if the score/decision materially changes.
Returns the watch row with the computed recheck_after_unix timestamp so your
agent knows exactly when to expect a re-call or proactively re-check itself.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_url | No | Optional HTTPS URL to POST when intel goes stale. | |
| payer_wallet | Yes | Your agent wallet address (the watcher). | |
| seller_wallet | Yes | The seller/merchant wallet to watch. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behaviors beyond annotations: proactive re-checking when 'recheck_after_unix' elapses, posting to webhook on material changes, and returning the watch row with a timestamp. No contradiction with annotations (openWorldHint, idempotentHint, destructiveHint are all false, consistent with registration).
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 short paragraphs, front-loaded with the core action. Every sentence provides useful context: registration, lifecycle, return value. No redundant or vague language.
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 tool with 3 parameters, an output schema, and annotations, the description covers the registration process, follow-up behavior, and return details. It does not explain what a 're-call watch' is in depth, but the context is sufficient for an agent to understand its use.
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?
All 3 parameters are described in the schema (100% coverage). The description adds value by explaining the purpose of 'webhook_url' (optional, POST on staleness) and clarifying the role of 'payer_wallet' and 'seller_wallet'. It also notes the return value includes 'recheck_after_unix', enhancing understanding.
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 registers a re-call watch on a seller wallet, using a specific verb ('Register') and resource ('watch on seller wallet'). It distinguishes itself from sibling tools like 'twzrd_watch_list' and 'twzrd_watch_remove' by focusing on creation.
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 what the tool does and its lifecycle (proactive re-check, webhook notification), but does not explicitly state when to use it vs. alternatives or when not to use it. This is adequate but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twzrd_watch_listARead-onlyIdempotentInspect
List active re-call watches for your agent wallet.
Each watch shows the seller, current score/decision, and recheck_after_unix
timestamp (untrusted V5/V6 hint). evaluateRecall / shouldRecheckTrusted is
the consumer gate; do not treat due / shouldRecheck as a trusted allow.
| Name | Required | Description | Default |
|---|---|---|---|
| payer_wallet | Yes | Your agent wallet address. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, yet the description adds substantial non-obvious behavior: it names the fields returned, flags recheck_after_unix as an untrusted V5/V6 hint, and explicitly warns not to treat due / shouldRecheck as a trusted allow. That untrusted-data warning is exactly the kind of guidance structured fields cannot convey for an agent deciding how to act on the output.
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 short sentences with the core purpose front-loaded and no filler. The terminology is dense but each sentence contributes: purpose, return fields, and the trust warning. Slightly more idiomatic phrasing for the evaluateRecall reference would tighten it further.
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?
Output schema exists, so return-value documentation is technically optional; the description nonetheless summarizes the key fields and, more importantly, warns about their trust level. Safety profile and return shape are both covered, so an agent has what it needs, though nothing addresses volume, ordering, or empty-result behavior.
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 single parameter payer_wallet has 100% schema description coverage ("Your agent wallet address"), so the schema carries the burden. The description does not add syntax, format, or defaulting detail beyond it, making the baseline 3 appropriate.
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 ("List active re-call watches") with an explicit scope ("for your agent wallet"). This cleanly distinguishes it from the watch-mutating siblings twzrd_watch_add and twzrd_watch_remove, 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?
The description implies the tool is a read of existing watches, but it never explicitly states when to call it versus twzrd_watch_add, twzrd_watch_remove, or the scoring tools like get_poec_score. It does name evaluateRecall / shouldRecheckTrusted as the downstream consumer gate, which is helpful context, but that is semantic guidance rather than a when-to-use routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twzrd_watch_removeAInspect
Deactivate a re-call watch by ID. payer_wallet must match the owner.
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes | Watch ID from twzrd_watch_list. | |
| payer_wallet | Yes | Your agent wallet address (must match the watch owner). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive behavior. The description adds the owner-matching constraint, which is useful behavioral context. However, it does not elaborate on side effects or reversibility.
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 sentence that directly states the purpose and key constraint with no extraneous 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?
For a simple removal tool with an output schema, the description covers the essential information. It could mention return behavior, but the output schema likely handles that.
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 description adds little beyond what the schema provides. It reiterates the payer_wallet constraint, but the schema already includes that information.
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 action ('Deactivate a re-call watch by ID') and includes a specific constraint. It distinguishes from sibling tools like twzrd_watch_add and twzrd_watch_list.
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 tells when to use (to deactivate a watch) and includes a prerequisite (payer_wallet must match owner). It does not explicitly mention when not to use or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_receiptARead-onlyIdempotentInspect
Free utility: offline-verify a portable V7 trust receipt (earlier V5/V6 receipts
still verify), the "after you pay" half of the loop.
Recomputes the Keccak256 leaf from the receipt's preimage (tamper-evidence) AND
verifies the Ed25519 signature against the published TWZRD receipt-signing key
(authenticity). Returns valid/leaf_valid/signature_valid plus the recomputed
leaf and any errors. Pure and offline — no DB, no network, no payment.
Pass the entire PaidReceipt object you were issued. Trust is anchored on the
published key (or expected_pubkey), NOT on whatever pubkey the receipt carries.
max_age_seconds: optional freshness gate (replay protection). Same semantics
as the Python library verify_paid_receipt(..., max_age_seconds=...) and the
standalone CLI --max-age.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | The full signed receipt object (leaf + preimage + signature + signing_pubkey) returned by the paid /v1/intel/trust surface (V7; earlier V5/V6 receipts still verify). | |
| expected_pubkey | No | Override the trusted signing pubkey to verify against (default: the published TWZRD receipt key). | |
| max_age_seconds | No | If > 0, reject the receipt if its preimage.timestamp_unix is older than this many seconds (replay/freshness protection, same as CLI --max-age and library). | |
| require_signature | No | Require and verify the Ed25519 signature (default true). Set false only to inspect an unsigned preview. |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | True iff the leaf recomputes AND the signature verifies against the trusted key. |
| domain | No | The V5 domain detected in the preimage. |
| errors | No | Issues found; empty on success. |
| leaf_valid | No | True iff the Keccak256 leaf recomputes from the preimage. |
| provided_leaf | No | The normalized leaf supplied in the receipt. |
| signing_pubkey | No | The pubkey carried by the receipt. |
| trusted_pubkey | No | The published key authenticity was checked against. |
| recomputed_leaf | No | The leaf recomputed from the preimage (0x...). |
| signature_valid | No | True iff the Ed25519 signature verifies; None if the signature check was skipped. |
| signature_checked | No | Whether the signature was checked (require_signature). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/idempotentHint, but the description adds substantial context: pure and offline (no DB/network/payment), tamper-evidence vs authenticity semantics, the return fields, and the key-anchoring rule (trust comes from the published key, not the receipt's pubkey). Minor omission: it never states the effect of require_signature beyond what the schema says.
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 action and mechanism, then layers in guardrails; every sentence carries information. Mild padding in phrases like 'Free utility' and 'the after you pay half of the loop' 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?
Given annotations, 100% schema coverage, and an output schema, the description covers the remaining gaps: offline/pure nature, key-anchoring trust model, version compatibility, and freshness semantics. An agent has everything needed to call it correctly without opening the schema.
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 meaning: max_age_seconds is tied to the library/CLI equivalents and framed as replay freshness gating, and expected_pubkey is explained as the trust anchor override. It does not add anything for require_signature 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?
States a specific verb (offline-verify) and resource (portable V7 trust receipt), plus the exact mechanisms (Keccak256 leaf recomputation, Ed25519 signature check). It is clearly distinguished from siblings like verify_root_inputs and verify_x402_settled_claim by scoping itself to receipt verification.
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?
Frames itself as the 'after you pay' half of the loop and instructs the caller to pass the entire PaidReceipt object, with a note that V5/V6 receipts still verify. Clear context for when to reach for it, though it stops short of naming when another sibling is the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_root_inputsCRead-onlyIdempotentInspect
Independent root verification (see tools/root_verifier.py for the recompute logic).
| Name | Required | Description | Default |
|---|---|---|---|
| root_seq | No | Specific root sequence to verify. If omitted, best-effort resolution via resource metadata or latest. | |
| resource_name | No | WZRD protocol resource (deposit/claim/settle etc.) for auto-detection and seq hints. | |
| seller_wallet | No | Seller wallet for WZRD protocol resource detection. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message on the ERROR path; null on PASS/FAIL. |
| status | No | "PASS" = recomputed GLOBAL_V5 leaves + dataset_hash + sorted-pair root match the published values. "FAIL" = mismatch (do not trust the root). "ERROR" = could not run (fetch failure / missing data). |
| root_seq | No | Root sequence number that was verified. |
| leaf_count | No | Number of leaves (users) in the verified root. |
| onchain_match | No | Always null: this tool does NOT read Solana/the AO program. Use server_consistent for the recompute result; do not gate on-chain actions on this field expecting a chain anchor. |
| leaf_hash_match | No | True iff every server-provided leaf_hash matches the locally recomputed value. |
| recomputed_root | No | Independently recomputed sorted-pair keccak256 merkle root (hex). |
| server_consistent | No | True iff the recomputed root/dataset_hash matches the value the SERVER published alongside its own leaves (self-consistency). NOT an on-chain check. Null when not comparable. |
| recomputed_dataset_hash | No | Independently recomputed keccak-concat dataset_hash (hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is clear. The description adds 'via recompute logic' implying computation, but doesn't contradict annotations. Provides minimal extra 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?
Extremely concise at two sentences with no waste. Could benefit from slightly more detail, but front-loads the core purpose.
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 100% schema coverage, output schema present, and annotations, the description is minimally adequate. However, it lacks contextual completeness for a verification tool that might need explanation of what verification entails.
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 has 100% description coverage. The description adds nothing about parameters, so baseline 3 is appropriate.
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 states 'Independent root verification' which identifies the tool's action and resource, but lacks specificity about what 'root' refers to and does not differentiate from sibling tools like verify_receipt.
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?
No guidance on when to use this tool versus alternatives (e.g., verify_receipt). The description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_x402_settled_claimARead-onlyIdempotentInspect
Verify a receipts-ledger settlement; this is evidence, not a spend decision.
| Name | Required | Description | Default |
|---|---|---|---|
| settlement_tx | Yes | Solana transaction signature only. No claim body is accepted. Verifies that signature against x402_payment_receipts and a freshly fetched finalized transaction: match requires the only positive USDC balance change to credit that row's merchant for that row's amount, and the only USDC debit to be that amount from that row's payer, which match returns as payer. Returns match, mismatch, or unknown. Unknown does not block payment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| payer | No | On match, the wallet whose USDC paid: the transaction's only USDC debit, equal to the ledger payer. Reimburse this wallet, never one a claimant names. |
| digest | No | |
| reason | No | |
| status | Yes | Witness comparison only. Unknown is unavailable evidence; no status is a payment decision. |
| finalized | No | |
| artifact_id | No | |
| settlement_tx | Yes | |
| session_binding | No | |
| self_attested_merchant | No | On match, whether the verified USDC credit owner is intel's pay_to. |
| merchant_credit_verified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior; the description adds the useful context that the result is evidentiary rather than an authorization to spend. It does not disclose more about outcome handling, but the parameter schema covers match/mismatch/unknown.
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?
One tight sentence, front-loaded with the action and ending with a meaningful boundary ('not a spend decision'). No filler or repetition of schema fields.
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 single-parameter read-only verification with a rich schema and output schema, the description is mostly sufficient. The only notable gap is not addressing how it differs from verify_receipt, though this is minor given the clear scope.
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% and the single parameter's description is exceptionally detailed, covering accepted input, verification logic, and return values. The tool description adds no parameter-level meaning, so the schema-heavy baseline of 3 applies.
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 a specific verb and resource ('Verify a receipts-ledger settlement') and adds a clarifying role ('evidence, not a spend decision'). It does not explicitly distinguish itself from the sibling verify_receipt, so it falls just short of a 5.
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 phrase 'this is evidence, not a spend decision' gives the agent a clear caution about how to treat the result, but does not state when to prefer this tool over verify_receipt or other siblings. The usage context is implied rather than explicit.
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.
3 tool updates
- Changed
get_readiness_card_tool2 fields changed- changed
Input schema / properties / queried_pubkey / descriptionPrevious value: -"Consumer pubkey for velocity attribution (echoed on output when provided)."New value: +"Consumer pubkey, echoed on output when provided (attribution only)." - changed
Output schema / properties / queried_pubkey / descriptionPrevious value: -"Consumer pubkey echoed when provided on input (velocity attribution; not a settle gate)."New value: +"Consumer pubkey echoed when provided on input (attribution only; not a settle gate)."
- Changed
low_level_preflight1 field changed- changed
Output schema / properties / suggest_full_report / descriptionPrevious value: -"Whether to upsell the paid v6-receipt report."New value: +"Whether to upsell the paid V7 receipt report."
- Changed
verify_receipt1 field changed- changed
Input schema / properties / receipt / descriptionPrevious value: -"The full v6 PaidReceipt object (leaf + preimage + signature + signing_pubkey) returned by the paid /v1/intel/trust surface."New value: +"The full signed receipt object (leaf + preimage + signature + signing_pubkey) returned by the paid /v1/intel/trust surface (V7; earlier V5/V6 receipts still verify)."
1 tool update
- Changed
check_listing2 fields changed- changed
Input schema / properties / declared_unit_price / descriptionPrevious value: -"Optional unit price the seller is asking, in USD. Above the card's advertised price is refused (phantom_markup_detected); below it is discount_unverified."New value: +"Optional unit price the seller is asking, in USD. Above the card's advertised price is refused (phantom_markup_detected); below it is discount_unverified and needs approval." - changed
Output schema / properties / needs_approval / descriptionPrevious value: -"True for every result except advertised, and for an advertised card that advertises nothing, advertises no price, or cannot check the declared price: a human approves before any spend."New value: +"True for every result except advertised, and for an advertised card that advertises nothing, advertises no price, cannot check the declared price, or is declared below its advertised price: a human approves before any spend."
1 tool update
- Changed
check_listing1 field changed- changed
Output schema / properties / needs_approval / descriptionPrevious value: -"True for every result except advertised, and for an advertised card that advertises nothing or cannot check the declared price: a human approves before any spend."New value: +"True for every result except advertised, and for an advertised card that advertises nothing, advertises no price, or cannot check the declared price: a human approves before any spend."
3 tool updates
- Added
check_listing - Added
get_publication - Added
get_shopping_check
2 tool updates
- Changed
get_readiness_card_tool7 fields changed- added
Output schema / properties / basisAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Typed evidence entries {class, kind, source, observed_at, weight, ...}; observed_at is null with observed_at_null_reason on an honest-null card.", + "title": "Basis" +} - added
Output schema / properties / corpus_complete_through_unixAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Behavioral corpus coverage watermark, or null when none is plumbed.", + "title": "Corpus Complete Through Unix" +} - added
Output schema / properties / expires_atAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO-8601 card validity end (an expired card is an absent card).", + "title": "Expires At" +} - added
Output schema / properties / issued_atAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO-8601 card issue time.", + "title": "Issued At" +} - added
Output schema / properties / null_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Why score is null: \"unknown_subject\" | \"insufficient_signal\" | \"evaluation_failed\" | \"no_subject\" (no counterparty was named at all). Null when scored.", + "title": "Null Reason" +} - added
Output schema / properties / scoreAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Draft-02 score 0..1, or null when no evidence was measured (see null_reason). An assessor never fabricates this; the legacy trust_score keeps a cautious default for old consumers.", + "title": "Score" +} - added
Output schema / properties / seller_wallet_rejectedAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Set when the seller_wallet you sent was discarded: {\"value\", \"reason\": \"template_placeholder\" | \"not_a_wallet_address\"}. With no resource_name/resource_url the card is decision=block, null_reason=no_subject, reason_codes NO_COUNTERPARTY (+ PLACEHOLDER_SELLER_WALLET). Fix the input; this is not a verdict about any seller.", + "title": "Seller Wallet Rejected" +}
- Changed
score_wallet_for_intel1 field changed- added
Output schema / properties / seller_side_hintAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Set when this wallet reads as a SELLER (role merchant, or payments received with no paid calls sent). intel_score here is the PAYER-side score and is 0 for a pure seller by construction; it is not a verdict about the seller. Points at get_provider_reputation / get_merchant_card (seller side) and get_readiness_card_tool (the pre-spend gate).", + "title": "Seller Side Hint" +}
1 tool update
- Changed
verify_x402_settled_claim2 fields changed- changed
Input schema / properties / settlement_tx / descriptionPrevious value: -"Solana transaction signature only. No claim body is accepted. Verifies the one known quick-settlement claim against the TWZRD ledger and freshly fetched finalized transaction. Returns match, mismatch, or unknown. Unknown does not block payment."New value: +"Solana transaction signature only. No claim body is accepted. Verifies that signature against x402_payment_receipts and a freshly fetched finalized transaction: match requires the only positive USDC balance change to credit that row's merchant for that row's amount, and the only USDC debit to be that amount from that row's payer, which match returns as payer. Returns match, mismatch, or unknown. Unknown does not block payment." - added
Output schema / properties / payerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "On match, the wallet whose USDC paid: the transaction's only USDC debit, equal to the ledger payer. Reimburse this wallet, never one a claimant names.", + "title": "Payer" +}
1 tool update
- Added
verify_x402_settled_claim
2 tool updates
- Added
get_claim - Added
get_evidence
1 tool update
- Changed
get_readiness_card_tool6 fields changed- changed
Output schema / properties / corpus_age_days / descriptionPrevious value: -"Whole days since corpus_complete_day."New value: +"Whole days since corpus_complete_day. Null when the ledger head is missing." - changed
Output schema / properties / corpus_complete_day / descriptionPrevious value: -"Uploaded corpus complete day (YYYY-MM-DD). Snapshot boundary, not live ingest."New value: +"Ledger head complete day (YYYY-MM-DD) from x402_ledger_head. Null when that row is missing. Not the 2026-07-09 copy floor." - added
Output schema / properties / ledger_basisAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Ledger head basis, for example exact or mixed_estimated.", + "title": "Ledger Basis" +} - added
Output schema / properties / ledger_exact_throughAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Last day of exact event capture on the ledger head. Later days may be estimates.", + "title": "Ledger Exact Through" +} - changed
Output schema / properties / observed_at / descriptionPrevious value: -"ISO-8601 watermark of the uploaded Dune complete day (not card-build time)."New value: +"ISO-8601 of the seller's last settle, else the ledger head day. Null when neither exists. Not card-build time." - changed
Output schema / properties / stale / descriptionPrevious value: -"True when uploaded-corpus age exceeds the high-confidence re-check window. Warning only; not a wash refuse."New value: +"True when the seller's last settle is older than 7 days, or when there is no settle and the ledger head is older than 7 days or missing. Warning only; not a wash refuse."
1 tool update
- Changed
get_readiness_card_tool2 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO-8601 of data_as_of_unix. Null when the subject was never measured.", + "title": "As Of" +} - changed
Output schema / properties / data_as_of_unix / descriptionPrevious value: -"Anchor time for the staleness calculation (seller last activity or card build time)."New value: +"Seller last-activity unix when known. Null on unknown_subject / insufficient_signal / evaluation_failed — never card-build time. Card TTL is recheck_after_unix."
1 tool update
- Changed
get_readiness_card_tool4 fields changed- added
Output schema / properties / corpus_age_daysAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whole days since corpus_complete_day.", + "title": "Corpus Age Days" +} - added
Output schema / properties / corpus_complete_dayAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Uploaded corpus complete day (YYYY-MM-DD). Snapshot boundary, not live ingest.", + "title": "Corpus Complete Day" +} - added
Output schema / properties / observed_atAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO-8601 watermark of the uploaded Dune complete day (not card-build time).", + "title": "Observed At" +} - added
Output schema / properties / staleAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "True when uploaded-corpus age exceeds the high-confidence re-check window. Warning only; not a wash refuse.", + "title": "Stale" +}
3 tool updates
- Changed
evaluate_x402_resource4 fields changed- changed
Output schema / properties / receipt_url / descriptionPrevious value: -"URL to fetch the paid trust receipt ($0.05 USDC to TWZRD)."New value: +"Optional $0.05 V7 portable receipt URL." - added
Output schema / properties / receipt_usdcAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Cost of the optional V7 receipt in USDC (0.05).", + "title": "Receipt Usdc" +} - added
Output schema / properties / teaser_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "First paid hop: $0.001 score-only teaser URL.", + "title": "Teaser Url" +} - changed
Output schema / properties / upsell_usdc / descriptionPrevious value: -"Cost of the TWZRD paid trust receipt in USDC."New value: +"Cost of the first paid hop in USDC (0.001 teaser)."
- Changed
get_readiness_card_tool4 fields changed- changed
Output schema / properties / paid_deep_dive / descriptionPrevious value: -"Path to the paid full-trust surface (/v1/intel/trust/{wallet})."New value: +"Optional Path A V7 receipt surface (/v1/intel/trust/{wallet})." - changed
Output schema / properties / paid_price_usdc / descriptionPrevious value: -"Price of the paid deep dive in USDC."New value: +"Price of the optional V7 receipt in USDC (0.05)." - added
Output schema / properties / paid_teaserAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "First paid hop: $0.001 score-only teaser (/v1/intel/quick/{wallet}).", + "title": "Paid Teaser" +} - added
Output schema / properties / paid_teaser_usdcAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Price of the first paid hop in USDC (0.001).", + "title": "Paid Teaser Usdc" +}
- Changed
low_level_preflight2 fields changed- added
Output schema / properties / paid_quick_endpointAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "First paid hop: $0.001 score-only teaser, if seller identity is known.", + "title": "Paid Quick Endpoint" +} - changed
Output schema / properties / paid_trust_endpoint / descriptionPrevious value: -"Paid trust endpoint path, if seller identity is known."New value: +"Optional $0.05 V7 receipt path, if seller identity is known."
Related MCP Connectors
Verify x402 payment endpoints before an AI agent pays: scam scan, on-chain checks, trust scores.
x402 seller trust for AI agents: verify on-chain revenue, check delivery, diagnose listings.
Check any x402 endpoint before your AI agent pays it: trust grade, verdict, and hijack checks.
Pre-payment checks for AI agents: x402 quotes, untrusted prompts and audit receipts.
Related MCP Servers
- AlicenseAqualityAmaintenancex402-trust gives AI agents a "check before you pay" layer for the x402 ecosystem.15295 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides paid and free tools for AI agents to buy from or sell to other agents over x402, including discovering sellers, verifying on-chain payment histories, running test purchases, and registering sellers for audited listings.-
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to discover, trust-check, and pay for Algorand x402 services in USDC, with policy-guarded spending, relay fallback, and an audit ledger.2 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to obtain an independent review of their drafts, returning a pass/fail verdict with specific issues and suggested fixes, plus a signed receipt. Payments are made per check over x402, with no account or API key needed.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.