The settlement guarantee layer for x402. Every agent payment, verified or refunded. Provides access to paid APIs through the x402 Bazaar with reliability scoring and payment verification.
Assay provides four well-named, verb-prefixed tools (search, quote, score, call) with clear, detailed descriptions (150 - 250 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are returned as text blobs via a generic `text()` wrapper, making it impossible for LLMs to parse structured results reliably. Parameter descriptions are strong (e.g., 'Bazaar resource id from assay_search'), but the tool lacks pagination support for search results and does not document error recovery paths. Security is well-handled (no secrets in params, wallet-based payment), but error messages are not shown in the code.
Pay for and call any x402 resource through Assay. THIS SPENDS REAL MONEY from the configured wallet. Assay pays the provider on your behalf and validates the response against the output schema that provider published. If it fails validation, the payment is cancelled and you are charged nothing.
Show what routing a call through Assay would cost: the provider's price, Assay's fee, and the risk premium implied by that provider's reliability. Free, and it moves no money. Check this before assay_call if the budget matters.
The full reliability record for one resource: success rate, refund rate, latency percentiles, and the failures Assay has actually observed while paying for it. Free.
Search the x402 Bazaar for paid API resources, ranked with Assay's reliability grade. Use this first to find a resource id before quoting or calling. Grades run A (proven) to D (unreliable); 'unrated' means Assay has not routed to it yet.
Output schemas not documented. All tools return text blobs via generic text() wrapper. LLMs cannot parse structured results, extract IDs for chaining, or validate response shape. Breaks pattern:response-shaper and pattern:tool-chain.
assay_search returns up to 15 results by default (limit param max 50) but no pagination cursor or total count. Large result sets will be truncated silently, and agents cannot iterate through full catalog. Violates pattern:paginated-result.
Error handling not visible in code. No recovery guidance, error classification, or actionable messages shown. assay_call is destructive (spends real money) but no dry-run, confirmation, or rollback mechanism documented. Violates pattern:confirmation-request and pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
assay_call accepts optional 'params' as free-form object with no schema or validation. LLMs cannot know what fields to pass to a given resource. Requires agent to infer provider schema from description alone. Violates pattern:constrained-input.
Tool descriptions lack dependency hints and prerequisites. E.g., assay_quote and assay_call do not explicitly state 'Call assay_search first to get resource id' or 'Requires ASSAY_AGENT_KEY env var set'. Violates pattern:tool-description.