Wicked MCP server
A single MCP server bridging 100+ financial, DeFi, identity, and agent-infrastructure tools to live Wicked API endpoints (x402 pay-per-call or API key, no signup needed).
Market & trading data — spot
price,ohlcvcandles,atr,fvg,liquidity_levels,momentum_score,sentiment,market_overview,rates,macro_calendar,earnings_calendar,market_clock,gas,defi_tvlDerivatives & prediction markets —
funding_oi,long_short_ratio,orderbook,basis,hyperliquid,volatility,kalshi_probability,kalshi_marketToken safety —
token_risk(free): honeypot, mint authority, holder concentration, taxes from GoPlusDeFi protocol health — score, list/track protocols, scoreboard, refresh/sync universe
Brokerage sync — register users, list connections, positions, balances, transactions, prop-firm registry
Agent reputation — status, statement, query/rank, tiers, transparency numbers
Tool reliability registry — search tools by uptime/latency/schema score, detail, badges, report, register (own signature)
Agent identity — nonce, register, liveness challenge/response, status, JWKS (wallet-signed)
Hallucination checks —
sanity_check/sanity_check_batchagainst context or webPersistent memory — signed
memory_preparethen store/search/get/update/history/delete/deletionsx402 paywall management — signup, create/import/update/delete routes, list settlements
Free, zero-config options — Token Risk plus 5 free Trading Data endpoints; unpaid calls return real
402challenges; optional auto-pay viaWICKEDAPI_PAYER_PRIVATE_KEY; remote streamable HTTP athttps://mcp.wickedapi.com/mcp
Note: the schema exposes ~58 tools, fewer than the README's claimed 107.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Wicked MCP serverWhat's the current price of BTC?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WickedAPI MCP Server
MCP server for the whole Wicked suite — trading data, DeFi protocol health, token safety, brokerage sync, agent identity, reputation, a tool-reliability registry, hallucination checks, persistent agent memory, and x402 paywalls, in one server.
100+ tools across 12 live services. The first four are generated automatically from each service's own live openapi.json, so the list always matches what's deployed; the rest are hand-written because they use wallet signatures and non-/v1 routes:
Service | Tools | Auth |
28 (unprefixed: | API key or x402, 5 free | |
6 ( | API key or x402, scoreboard free | |
1 ( | 100% free, no key | |
6 ( | API key or x402 | |
7 ( | freshness + preview free; rest key or x402 | |
2 ( | OFAC sanctions lookup free; full check key or x402 | |
5 ( | free, no key | |
6 ( | search/detail: key or x402; featured/badge/report free; register needs your signature | |
8 ( | no wallet? start with | |
2 ( | key or x402 | |
8 ( | wallet signature on every call; only search is metered | |
8 ( |
|
Plus 6 resources (the platform directory, llms.txt, and each service's live endpoint catalog) and 10 prompts (rug_check, vet_dependency, morning_briefing, fact_check, verify_agent, find_reliable_tool, agent_memory_guide) that chain tools together the way the cookbook does.
These tools never sign anything or hold a key. Agents with no wallet can still try Wicked Identity end to end through a sandbox identity (identity_sandbox_register, then pass sandbox_token instead of a signature); sandbox results are for testing and are never reported as verified. Identity (real wallet), Registry registration and Memory take a signature you produce with your own wallet (identity_get_nonce / memory_prepare return the exact message to sign). Calls that need x402 payment return the real 402 challenge (decoded under payment_required for x402 v2) rather than auto-paying — WICKEDAPI_PAYER_PRIVATE_KEY auto-pay applies to the Trading, Protocol Health, Token Risk and Broker Sync tools.
Remote endpoint (no install)
Also listed on Glama, the official MCP Registry (io.github.WickedAPI/wicked-mcp) and Smithery.
The same 107 tools are served over streamable HTTP at https://mcp.wickedapi.com/mcp (stateless, rate-limited per IP; the public deployment carries no personal keys, so paid calls return the x402 challenge). Point any streamable-HTTP MCP client at it. To self-host, build the Dockerfile and run it with node dist/http.js (the image defaults to the stdio entry point), or npm run build && npm run start:http; see .env.example for RATE_LIMIT_PER_MINUTE, ALLOWED_HOSTS and TRUSTED_CLIENT_IP_HEADER.
Related MCP server: aipaygen-mcp
No signup required
Every tool hits a real endpoint gated by x402 (HTTP-native pay-per-call, USDC on Base) with an API-key fallback — and the Token Risk Oracle tool is free no matter what:
Zero config — calls without credentials still work; paid endpoints return the real
402payment challenge (price, network,payTo) as the tool result.Autonomous pay-per-call — set
WICKEDAPI_PAYER_PRIVATE_KEYto a funded Base-mainnet wallet's private key, and every call auto-pays ~$0.001 in USDC and returns real data. No account, no subscription.Partner API key — set
WICKEDAPI_API_KEYfor free, rate-limited access across all four services (same key works everywhere).
Install
{
"mcpServers": {
"wickedapi": {
"command": "npx",
"args": ["-y", "@wickedlabs/wicked-mcp"],
"env": {
"WICKEDAPI_API_KEY": "your-key-here"
}
}
}
}Or for autonomous pay-per-call instead of a key:
{
"mcpServers": {
"wickedapi": {
"command": "npx",
"args": ["-y", "@wickedlabs/wicked-mcp"],
"env": {
"WICKEDAPI_PAYER_PRIVATE_KEY": "0xyour-base-wallet-private-key"
}
}
}
}Nothing configured? The Token Risk Oracle tool and the 5 free Trading Data API endpoints (sentiment, macro_calendar, market_overview, gas, kalshi_probability) still work with zero setup.
Resources
Read without calling a tool — useful for a client that surfaces resources in its UI:
wickedapi://platform/services— the full service directory (JSON)wickedapi://platform/llms— the platform'sllms.txtwickedapi://trading/status,wickedapi://protocol_health/status,wickedapi://token_risk/status,wickedapi://broker_sync/status— each service's live endpoint catalog
Quick start
claude mcp add --transport http wicked https://mcp.wickedapi.com/mcp # Claude Code, no install
npx -y @wickedlabs/wicked-mcp # local stdioClaude Desktop / Cursor / VS Code config and per-framework starters: see the cookbooks. The remote also serves a landing page at /, /llms.txt, an MCP server card at /.well-known/mcp/server-card.json, and aggregate per-tool call counts at /stats (counts only; no arguments or IPs).
Prompts
One-click workflows that chain real tool calls (Claude Desktop and other prompt-aware clients surface these directly):
rug_check(address,chain, optionalsymbol) — token risk check + market sentiment + optional momentum read, before buying.vet_dependency(slug, optionaltoken_address,chain) — protocol health + optional contract-level risk check, before building on a DeFi protocol.morning_briefing(optionalsymbol) — macro calendar + earnings calendar + sentiment + momentum verdict, as one digest.fact_check(output, optionalsource) — split an answer into claims and verify each with Wicked Sanity.verify_agent(wallet) — Identity assertion + Reputation stake/tier before you transact with an agent.find_reliable_tool(need, optionalcategory,min_score) — Registry search by real uptime/latency/schema scores.agent_memory_guide(wallet,task) — the two-step signed Memory flow, explained to the model.counterparty_check(address) — OFAC screening and wallet risk (plus Identity/Reputation) before you pay someone.insider_watch(ticker, optionaldays) — insider trades, insider summary and 8-K events for a stock.trade_idea_check(symbol, optionaltimeframe) — verdict, volatility, positioning and news for a trade idea.
Environment variables
Var | Required | Notes |
| no | Free, rate-limited access across all four services (same key works everywhere). |
| no | Base-mainnet wallet private key. If set, every call auto-pays the x402 challenge in USDC — no key needed. |
| no | Override the Trading Data API base (default |
| no | Override the Protocol Health Oracle base (default |
| no | Override the Token Risk Oracle base (default |
| no | Override the Broker Sync API base (default |
| no | Free-tier keys for the paid calls of Registry, Identity, Sanity and Memory search. Omit to get the x402 challenge instead. |
| for | Tenant Bearer key returned once by |
| no | Override the matching service base (defaults are the |
| no | Override the platform directory base used by resources (default |
If neither WICKEDAPI_API_KEY nor WICKEDAPI_PAYER_PRIVATE_KEY is set, paid calls still succeed at the protocol level — you'll get the real 402 challenge back as the tool result instead of data. If one service's spec fails to load (network hiccup, that service is down), its tools are simply skipped for the session — the rest still register normally.
Local development
npm install
npm test # builds, then unit + end-to-end tests (e2e needs network)
node dist/index.js # stdio
node dist/http.js # streamable HTTP on $PORT (default 8080)What this is not
This server doesn't reimplement any data logic — it's a thin bridge from MCP tool calls to the live Wicked HTTP endpoints across all ten services. All the actual market data, indicators, scoring, and risk signals live in the APIs themselves.
Available Tools
108 toolsatrARead-onlyIdempotentInspect
[Trading Data API] Average True Range (Wilder's) + volatility-regime classification (low/normal/high/extreme by historical percentile). Crypto or stocks.
Example: /v1/atr?symbol=BTC&timeframe=1h&period=14
Use when you need volatility for position sizing or stops: Wilder ATR plus a low/normal/high/extreme regime. Not for implied volatility for BTC/ETH (use volatility).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Optional. stock|crypto for non-curated symbols. | |
| period | No | Optional. ATR period (default 14). | |
| symbol | Yes | Required. e.g. BTC, NVDA, SPY (or any with &class=). | |
| timeframe | No | Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, but the description goes well beyond them: it discloses the x402/USDC-on-Base payment model, the free path via WICKEDAPI_API_KEY, and that an unauthenticated call yields HTTP 402 with a decoded price quote rather than a failure. That payment-semantics detail is exactly the kind of context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and regime classification are front-loaded, followed by a concrete example, usage routing, and a compact behavior note. Slightly long due to the payment paragraph, but each block (example, exclusion, pricing) carries distinct 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?
For a read-only computed-metric tool with full parameter documentation and no output schema, the definition covers what it computes, when to use it, the sibling alternative, and the payment/auth edge case an agent must handle. Nothing material 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 symbol, timeframe, period, and class are already documented with defaults and enum-like value lists in the schema. The example URL reinforces the symbol/timeframe/period usage but the description adds no semantics beyond the schema, making baseline 3 correct.
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 computation — "Average True Range (Wilder's) + volatility-regime classification (low/normal/high/extreme by historical percentile)" — for a named resource domain (crypto or stocks). It also distinguishes itself explicitly from the sibling `volatility` tool (implied volatility for BTC/ETH).
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?
"Use when you need volatility for position sizing or stops" names the motivating use cases, and "Not for implied volatility for BTC/ETH (use volatility)" gives an explicit exclusion with the correct alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
basisARead-onlyIdempotentInspect
[Trading Data API] Spot-vs-perp basis (premium %) with funding-implied annualized carry. Spot from Coinbase; perp marks from Binance + Bybit.
Example: /v1/basis?symbol=BTC
Use when you want the spot-vs-perp premium and funding-implied annualized carry for a basis trade. Not for raw funding data (use funding_oi).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. Base crypto symbol (e.g. BTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds important context beyond annotations: pricing via x402 or API key, and that an unauthenticated request returns HTTP 402 with a decoded price in payment_required, explicitly framed as a quote rather than a failure.
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 computation, then immediately provides an example, a usage boundary, and payment behavior. Every sentence contributes to correct selection or invocation, with no wasted text.
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 one-parameter, read-only trading data tool with no output schema, the description covers data sources, use case, sibling exclusion, and the important payment/402 behavior. 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?
Schema coverage is 100%, so the symbol parameter is already documented as a required base crypto symbol. The description provides an example call and data sources but does not add further semantic meaning to the parameter itself beyond what the schema already says.
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 computation: spot-vs-perp basis (premium %) with funding-implied annualized carry, and names the exact data sources. It distinguishes the tool from the sibling funding_oi by explicitly saying it is not for raw funding data.
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 an explicit use case ('when you want the spot-vs-perp premium and funding-implied annualized carry for a basis trade') and names the alternative for raw funding data (funding_oi). No inference is required to choose between this and the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_sync_balancesARead-onlyIdempotentInspect
[Broker Sync API] Cash & buying power per connected account (normalized).
Use when you want cash and buying power per connected account. Not for holdings (use broker_sync_positions).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds important payment and auth context: x402 USDC on Base, free with WICKEDAPI_API_KEY, and HTTP 402 with payment_required as a quote rather than a failure.
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 short and front-loads purpose, then usage, then behavioral notes. It has minor redundancy between the first sentence and the 'Use when' sentence, both restating 'cash and buying power per connected account'.
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 one-parameter read tool with rich annotations and no output schema, the description covers purpose, usage boundaries, alternative routing, and payment behavior. Nothing critical is missing for 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 has 100% description coverage, but the only parameter (user_id) is described merely as 'Required.' The description adds no extra meaning about user_id, so the high schema coverage 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 states a specific resource and metric: cash and buying power per connected account, normalized. It also explicitly distinguishes from broker_sync_positions, so an agent can disambiguate 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?
It gives an explicit when-to-use statement ('Use when you want cash and buying power per connected account') and an explicit when-not-to-use with the exact alternative ('Not for holdings (use broker_sync_positions)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_sync_connectionsARead-onlyIdempotentInspect
[Broker Sync API] List a user's connected brokerage accounts (normalized).
Use when you want a user's connected brokerage accounts in a normalized shape. Not for holdings (use broker_sync_positions) or cash (use broker_sync_balances).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, but the description adds genuinely new behavior: x402 USDC-on-Base pricing, the API-key bypass, and the fact that an HTTP 402 with decoded price in payment_required is a quote rather than a failure. That payment/error semantics is not derivable from any structured field. It stops short of describing the normalized return shape or any auth/registration prerequisite tied to broker_sync_register_user.
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, then usage, then behavior — good ordering, and every section carries signal. Minor redundancy between the opening sentence and the 'Use when you want... normalized shape' sentence, which restates the same noun phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should hint at the return shape; 'normalized' is asserted but never unpacked (which account fields, pagination, empty-account behavior). Everything else an agent needs to invoke it correctly — scope, alternatives, payment path, 402 semantics — is present.
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, but the schema itself only says 'Required.' for user_id — it never states that this is a broker-sync user identifier (potentially distinct from a wallet address or registry identity). The description does not compensate for that ambiguity.
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 a user's connected brokerage accounts') with a scope qualifier ('normalized'). The description also names the two nearest siblings (broker_sync_positions, broker_sync_balances) it is not, so an agent can discriminate 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?
Gives an explicit when-to-use clause plus two explicit exclusions routed to alternate tools ('Not for holdings (use broker_sync_positions) or cash (use broker_sync_balances)'). This is the strongest form of sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_sync_positionsARead-onlyIdempotentInspect
[Broker Sync API] Real positions across all of a user's connected brokerages, one normalized schema, stamped as_of.
Use when you want a user's real positions across all connected brokerages in one schema. Not for cash and buying power (use broker_sync_balances).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral facts: it is openWorld and priced via x402 USDC on Base, and critically that an HTTP 402 with payment_required is a price quote rather than a failure. That last detail prevents an agent from misclassifying a normal response as an error, which 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-loads the payload in the first sentence, then labels the routing rule and the behavioral notes explicitly ('Use when', 'Not for', 'Behavior:'). Three short blocks, no filler, and the most decision-relevant content comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does sketch the return ('real positions ... one normalized schema, stamped as_of'), which is enough for an agent to know what comes back. It stops short of naming any position fields or the shape of the multi-brokerage aggregation, which is the only remaining gap for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100%, so the baseline is 3. The description adds no meaning about user_id itself (e.g. that it is the broker_sync-registered user id from broker_sync_register_user), so nothing is gained 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 resource (real broker positions across all connected brokerages) plus the key differentiator (one normalized schema, stamped as_of). It explicitly contrasts itself with broker_sync_balances, so an agent can distinguish it from the sibling 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?
Gives a positive condition ('Use when you want a user's real positions across all connected brokerages in one schema') and a negative one with the named alternative ('Not for cash and buying power (use broker_sync_balances)'). That is when-to-use, when-not-to-use, and the substitute in two sentences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_sync_prop_firmsARead-onlyIdempotentInspect
[Broker Sync API] Prop-firm platform integration registry — live-verified methods (Topstep ProjectX API, FTMO MatchTrader bridge) and connection status.
Use when you want the registry of prop-firm platforms and which integration methods are live-verified. Not for a user's own accounts (use broker_sync_connections).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes beyond them with operationally critical context: pricing is x402 (USDC on Base) or free with an API key, and an HTTP 402 is a price quote rather than an error. That last point prevents an agent from misinterpreting a payment challenge as a failure.
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 blocks — what it is, when to use it versus the alternative, and how it behaves/pays — with the scope front-loaded. Every sentence carries distinct information; no restatement of the title or annotations.
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?
Complete enough to call correctly: no params, safety covered by annotations, and the payment path explained. The only mild gap is that it doesn't describe the shape of the returned registry (e.g., per-firm method/status fields), which matters slightly since there is no output 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?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The description appropriately spends no words on parameters and focuses on scope and payment behavior instead.
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 — a registry of prop-firm platform integrations with live-verified method names (ProjectX, MatchTrader) and connection status. It also explicitly differentiates itself from the nearest sibling, broker_sync_connections, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ("registry of prop-firm platforms and which integration methods are live-verified") and an explicit when-not-to-use with the named alternative ("Not for a user's own accounts (use broker_sync_connections)"). Nothing 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.
broker_sync_register_userAInspect
[Broker Sync API] Register a user with SnapTrade and get a brokerage connection-portal URL.
Use when you are onboarding a user and need a SnapTrade brokerage connection-portal URL. Not for reading data for an already connected user.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | Your application's stable identifier for this end user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it states that the tool writes state upstream and requires credentials or a wallet signature where applicable. This complements readOnlyHint=false and openWorldHint=true. It does not elaborate on non-idempotency or what happens if the user already exists, but annotations already declare idempotentHint=false.
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 purpose and usage, then behavior, with no major digressions. The phrase 'noted above where applicable' is slightly vague and boilerplate-like, keeping it from a perfect conciseness score.
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 one-parameter registration tool with no output schema, the description covers purpose, usage, side effect, and the returned portal URL. The main remaining gap is that it does not specify behavior when user_id already exists or exactly which credentials are needed, but annotations cover the core safety profile.
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 sole user_id parameter is well documented in the schema as the application's stable identifier for the end user. The description does not add parameter-specific semantics beyond the schema, so 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 states a specific action (register a user with SnapTrade) and a concrete outcome (get a brokerage connection-portal URL). It also distinguishes this onboarding flow from reading data for an already connected user, which separates it from sibling read tools like broker_sync_balances and broker_sync_connections.
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 explicit when-to-use guidance (onboarding a user who needs a SnapTrade connection-portal URL) and a clear when-not condition (reading data for an already connected user). It does not name the specific alternative sibling to use for reading data, so it falls just short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_sync_transactionsARead-onlyIdempotentInspect
[Broker Sync API] Transaction/activity history across brokerages.
Use when you want a user's transaction and activity history across brokerages. Not for current holdings (use broker_sync_positions).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Optional. YYYY-MM-DD. | |
| from | No | Optional. YYYY-MM-DD. | |
| user_id | Yes | Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint false), and the description goes beyond them with non-obvious operational detail: pricing via x402/USDC, free with an API key, and that a 402 response is a price quote rather than an error. That last point prevents an agent from misclassifying a normal outcome as failure.
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 one-line scope, then usage/routing, then behavior. Every sentence carries distinct load: the 402 clause in particular is the kind of detail that is expensive to rediscover at call time.
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 3-parameter read tool with no output schema, this is nearly complete: it names the resource, the alternative, and the payment/auth failure mode. The only gap is that the shape of a transaction record on success is left unspecified, so an agent cannot predict the response fields.
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 user_id, from, and to are already documented with date format. The description adds no parameter-level meaning (e.g., default date window or per-broker ID semantics), 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?
States a specific resource (transaction/activity history) and its scope (across brokerages), and explicitly names the sibling it must not be confused with (broker_sync_positions for holdings). The bracketed API tag further disambiguates it within a large tool 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?
"Use when you want a user's transaction and activity history across brokerages" gives the positive trigger, and "Not for current holdings (use broker_sync_positions)" gives the exclusion plus the named alternative. Both directions of routing are covered with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_balanceARead-onlyIdempotentInspect
[Trading Data API] Native-token balance (ETH/POL) for any address or ENS name on Ethereum, Base, Arbitrum, Optimism or Polygon. Live from the chain over redundant RPCs — wei plus formatted units.
Example: /v1/chain-balance?address=vitalik.eth&chain=ethereum
Use when you need the native-token balance (ETH/POL) of an address or ENS name on Ethereum, Base, Arbitrum, Optimism or Polygon. Not for token balances (use chain_token_balance) or a full holdings view (use wallet_portfolio).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). | |
| address | Yes | Required. A 0x address or an ENS name (e.g. vitalik.eth). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/open-world, and the description adds real context beyond them: redundant RPC sourcing, the wei-plus-formatted return shape, and the x402 payment flow — including that an HTTP 402 with payment_required is a price quote rather than an error, which prevents an agent from misreading a non-failure.
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 tightly organized (example, usage, behavior). There is mild redundancy — the first sentence already implies the 'Use when' restatement of chains and tokens — but the payment caveat earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description states the return format (wei plus formatted units), the chains, the inputs, and the auth/payment outcomes. An agent has everything needed to call it and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by naming the supported chain values, the default (base, also in schema), and providing a concrete example call with both parameters populated. It stops short of adding format 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?
States a specific verb+resource (native-token balance) plus the supported chains and input types (address or ENS). It also explicitly distinguishes itself from siblings chain_token_balance and wallet_portfolio, so an agent can route without opening another 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?
"Use when you need the native-token balance... Not for token balances (use chain_token_balance) or a full holdings view (use wallet_portfolio)" gives explicit when, when-not, and named alternatives. Routing is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_blockARead-onlyIdempotentInspect
[Trading Data API] Block header lookup: number, hash, timestamp, miner, tx count, gas used/limit and base fee. Latest by default, or any block number, safe or finalized.
Example: /v1/chain-block?chain=base&block=latest
Use when you need a block header (number, hash, time, miner, gas, base fee), latest by default. Not for a single transaction (use chain_tx).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | Optional. A block number, "latest", "safe" or "finalized" (default latest). | |
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new context: pricing is x402 (USDC on Base) or free with WICKEDAPI_API_KEY, and a 402 response is a price quote rather than a failure. That distinction prevents an agent from misreading a payment challenge as an error.
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 purpose and fields, then example, exclusions and payment behavior in a scannable order. The payment sentence is a bit long but earns its place; the example URL is short and useful.
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-optional-param read tool with no output schema, the description fully compensates by enumerating returned fields, defaults, and the 402 edge case. Nothing an agent needs 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?
Schema description coverage is 100% and both parameters already document accepted values and defaults, so the description only reinforces defaults ("latest" for block, base for chain) rather than adding syntax or edge cases. Baseline 3 is appropriate when the schema carries the parameter burden.
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?
Opens with a specific verb+resource ("Block header lookup") and enumerates exactly the returned fields: number, hash, timestamp, miner, tx count, gas used/limit, base fee. It also names the sibling it is not (chain_tx), so an agent can separate it from a transaction lookup without opening either 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?
States the selection condition ("Use when you need a block header ... latest by default") and an explicit exclusion with the alternative: "Not for a single transaction (use chain_tx)." Acceptable block selectors (number, latest, safe, finalized) are spelled out, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_ensARead-onlyIdempotentInspect
[Trading Data API] ENS lookup on Ethereum mainnet in either direction: name to address, or address to primary name.
Example: /v1/chain-ens?name=vitalik.eth
Use when you need to resolve an ENS name to an address, or an address to its primary ENS name. Not for non-ENS lookups.
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Optional. An ENS name to resolve (e.g. vitalik.eth). Either name or address is required. | |
| address | No | Optional. An address to reverse-resolve to its primary ENS name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, and the description does not contradict them — it confirms "read-only." Beyond annotations, it discloses the payment model (x402 USDC on Base or free with an API key) and explains that an HTTP 402 contains a decoded price quote rather than being a failure, which is exactly the non-obvious behavior an agent needs to avoid misinterpreting the response.
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 definition is front-loaded with the core purpose, followed by an example and then operational behavior. The "either direction" phrasing and the subsequent "Use when you need to resolve..." sentence repeat the same point slightly, but the overall text is efficient and every remaining sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with no output schema, the description covers purpose, directionality, an example, payment behavior, and the 402 response semantics. It does not explicitly state the return shape (e.g., resolved address string vs. primary name), though the bidirectional framing strongly implies it, leaving a minor gap.
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 explains both parameters, including optionality and the name-or-address requirement. The description adds directionality and a concrete `/v1/chain-ens?name=vitalik.eth` example, but it does not clarify the schema's internal inconsistency between `required: ["name"]` and the `name` field being marked optional. 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 a specific verb and resource — ENS lookup on Ethereum mainnet — and explicitly covers both directions (name→address and address→primary name). It also rules out the adjacent non-ENS lookup case, so an agent can distinguish it from chain_balance, chain_tx, and other chain siblings 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?
It gives a clear when-to-use statement (resolving ENS names or reverse-resolving addresses) and an explicit exclusion ("Not for non-ENS lookups"). It stops short of naming an alternative sibling, but there is no other ENS tool in the sibling list, so the routing guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nonceARead-onlyIdempotentInspect
[Trading Data API] Transaction count (nonce) for an address or ENS name: confirmed nonce plus pending nonce, so an agent can sign the next transaction without a collision.
Example: /v1/chain-nonce?address=0xB71C06dAC44c91bc997FB84C247DeEF676F4A9f6&chain=base
Use when you need an address's confirmed and pending transaction count before building a transaction. Not for balances.
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). | |
| address | Yes | Required. A 0x address or an ENS name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the description goes further by disclosing the paywall: x402 USDC on Base, free with an API key, and that a bare HTTP 402 carries a price quote rather than a failure. That last point is genuinely useful behavioral context an agent could otherwise misread as an error, though failure modes for an unresolvable ENS name or bad chain are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded before the example and pricing details, and every sentence is on-topic. The pricing sentence is slightly long relative to its value, but it earns its place because the 402 behavior is counterintuitive.
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 tool with no output schema, the definition covers what is returned at a conceptual level (confirmed plus pending nonce) and explains the payment path. It does not name the response field names, which would be the remaining gap for an agent parsing the result.
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%, documenting both address (0x or ENS) and chain (with the five supported values and base default), so the description need not repeat them. The worked example reinforces the shape of a call but adds no new constraint beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — transaction count (nonce) for an address or ENS name — and specifies that both confirmed and pending nonces are returned. The phrase 'Not for balances' explicitly separates it from chain_balance and chain_token_balance among the 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?
'Use when you need an address's confirmed and pending transaction count before building a transaction' gives a clear triggering condition, and 'Not for balances' gives an exclusion. It stops short of naming the specific alternative tool (chain_balance) the way an ideal definition would, but the intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_token_balanceARead-onlyIdempotentInspect
[Trading Data API] ERC-20 token balance for an address or ENS name, with token symbol and decimals read from the contract. Ethereum, Base, Arbitrum, Optimism, Polygon.
Example: /v1/chain-token-balance?address=0xB71C06dAC44c91bc997FB84C247DeEF676F4A9f6&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chain=base
Use when you need the balance of one ERC-20 token for an address or ENS name. Not for native balance (chain_balance) or everything a wallet holds (wallet_portfolio).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). | |
| token | Yes | Required. ERC-20 contract address. | |
| address | Yes | Required. Holder: a 0x address or an ENS name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds critical context those cannot: pricing is x402 USDC on Base or free with an API key, and an HTTP 402 with payment_required is a price quote rather than a failure. The note that symbol and decimals are read from the contract also signals an extra on-chain call and its latency implications.
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 purpose sentence, then example, then usage routing, then behavioral notes — a sensible order with no filler. The long example URL takes significant space for what it conveys, keeping this just short of ideal.
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 three-parameter read tool with full schema coverage and no output schema, this covers purpose, alternatives, chains and the paywall failure mode. The only gap is the exact shape of the returned balance/symbol/decimals payload, which is implied but not spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further with a worked example URL showing a real address, token contract and chain=base, plus restating that an ENS name is acceptable for address. That is modest added value rather than new semantics, since defaults and chain values already live 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 verb and resource (ERC-20 token balance for an address or ENS name) plus supported chains, and explicitly names the two sibling tools it is not (chain_balance for native, wallet_portfolio for holdings). An agent can distinguish it from every sibling 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?
'Use when you need the balance of one ERC-20 token for an address or ENS name' gives the positive condition, and 'Not for native balance (chain_balance) or everything a wallet holds (wallet_portfolio)' gives the exclusions and the exact alternatives to route to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_txARead-onlyIdempotentInspect
[Trading Data API] Transaction lookup by hash: status (success/reverted/pending), block, from/to, value, nonce, gas used, effective gas price and log count.
Example: /v1/chain-tx?hash=0x...&chain=base
Use when you need the status and details of a transaction by hash. Not for account-level data (use chain_balance or chain_nonce).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Required. 0x-prefixed 32-byte transaction hash. | |
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds important context beyond annotations: the x402/USDC pricing model, API-key alternative, and the HTTP 402 quote behavior, which is explicitly framed as a price quote rather than a failure.
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, followed by a compact example, usage boundaries, and payment behavior. Each section adds useful information without wasted text.
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?
There is no output schema, but the description lists the returned transaction fields. Annotations cover safety traits, and the description covers the unusual payment/402 behavior, leaving no major gaps for 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?
Schema description coverage is 100%, so the schema already documents hash and chain thoroughly, including the default chain and accepted values. The description's example reinforces usage but does not add parameter semantics 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 states a specific verb and resource: transaction lookup by hash, and it enumerates the returned fields (status, block, from/to, value, nonce, gas, logs). It also explicitly distinguishes itself from account-level siblings chain_balance and chain_nonce.
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 a clear when-to-use condition: when you need status and details of a transaction by hash. It also gives a when-not-to-use condition and names the alternatives to use for account-level data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_newsARead-onlyIdempotentInspect
[Trading Data API] Latest crypto headlines aggregated from Cointelegraph, Decrypt and Bitcoin Magazine, newest first: title, source, URL, published time and a short summary. Filter by keyword or source.
Example: /v1/crypto-news?q=etf&limit=10
Use when you want the latest crypto headlines from major outlets, newest first. Not for market data.
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional. Keyword filter on title and summary. | |
| limit | No | Optional. 1-50 (default 20). | |
| source | No | Optional. cointelegraph, decrypt or bitcoinmagazine (default all). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, and the description adds important operational context about x402 payment, API-key access, and HTTP 402 with a decoded price that is not a failure. It does not cover rate limits or pagination behavior, but the payment/auth disclosure is substantive beyond 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 definition is front-loaded with the core purpose, then example, usage, and behavior, which is easy to scan. It repeats 'newest first' and includes some nonessential framing, but most sentences carry useful 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?
For a simple read-only news search with no output schema, the description is complete: it lists return fields, names sources, explains filtering, gives an example, and covers auth/payment behavior. Nothing critical for correct invocation 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 q, limit, and source are already documented in the schema. The description mentions keyword/source filtering and gives an example with q and limit, but it adds little semantic detail beyond what the schema already provides.
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 verb-like capability: latest crypto headlines aggregated from named outlets, newest first, with listed fields. It also explicitly distinguishes the tool from market data, so an agent can route news queries correctly 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?
It gives a clear use case: latest crypto headlines from major outlets, newest first, and an exclusion: not for market data. It does not name a specific alternative market-data sibling such as price or ohlcv, so it falls short of the strongest when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
defi_tvlARead-onlyIdempotentInspect
[Trading Data API] DefiLlama data: TVL by chain, stablecoin circulating supply, or yield pools.
Example: /v1/defi-tvl?view=chains
Use when you need DeFi TVL by chain, stablecoin supply or yield pools from DefiLlama. Not for the health or risk of one protocol (use protocol_health_score).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Optional. chains (default), stablecoins, or yields. | |
| chain | No | Optional (yields view). Filter pools by chain, e.g. Ethereum. | |
| limit | No | Optional. Rows to return (default 20, max 100). | |
| project | No | Optional (yields view). Filter pools by project, e.g. aave-v3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the payment model (x402 USDC on Base, or free with an API key) and, critically, that an unauthenticated call returns HTTP 402 with a decoded price quote rather than an error. That prevents an agent from misclassifying a normal paid response as a failure.
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?
Structure is strong: capability line, example, usage routing, then behavioral notes. The second sentence partly restates the first (repeating the three views), a small redundancy that keeps it short of perfect.
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?
There is no output schema, so the description should ideally hint at the return shape (e.g. a ranked list of chains with TVL values), which it does not. Everything else an agent needs — scope, exclusions, cost/auth behavior — is present.
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 view/chain/limit/project are already documented, including defaults and max. The description adds only an example query string (`?view=chains`), which is marginal beyond the schema; 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?
First line names the source (DefiLlama) and the three concrete resources: TVL by chain, stablecoin circulating supply, yield pools. The example endpoint plus the explicit exclusion of protocol-level risk data makes it distinguishable from siblings like protocol_health_score.
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?
"Use when you need DeFi TVL by chain, stablecoin supply or yield pools" states the selecting condition, and "Not for the health or risk of one protocol (use protocol_health_score)" names the alternative and the boundary. Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
earnings_calendarARead-onlyIdempotentInspect
[Trading Data API] US equity earnings announcement calendar: report date, before/after-market timing, analyst EPS estimate + count, market cap, and prior-year actual EPS. Sourced live from Nasdaq's public calendar.
Example: /v1/earnings-calendar?date=2026-07-14&days=3
Use when you want upcoming US earnings dates, timing and analyst estimates. Not for macro events (use macro_calendar) or filed reports (use filings_search).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional. Start date YYYY-MM-DD (default: today). | |
| days | No | Optional. Days to scan forward from date (default 1, max 7). | |
| symbol | No | Optional. Filter to one ticker within the scanned range. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false), and the description adds genuinely new behavioral context: the Nasdaq live source, x402 USDC-on-Base pricing, free-with-API-key path, and — critically — that an HTTP 402 carries a decoded price quote rather than being a failure. That last detail prevents an agent from misreading a paywall response as an error.
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 resource and field list, then example, then when-to-use/alternatives, then behavior. Every sentence carries distinct information; nothing restates the schema or annotations redundantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description compensates by enumerating the returned fields, so an agent knows what it gets back. Combined with payment and error-path disclosure, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by threading date and days together in a concrete example (`?date=2026-07-14&days=3`), clarifying that days is a forward scan window from date. It stops short of explaining how symbol interacts with the range, which the schema only lightly covers.
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 ('US equity earnings announcement calendar') and enumerates the exact fields returned (report date, BMO/AMC timing, EPS estimate + count, market cap, prior-year EPS). Explicitly distinguishes itself from macro_calendar and filings_search by name.
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?
'Use when you want upcoming US earnings dates, timing and analyst estimates' gives the positive condition, and 'Not for macro events (use macro_calendar) or filed reports (use filings_search)' names both alternatives and the conditions that select them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_8k_eventsARead-onlyIdempotentInspect
[Filings Oracle] 8-K material-event alerts classified into categories an agent can act on: earnings, exec_change, material_agreement, acquisition_disposition, bankruptcy, delisting, cybersecurity, auditor_or_restatement, control_change, financing, restructuring_impairment, shareholder_vote, governance, reg_fd, other_events. Each event lists every item with its official label.
Example: /v1/8k-events?category=bankruptcy&days=7
Use when you want 8-K material events already classified (earnings, exec change, material agreement and similar). Not for all form types (use filings_search).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Optional. Look back N days (default 2, max 90). Ignored when since is set. | |
| wait | No | Optional. With since: long-poll up to N seconds (max 25). | |
| limit | No | Optional. Max rows (default 50, max 200). | |
| since | No | Optional. Cursor from meta.cursor of a previous response. | |
| ticker | No | Optional. Ticker symbol. | |
| category | No | Optional. One of the category names above. Default all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and openWorld, but the description adds genuinely new operational context: x402 USDC-on-Base pricing, API-key bypass, and that an HTTP 402 is a price quote rather than a failure — a critical distinction an agent would otherwise misread as an error. It also notes each event carries every item with its official label. Minor gap: no rate limits or row-volume expectations beyond the schema's limit cap.
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 actionable classification list, then a usage line, then the exclusion, then payment behavior — a sensible order with no filler sentences. The category enumeration is long but earns its place because it substitutes for a missing enum; the schema-pointer phrasing could be tightened.
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 six optional parameters and no output schema, the description needs to convey the response shape and it does at a high level ('each event lists every item with its official label'), plus it explains the payment/auth failure mode. It stops short of describing pagination/cursor semantics or the freshness of classified events, which is the main remaining gap for a data-feed tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds value the schema lacks: the full valid set of category values (the schema only says 'One of the category names above' and defines no enum). That enumeration materially improves the chance of a correct category filter. It adds nothing for days/since/wait/limit, which the schema already documents.
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 ('8-K material-event alerts') and immediately scopes it as 'classified into categories an agent can act on', then enumerates the 15 categories. It also names the sibling it is not ('Not for all form types (use filings_search)'), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Use when you want 8-K material events already classified') and an explicit exclusion with the redirect to filings_search. It adds a concrete call example (`?category=bankruptcy&days=7`) that shows the intended filtering pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_filingARead-onlyIdempotentInspect
[Filings Oracle] One filing by accession number, with its parsed items or insider transactions and the SEC document link.
Example: /v1/filing?accession=0001731122-26-001341
Use when you have an accession number and want that one filing with parsed items and the SEC link. Not for searching (use filings_search).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| accession | Yes | Required. SEC accession number, e.g. 0001731122-26-001341. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and non-destructive, but the description adds material context they don't cover: x402 pricing in USDC on Base, free with an API key, and that an unauthenticated call returns HTTP 402 with a decoded price in payment_required rather than being a hard failure. That paywall/error semantics is exactly the kind of behavior an agent cannot infer from structured fields.
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 definition, then a concrete example, then the routing rule, then the payment/behavior note. Every block is short and purposeful, with 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?
For a single-parameter, no-output-schema read tool, the description covers what is returned, how to identify the resource, when to prefer a sibling, and the notable 402 payment path. Nothing an agent needs to invoke it successfully 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% and the single parameter is already documented with an example in the schema. The description's inline example accession and curl-style path only restate that example, adding no new semantics such as format validation or normalization rules. Baseline 3 is appropriate when the schema carries the meaning.
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 resource (one filing) keyed by accession number, plus what comes back (parsed items or insider transactions and the SEC document link). It explicitly distinguishes itself from filings_search, so an agent can route correctly without opening either 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?
Names the precondition ('when you have an accession number') and the exclusion ('Not for searching (use filings_search)'), pointing at the exact sibling to use instead. This is explicit when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_freshnessARead-onlyIdempotentInspect
[Filings Oracle] Proof of real-time: seconds since the last successful SEC poll, age of the newest filing, median and p95 ingest lag (from SEC acceptance time) over the last 200 live filings, last successful poll per form type, and rows stored - Free. Proof of real-time: seconds since the last successful SEC poll, age of the newest filing, median and p95 ingest lag (from SEC acceptance time) over the last 200 live filings, last successful poll per form type, and rows stored.
Example: /v1/freshness
Use when you want proof the SEC feed is live: seconds since the last poll and ingest lag. Not for the filings themselves (use filings_search).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, but the description adds genuinely new operational context: the endpoint is free and needs no key or payment. It also discloses the measurement definitions (lag measured from SEC acceptance time, sampled over the last 200 live filings), which the annotations cannot convey. It stops short of stating caching or refresh cadence of the poller itself.
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 sentence is repeated verbatim, so roughly half the text is dead weight, and the duplication sits before the useful example and usage guidance. What remains (example, when-to-use, when-not, behavior) is well ordered and front-loaded once the redundancy is skipped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must enumerate the returned metrics, and it does so precisely, plus it covers cost/auth. The only gap is that it does not indicate whether the figures are cached or how often they update, which matters for a tool whose entire premise is staleness measurement.
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?
Zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-arg tool applies. The `/v1/freshness` path reference is a harmless extra hint about the underlying endpoint.
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 (SEC filings feed freshness) and enumerates exactly what it reports: seconds since last successful poll, newest filing age, median/p95 ingest lag, per-form-type last poll, and row counts. It also explicitly separates itself from filings_search, which serves the filings themselves.
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?
"Use when you want proof the SEC feed is live" gives a positive trigger, and "Not for the filings themselves (use filings_search)" names the concrete alternative for the adjacent need. The required/not-required split is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_insider_summaryARead-onlyIdempotentInspect
[Filings Oracle] Insider activity rollup for one ticker over a window: open-market buy and sell counts and dollar totals, net flow, distinct buyers and sellers, a cluster-buying flag (three or more insiders buying), and the largest trades.
Example: /v1/insider-summary?ticker=NVDA&days=30
Use when you want a ticker's insider buying and selling rolled up over a window. Not for the underlying trades (use filings_insider_trades).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Optional. Window in days (default 30, max 90). | |
| ticker | Yes | Required. Issuer ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, and the description adds genuinely new context beyond them: it discloses the payment model (x402 USDC on Base or WICKEDAPI_API_KEY) and pre-empts a common misinterpretation by explaining that an HTTP 402 carries a price quote, not a failure. The "Behavior: read-only" line merely restates annotations, which keeps this from 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 substantive content rollup and the sibling exclusion, followed by an example and payment note; every block is useful. Minor waste in the redundant "Behavior: read-only" restatement and a fairly dense opening sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully enumerates the returned fields (counts, dollar totals, net flow, distinct buyers/sellers, cluster flag, largest trades), covers the payment/error path, and covers both parameters. An agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both the required ticker and the days window including default 30 and max 90. The description adds only an example query string, not additional semantics such as ticker format or window edge behavior, 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?
States a specific verb and resource — an insider-activity rollup for one ticker over a window — and enumerates the concrete contents (buy/sell counts, dollar totals, net flow, cluster-buying flag, largest trades). It also names the sibling it is not, filings_insider_trades, so an agent can distinguish it 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?
Explicit when-to-use ("Use when you want a ticker's insider buying and selling rolled up over a window") plus an explicit exclusion and routing to the alternative ("Not for the underlying trades (use filings_insider_trades)"). Nothing 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.
filings_insider_tradesARead-onlyIdempotentInspect
[Filings Oracle] Form 4 insider transactions parsed to one row per trade: insider, role and title, security, code (P purchase, S sale, A grant ...), shares, price, dollar value, shares owned after, direct/indirect, and whether it was under a 10b5-1 plan. Defaults to open-market buys and sells only.
Example: /v1/insider-trades?side=buy&min_value=100000&exclude_10b5_1=true
Use when you want individual Form 4 insider transactions, one row per trade. Not for a per-ticker rollup (use filings_insider_summary).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Optional. Look back N days (default 7, max 90). Ignored when since is set. | |
| role | No | Optional. director, officer or 10pct_owner. | |
| side | No | Optional. buy or sell (open-market purchases / sales). | |
| wait | No | Optional. With since: long-poll up to N seconds (max 25). | |
| limit | No | Optional. Max rows (default 50, max 200). | |
| owner | No | Optional. Case-insensitive substring of the insider's name. | |
| since | No | Optional. Cursor from meta.cursor of a previous response. | |
| ticker | No | Optional. Issuer ticker symbol. | |
| all_codes | No | Optional. true to include grants, option exercises, tax withholding and gifts (default false: open-market P and S only). | |
| min_value | No | Optional. Minimum trade value in USD. | |
| exclude_10b5_1 | No | Optional. true to drop trades made under a pre-arranged 10b5-1 plan. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, it discloses the default filtering behavior, the pricing model (x402 USDC on Base or API key), and crucially that a bare HTTP 402 carries a price quote rather than being a failure — a behavior an agent would otherwise misread as an error.
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 resource and row shape, then field list, then a worked example, then usage and behavior. The example URL and behavior paragraph are useful rather than padding, though the field enumeration is slightly redundant with the schema.
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 an 11-param, no-output-schema read tool, it covers defaults, scope, alternatives, and payment/auth failure semantics. Return shape isn't described (cursor/pagination lives only in schema), but with annotations and full schema coverage this is close to complete.
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 on top by decoding the transaction codes (P/S/A) and restating the open-market default that governs all_codes. It doesn't add much for the cursor/wait long-poll semantics, but that's already fully documented 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?
Specific verb+resource: 'Form 4 insider transactions parsed to one row per trade', and it enumerates the per-row fields the agent will get. It explicitly contrasts with filings_insider_summary, so an agent can pick between them without inspecting 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?
'Use when you want individual Form 4 insider transactions, one row per trade. Not for a per-ticker rollup (use filings_insider_summary)' gives both the selecting condition and the named alternative. It also states the default scope (open-market buys and sells only), which shapes when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_latest_previewARead-onlyIdempotentInspect
[Filings Oracle] The 10 most recent filings across all form types (form, company, ticker, filed_at only) - Free. The 10 most recent filings across all form types (form, company, ticker, filed_at only). Full structured data, filtering and cursors need /v1/filings.
Example: /v1/latest-preview
Use when you want a free glimpse of the 10 most recent filings (form, company, ticker, time). Not for full structured data (use filings_search).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds genuinely useful non-schema context: it is free, requires no key or payment, and is capped at 10 records — none of which the annotations 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?
The opening sentence is immediately duplicated almost verbatim ('The 10 most recent filings across all form types (form, company, ticker, filed_at only) - Free.' followed by the same phrase), wasting space. The remaining example, exclusion and behavior lines are well front-loaded but the redundancy costs 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?
With no output schema, the description compensates by enumerating the returned fields (form, company, ticker, filed_at) and the 10-record cap, and it discloses the free/no-key terms. Complete enough to call correctly; only the result ordering/pagination edge is unstated.
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 is nothing for the description to disambiguate; it simply confirms the no-argument nature with an example path (/v1/latest-preview). Baseline 4 applies for a parameterless tool.
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 resource (10 most recent filings across all form types) plus the exact fields returned, and implicitly scopes it as a free preview versus the paid full endpoint. An agent can distinguish it from filings_search 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?
Explicitly says when to use it ('when you want a free glimpse of the 10 most recent filings') and when not to ('Not for full structured data (use filings_search)'), naming the alternative sibling directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filings_searchARead-onlyIdempotentInspect
[Filings Oracle] Structured SEC filings feed (8-K, Form 4, Schedule 13D/13G, 10-K, 10-Q), ingested within about a minute of SEC acceptance. Filter by form, ticker, CIK or 8-K item; page with a cursor, or long-poll with wait= to receive the next filing the moment it lands.
Example: /v1/filings?form=8-K&item=5.02&days=1
Use when you want structured SEC filings (8-K, Form 4, 13D/13G, 10-K, 10-Q) filtered by ticker, form or time. Not for classified event alerts (use filings_8k_events) or insider trades (use filings_insider_trades).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| cik | No | Optional. SEC CIK number. | |
| days | No | Optional. Look back N days (default 2, max 90). Ignored when since is set. | |
| form | No | Optional. Comma list: 8-K, 4, SCHEDULE 13D, SCHEDULE 13G, 10-K, 10-Q (amendments included). Default all. | |
| item | No | Optional. 8-K item number, e.g. 5.02 (executive change) or 2.02 (earnings). | |
| wait | No | Optional. With since: hold the request up to N seconds (max 25) until a new filing arrives. | |
| limit | No | Optional. Max rows (default 50, max 200). | |
| since | No | Optional. Cursor from a previous response (meta.cursor): returns only filings stored after it, oldest first. | |
| ticker | No | Optional. Ticker symbol, e.g. NVDA. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing ingestion latency (~1 minute from SEC acceptance), pagination via cursor and long-poll semantics with wait=, and the x402/API-key access model including that HTTP 402 carries a decoded price quote rather than being a failure — that last point materially prevents an agent from misreading an error. Slightly short of 5 because it doesn't state rate limits or response envelope shape.
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 resource and freshness promise, then usage routing, then behavior/pricing — a sensible information hierarchy. Minor redundancy: the form-type list (8-K, Form 4, 13D/13G, 10-K, 10-Q) is repeated verbatim in the opening sentence and again in the 'Use when' sentence.
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 an eight-parameter read tool with no output schema, the description covers what an agent needs: filter surface, pagination/polling mechanics, latency expectations, and payment/auth paths including the non-obvious 402-as-quote case. Nothing required 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?
Schema coverage is 100%, so all eight parameters are already documented with defaults and ranges (days default 2/max 90, wait max 25, limit max 200). The description only restates the parameter names in prose ('form, ticker, CIK or 8-K item', 'page with a cursor, or long-poll with wait='), though the inline example does helpfully show day-scoped item filtering. 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?
States a specific verb and resource ('Structured SEC filings feed') with an explicit form-type enumeration and freshness guarantee ('ingested within about a minute of SEC acceptance'). It also names the two sibling tools it is *not* (filings_8k_events, filings_insider_trades), so an agent can disambiguate 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?
Provides an explicit 'Use when...' condition (structured filings filtered by ticker/form/time) plus explicit exclusions routing to filings_8k_events for classified event alerts and filings_insider_trades for insider trades. Nothing about tool selection 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.
funding_oiARead-onlyIdempotentInspect
[Trading Data API] Aggregated perpetual-futures funding rate & open interest from Binance + Bybit, with 7-day average funding, 24h OI change, and a long/short bias signal.
Example: /v1/funding-oi?symbol=BTC
Use when you want perp funding rates and open interest aggregated from Binance and Bybit to gauge leverage and crowding. Not for Hyperliquid-specific data (use hyperliquid) or spot-vs-perp carry (use basis).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. Base crypto symbol (e.g. BTC, ETH, SOL). Mapped to the <SYMBOL>USDT perpetual ticker on Binance/Bybit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description goes well beyond them by disclosing the pricing model: x402 (USDC on Base) or free with an API key, and that an unauthenticated call returns HTTP 402 with `payment_required` as a price quote rather than a failure. That preempts a very likely agent misinterpretation of a 402 response.
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 purpose, then example, then usage/exclusion, then behavior — a clean hierarchy where each block earns its place. Minor waste in the bracketed `[Trading Data API]` prefix and some bold/formatting overhead, but nothing substantive is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by naming the returned metrics (7d avg funding, 24h OI change, bias signal) and the aggregation sources. Combined with the payment-failure behavior and a single well-documented parameter, an agent has everything needed to invoke and interpret the call.
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 `symbol` parameter is already documented in the schema, including the SYMBOLUSDT perpetual mapping. The description only adds a concrete example URL (`/v1/funding-oi?symbol=BTC`), which is mildly useful but not semantic depth beyond the schema. 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?
States a specific verb+resource: aggregates perpetual-futures funding rate and open interest from Binance and Bybit, and names the derived fields (7d avg funding, 24h OI change, long/short bias). It explicitly distinguishes itself from the `hyperliquid` and `basis` siblings, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (gauge leverage and crowding) and two concrete when-not-to-use cases naming the correct alternatives: Hyperliquid-specific data → `hyperliquid`, spot-vs-perp carry → `basis`. This is exactly the routing guidance an agent needs among ~70 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fvgARead-onlyIdempotentInspect
[Trading Data API] Fair Value Gap zones (standard ICT/LuxAlgo) with CE (50%), gap size, age, fill status, distance from price. Standard timeframes match TradingView candles. Crypto or stocks.
Example: /v1/fvg?symbol=BTC&timeframe=1h
Use when you want Fair Value Gap zones (ICT-style imbalances) with fill status and distance from price. Not for swing-high/low liquidity pools (use liquidity_levels).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Optional. stock|crypto for non-curated symbols. | |
| symbol | Yes | Required. e.g. BTC, NVDA, SPY (or any with &class=). | |
| lookback | No | Optional. Timeframe candles to analyze (default 120, max 500). | |
| timeframe | No | Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h). Matches TradingView candles. | |
| min_gap_pct | No | Optional. Filter out gaps smaller than this % of price (default 0 = all). | |
| include_filled | No | Optional. true to include filled FVGs (default false = active only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains pricing behavior: x402 USDC on Base or free with WICKEDAPI_API_KEY, and clarifies that an HTTP 402 response is a price quote rather than a failure. It also mentions read-only behavior and that timeframes match TradingView candles, adding useful context not covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core resource and returned fields, then moves to an example, usage boundaries, and payment behavior. Every sentence contributes useful information without repetition or waste.
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?
There is no output schema, but the description enumerates the relevant return fields (CE, gap size, age, fill status, distance from price). With all parameters documented in the schema and pricing/usage behavior covered in the description, an agent has enough information to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail. The description only provides an example using symbol and timeframe, adding little semantic information beyond what the schema already provides.
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 (Fair Value Gap zones) and enumerates the exact data returned: CE, gap size, age, fill status, and distance from price. It also explicitly distinguishes itself from liquidity_levels, so an agent can tell what it does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the tool ('when you want Fair Value Gap zones ... with fill status and distance from price') and when not to use it ('Not for swing-high/low liquidity pools'), naming the alternative sibling tool. This is explicit routing guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gasARead-onlyIdempotentInspect
[Trading Data API] Free, no signup required. Ethereum gas oracle (safe/propose/fast gas prices + base fee, in gwei), via Etherscan.
Example: /v1/gas
Use when you need current Ethereum gas prices (safe, standard, fast) and the base fee before sending a transaction. Not for other chains.
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds valuable context: 'Free, no signup required' and 'no key or payment needed,' which are not in annotations. It also mentions the data source (Etherscan). It stops short of mentioning rate limits or data freshness, keeping it at a 4.
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, followed by a usage example, then explicit when-to-use/when-not, and finally a brief behavior note. Every sentence adds value with no 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?
For a simple, parameterless data retrieval tool with rich annotations and no output schema, the description covers what it does, when to use it, and key behavioral traits (free, no key). It is complete enough for an agent to call it correctly without further information.
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, the baseline is 4. The description does not need to explain any parameter semantics, and it correctly focuses on purpose and usage.
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 specifies the resource (Ethereum gas oracle), the data provided (safe/propose/fast gas prices + base fee, in gwei), and the source (Etherscan). It explicitly distinguishes from siblings by stating 'Not for other chains,' making it immediately clear this is not a general blockchain data 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?
It gives explicit when-to-use guidance: 'Use when you need current Ethereum gas prices ... before sending a transaction.' It also states when not to use: 'Not for other chains.' This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperliquidARead-onlyIdempotentInspect
[Trading Data API] Hyperliquid perpetual context: funding (hourly), open interest, mark/oracle/mid price, premium, 24h volume. Not geo-blocked.
Example: /v1/hyperliquid?symbol=BTC
Use when you need Hyperliquid perp context: funding, open interest, mark/oracle price, premium and volume. Not for Binance/Bybit aggregates (use funding_oi).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. Hyperliquid coin name (e.g. BTC, ETH, SOL). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-derivable behavior: x402 USDC-on-Base pricing or free with an API key, and that an HTTP 402 carries a decoded price quote in payment_required rather than being a failure. It also warns the endpoint is not geo-blocked, which no annotation conveys.
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 payload fields, then example, then usage routing, then behavior — a sensible order with no filler. The opening field list and the 'Use when you need...' sentence partially restate the same content, which is the only 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?
For a single-parameter read tool with no output schema, the description covers return contents, auth/payment paths, the 402 edge case, and the sibling alternative. Nothing an agent needs to call it or interpret a non-200 response 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% with a described required symbol field, so the baseline is 3; the description adds a concrete invocation example (`/v1/hyperliquid?symbol=BTC`) and the coin-name convention (BTC, ETH, SOL) that reinforces the schema's intent. It stops short of any edge-case handling for invalid symbols.
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 the specific resource (Hyperliquid perpetual context) and enumerates exactly what it returns: hourly funding, open interest, mark/oracle/mid price, premium, 24h volume. It explicitly separates itself from the sibling funding_oi by naming it as the tool for Binance/Bybit aggregates, so an agent can discriminate 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?
Gives an explicit when-to-use ('need Hyperliquid perp context') and an explicit when-not-to-use with the named alternative ('Not for Binance/Bybit aggregates (use funding_oi)'). This is the strongest form of routing guidance among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_get_challengeAInspect
[Wicked Identity] Request a real time-boxed liveness challenge (constrained-generation task, 30s budget). The clock starts when this returns: answer in ONE pass via identity_submit_response before expires_at. Real wallet: needs a fresh signed nonce (fetch + sign the nonce for the NEXT call before calling this). Sandbox: just wallet + sandbox_token.
Use when your wallet is registered and you want the time-boxed agent-liveness challenge (about 12 seconds to answer). Not for registering first (use identity_register).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | No | Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox. | |
| wallet | Yes | Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register. | |
| signature | No | Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox. | |
| sandbox_token | No | Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false, idempotentHint=false, openWorldHint=true, and the description adds real value beyond that: the clock starts on return, the challenge is one-pass, and real-wallet vs sandbox credential requirements differ. Minor blemish: it says '30s budget' and then 'about 12 seconds to answer', which leaves the actual time constraint ambiguous. The trailing 'writes state upstream (not read-only)' largely restates the annotation.
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 action and the clock constraint, and the wallet/sandbox split is clearly separated. It loses a point for redundancy: the closing 'Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable' repeats the annotation and the credential info already stated in the first paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does step in by naming expires_at as a returned field and by describing the one-pass answer flow. Some return-shape detail (what the challenge itself looks like) is left implicit, but for a challenge-issuing tool the agent has enough to call it and to know what to do next.
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 genuine ordering semantics the schema cannot: for a real wallet you must fetch and sign the nonce for the next call BEFORE invoking this, and sandbox uses wallet + sandbox_token instead of nonce/signature. That cross-tool sequencing is the kind of meaning the schema descriptions only hint at.
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 ('Request a real time-boxed liveness challenge') and immediately characterizes the payload ('constrained-generation task'), so the agent knows what it is getting back in kind, not just name. It also names the sibling it is not (identity_register) and the follow-up (identity_submit_response), making it distinguishable without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions ('wallet is registered', fresh nonce fetched and signed before the call) and an explicit exclusion ('Not for registering first (use identity_register)'). The answer path via identity_submit_response before expires_at is spelled out, so the agent knows the next tool and the deadline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_get_nonceAInspect
[Wicked Identity] Real-wallet path, step 1: a one-time nonce + message to sign. Every signed identity call needs a fresh nonce (single-use, 5-minute TTL). Not needed for sandbox identities.
Use when you are about to register or take a challenge and need a fresh one-time message to sign. Not for checking someone's status, which needs no signature.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already show it is not read-only or idempotent, the description adds high-value behavioral context: the state is written upstream, it is single-use, and has a 5-minute TTL. This critical timing/state information is crucial for agent logic.
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 highly structured and avoids filler. While slightly verbose to include all contextual details, the information is front-loaded and clearly segmented, making it easy to parse for an AI.
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?
The definition is highly complete for a step-based flow tool, detailing its purpose, required input format (wallet context), and stateful, non-idempotent nature, which fully equips the agent to use it 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?
Although the schema coverage is 100%, the description adds vital meaning by specifying that the input 'wallet' must be a '0x wallet address on Base' or a specific sandbox wallet ID. This guides the agent on the required format and environment context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as a prerequisite for signing or taking a challenge ('a one-time nonce + message to sign'). It effectively differentiates itself from sibling tools like identity_status, which is used for checking status.
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 provides explicit instructions on when to use the tool (register or take a challenge) and when explicitly *not* to use it (checking status), leaving no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_get_test_keyAInspect
[Wicked Identity] Get a free self-serve test API key (7-day expiry, 20 requests/min) to use as api_key on identity_status instead of paying via x402. Limit: 5 per IP per day.
Use when you are testing the Identity API and want a free test key for the sandbox. Not for production use.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional name for this key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful behavior beyond annotations: 7-day expiry, 20 requests/min, 5 keys per IP per day, and that it writes state upstream rather than being read-only. The credential requirement phrase is somewhat vague, but the description is consistent with the annotations and discloses important limits.
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 purpose and limits, and most sentences earn their place. The closing behavior sentence is slightly boilerplate and its 'noted above where applicable' phrasing is vague, but overall it remains readable and 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?
For a mutation tool with annotations present, the description covers the key missing context: expiry, rate limits, usage scope, and non-production status. It does not describe the returned key object, which is a minor gap given there is no output 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?
The input schema has 100% description coverage for the single optional label parameter, so the baseline is 3. The description does not add meaning about the label parameter beyond what the schema already provides.
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: getting a free self-serve test API key. It also distinguishes the use case from paying via x402 and names the sibling tool where the key is used, identity_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (testing the Identity API and wanting a free sandbox key) and when not to use it (not for production). It also names the alternative payment path via x402.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_jwksARead-onlyIdempotentInspect
[Wicked Identity] Public RS256 keys to verify an assertion_token locally. Free. Set sandbox=true for the separate key set that signs sandbox assertions.
Use when you want the public keys to verify an assertion token locally. Not for checking a wallet's status (use identity_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | true = the sandbox key set (issuer wicked-identity-sandbox). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, so the lower bar applies; the description still adds that the call is free and that sandbox=true returns a separate key set signing sandbox assertions (issuer wicked-identity-sandbox). It omits return shape (e.g. JWKS format), but the annotation set plus the added sandbox-key context is solid.
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 sibling exclusion follows immediately. The trailing 'Behavior: read-only.' is redundant with readOnlyHint=true and slightly dilutes an otherwise tight description.
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-required-parameter read tool with full schema coverage and complete annotations, the description covers purpose, the sandbox parameter's meaning, and routing to the sibling. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented in the schema. The description only mildly extends it by noting the sandbox key set signs sandbox assertions, so 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?
States a specific verb+resource: returns public RS256 keys for local verification of an assertion_token, plus the sandbox variant. It also explicitly distinguishes itself from identity_status, so an agent can route 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?
Gives an explicit 'Use when' condition (verifying an assertion token locally) and an explicit 'Not for' exclusion with the named alternative (identity_status for wallet status). Both the positive and negative routing signals are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_registerAInspect
[Wicked Identity] Register a REAL wallet (no stake required). Needs your signature over identity_get_nonce's message; this tool never signs. Sandbox identities are registered by identity_sandbox_register instead.
Use when you want a lightweight identity record for your wallet, with a signature over the nonce message. Not for proving you are an agent (use identity_get_challenge next).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Nonce from a FRESH identity_get_nonce call. | |
| wallet | Yes | Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register. | |
| signature | Yes | 0x-prefixed ECDSA signature over that nonce's message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds useful context beyond those annotations: it writes state upstream, requires a wallet signature over the nonce message, and this tool never signs on the user's behalf. It does not describe the response shape, but the safety/mutation profile is well covered.
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 action, prerequisites, and alternatives. It is slightly verbose with the bracketed prefix and a final behavior sentence that partially repeats annotation information, but every part is relevant and no major waste is present.
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 mutation tool with full schema coverage, rich annotations, and no output schema, the description gives enough operational context to call it correctly: prerequisites, non-signing behavior, alternatives, and upstream write behavior. It could be slightly more complete by noting what a successful registration returns or records, but that is a minor gap.
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 schema documents wallet, nonce, and signature with formats. The description reinforces that the nonce should come from a fresh identity_get_nonce call and that the signature is over that nonce's message, but this largely repeats schema-level meaning. Baseline 3 is appropriate when the schema carries parameter semantics.
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 verb and resource: register a REAL wallet as an identity. It explicitly distinguishes this from sandbox registration and from agent-challenge proving, so an agent can select it without opening sibling 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?
It gives explicit when-to-use guidance ('lightweight identity record for your wallet') and names alternatives: sandbox identities use identity_sandbox_register, and proving agent status uses identity_get_challenge. The prerequisite path through identity_get_nonce is also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_sandbox_registerAInspect
[Wicked Identity] START HERE if you have no wallet or cannot sign messages. Returns a sandbox wallet + sandbox_token (no signing, no body). Then call identity_get_challenge and identity_submit_response with wallet + sandbox_token. Sandbox results are for trying the service: signed with a separate key (identity_jwks sandbox=true) and never reported as verified. Use a real wallet for an accountable identity. Limit: 10 per IP per hour.
Use when you have no wallet and want a sandbox identity to test the flow. Not for production verification, which needs a real wallet signature.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds genuinely useful operational context: a rate limit of 10 per IP per hour, the fact that results are signed with a separate key (identity_jwks sandbox=true), and the warning that sandbox identities are never reported as verified. The closing 'Behavior: writes state upstream (not read-only)' sentence largely restates readOnlyHint=false, so it adds little, but the surrounding context is substantive.
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?
It is front-loaded with the 'START HERE' cue and the follow-up chain appears in the first two sentences. Some content is duplicated, though: 'Use a real wallet for an accountable identity' repeats the point already made in 'never reported as verified' and again in 'Not for production verification', and the 'Behavior:' line restates annotations.
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 tool with no output schema, the description fully covers what comes back (sandbox wallet plus sandbox_token), what to do next, the rate limit, and the safety caveat about sandbox keys. An agent has everything it needs to call this correctly and interpret the result.
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 the baseline is 4 and there is no parameter semantics to explain. The description appropriately spends its words on outputs and follow-up steps instead of inventing input details.
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 action and its unique scope: it registers a sandbox identity and returns a sandbox wallet plus a sandbox_token, with no signing or request body needed. It also implicitly separates this tool from identity_register by pointing to real wallets for accountable identities, so an agent can choose between the two without opening either 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?
It gives an explicit trigger ('Use when you have no wallet and want a sandbox identity to test the flow'), an explicit exclusion ('Not for production verification, which needs a real wallet signature'), and names the follow-up tools to call (identity_get_challenge, identity_submit_response). Nothing about when or when not to use this tool 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.
identity_statusARead-onlyIdempotentInspect
[Wicked Identity] Does a wallet currently hold a valid, unexpired assertion? No signature needed. Pays via x402, or pass api_key (get one free from identity_get_test_key) / set IDENTITY_API_KEY. Sandbox wallets are never verified; they report sandbox: true and sandbox_verified instead.
Use when you want to know whether a wallet currently holds a valid, unexpired agent assertion. Not for becoming verified (start with identity_get_nonce).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. | |
| api_key | No | Optional x-api-key, e.g. from identity_get_test_key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only/idempotent/open-world; the description adds materially new facts: no signature is required, the call is paid via x402 unless an api_key is supplied (with two acquisition paths), and sandbox wallets are never reported as verified. These are auth, cost, and result-semantics details an agent cannot get from 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 core question is front-loaded and the payment/auth caveat is compactly bundled into one sentence. A little density remains in the x402/api_key clause, 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?
With no output schema, the description still signals what the response looks like by naming the verified / sandbox / sandbox_verified fields, which is enough for an agent to interpret results. A brief note on non-verified failure modes (e.g. expired vs never-issued) is the only real omission.
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 both wallet and api_key are already documented in the schema. The description only restates the api_key sourcing hint and does not add format or validation semantics beyond that. Baseline 3 is appropriate when the schema carries the burden.
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?
Opens with a precise question form of a specific verb+resource: whether a wallet currently holds a valid, unexpired assertion. It is immediately distinguishable from identity_get_nonce and identity_register, which are named or implied as the verification path.
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 the triggering condition ("Use when you want to know whether a wallet currently holds a valid, unexpired agent assertion") and an exclusion with a redirect ("Not for becoming verified (start with identity_get_nonce)"). That is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_submit_responseAInspect
[Wicked Identity] Submit your answer to a challenge; scored pass / fail / inconclusive. A pass returns a short-lived signed assertion_token (JWT) verifiable via identity_jwks. Real wallet: needs a DIFFERENT fresh nonce than identity_get_challenge used. Sandbox: wallet + sandbox_token.
Use when you have the challenge answer and want it scored and, on a pass, a signed assertion token. Not for getting the challenge (use identity_get_challenge).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | No | Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox. | |
| wallet | Yes | Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register. | |
| signature | No | Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox. | |
| challenge_id | Yes | The challenge_id from identity_get_challenge. | |
| response_text | Yes | Your answer exactly as the instructions specify: raw text only. | |
| sandbox_token | No | Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly=false and openWorld=true; the description adds that it writes state upstream, that a pass returns a short-lived signed JWT, and that real wallets need a DIFFERENT fresh nonce than the one identity_get_challenge used. Missing: what a fail/inconclusive response looks like, retry semantics, or nonce-reuse failure behavior, so not 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 core action and outcome, then mode/credential requirements, then usage routing. The '[Wicked Identity]' prefix and the piped mode separators are slightly dense but every clause carries real information; nothing is 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?
For a 6-param, non-idempotent, open-world mutation with no output schema, the description supplies what's needed to call it correctly: required credentials per mode, the fresh-nonce constraint, and what a pass returns. It stops short of describing failure-path returns or error behavior, so not a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds genuine cross-parameter semantics the schema can't express: the real-wallet vs sandbox mode split (nonce+signature vs sandbox_token) and the crucial constraint that the nonce must be fresh, not the get_challenge nonce. It doesn't restate challenge_id or response_text, which the schema already covers.
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: submit an answer to a challenge, scored pass/fail/inconclusive. It also names what a pass yields (a short-lived signed assertion_token JWT verifiable via identity_jwks), which distinguishes it sharply from siblings like identity_get_challenge and identity_jwks.
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 'Use when you have the challenge answer and want it scored' plus an exclusion: 'Not for getting the challenge (use identity_get_challenge).' It also names the prerequisite steps (identity_get_nonce for real wallets, identity_sandbox_register for sandbox), so the agent knows the call sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kalshi_marketARead-onlyIdempotentInspect
[Trading Data API] Single Kalshi market depth: orderbook (yes/no levels) + recent trades for a specific ticker.
Example: /v1/kalshi-market?ticker=KXBTCD-26JUN1315-T64099.99
Use when you need one Kalshi market's orderbook and recent trades by ticker. Not for browsing markets by category (use kalshi_probability).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Optional. Orderbook depth per side (default 10, max 100). | |
| ticker | Yes | Required. A Kalshi market ticker (e.g. KXBTCD-26JUN1315-T64099.99). | |
| trades | No | Optional. Recent trades to return (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, yet the description adds genuinely new behavior: payment via x402 (USDC on Base) or WICKEDAPI_API_KEY, and that a 402 with decoded price is a quote, not a failure — a critical non-obvious detail. It stops short of describing the response shape beyond a high-level mention of orderbook/trades.
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 resource and example, then usage and payment caveats in a scannable structure. Slightly padded by the markdown formatting and an example URL that duplicates the schema's ticker example, but every section carries real 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?
For a read-only 3-param tool with no output schema, the definition covers what it returns at a high level (orderbook yes/no levels, recent trades), the usage boundary, and the payment-failure semantics that would otherwise confuse an agent. Full completeness would require a bit more on the returned structure, but the essentials are present.
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 ticker format, depth default/max, and trades default/max are already documented in the schema. The description only reinforces the ticker example already present in the schema, adding no new syntax or semantics.
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 (fetch) and resource (single Kalshi market depth: orderbook + recent trades) scoped by ticker, and explicitly names the sibling it differs from (kalshi_probability). An agent can distinguish it from the browsing tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use line ("when you need one Kalshi market's orderbook and recent trades by ticker") and an explicit when-not with the alternative tool named ("Not for browsing markets by category (use kalshi_probability)"). Prerequisites are also covered via the ticker example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kalshi_probabilityARead-onlyIdempotentInspect
[Trading Data API] Free, no signup required. Kalshi prediction-market probabilities. Query by category (returns the most active open markets) or a specific market ticker.
Example: /v1/kalshi-probability?category=crypto
Use when you want live Kalshi prediction-market probabilities by category or ticker. Not for a single market's depth (use kalshi_market) or Polymarket (use polymarket).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional. Max markets to return for a category query (default 25, max 100). | |
| ticker | No | Optional. A specific Kalshi market ticker (e.g. KXBTCD-...). | |
| category | Yes | Optional. One of: crypto, macro, fed-rate, financials, politics, sports, world, companies, climate, science, health, entertainment, elections. Either category or ticker is required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds non-annotation context: free, no signup, no key or payment, and that a category query returns the most active open markets. It stops short of describing pagination or the shape of the returned probability data, which keeps it off 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 purpose, then example, then routing guidance, then behavior — each sentence earns its place. No filler, and the exclusions are placed before the behavioral footnote where an agent will actually read them.
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 public data tool with full schema coverage and no output schema, the description covers purpose, routing, cost and the one return-value nuance that matters (most active open markets). The remaining gap is that nothing tells the agent what the probability payload looks like or about the category-required schema quirk.
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, but the description adds meaning beyond the schema: it explains the semantics of a category query (returns the most active open markets rather than an arbitrary slice) and gives a worked example URL. It does not resolve the schema's internal conflict where 'category' is listed as required while its own description says category OR ticker is required.
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 concrete verb+resource ("Kalshi prediction-market probabilities") plus the two query modes (category or ticker), and explicitly names the sibling tools it is not (kalshi_market, polymarket). An agent can distinguish it from all ~80 siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ("Use when you want live Kalshi prediction-market probabilities by category or ticker") plus two named exclusions with the correct alternative for each (kalshi_market for single-market depth, polymarket for Polymarket). That is the full when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidationsARead-onlyIdempotentInspect
[Trading Data API] Recent forced liquidations on OKX USDT perpetual swaps for a coin: each event with time, liquidated side, bankruptcy price, size and USD notional, plus long vs short liquidated totals and the largest event. Real exchange data, no estimates.
Example: /v1/liquidations?coin=ETH&limit=50
Use when you want recent forced liquidations on OKX USDT perpetuals for a coin, with side and size. Not for liquidity pools (use liquidity_levels).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Optional. Ticker such as BTC (default), ETH, SOL. | |
| limit | No | Optional. 1-100 (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only safety, but the description adds non-obvious behavior: real exchange data with no estimates, and the payment/auth model (x402 USDC on Base, free with WICKEDAPI_API_KEY, otherwise HTTP 402 with a decoded price in payment_required that is a quote, not a failure). That last point prevents an agent from misreading a 402 as an error.
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 capability, then example, then when-to-use, then behavior — a sensible order. Slightly long because the paywall sentence is dense, but every element carries 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?
Covers scope, defaults, return fields, the sibling alternative, and the non-standard failure mode. With no output schema, the description compensates by naming the returned fields and aggregates rather than relying on undocumented structure.
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 schema already documents both params including defaults and the 1-100 limit range. The description only restates 'for a coin' and shows an example URL; it adds no syntax or edge-case meaning beyond the schema, 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?
States a specific verb+resource (recent forced liquidations) with scoping detail (OKX USDT perpetual swaps, per coin) and enumerates the returned fields, so an agent knows exactly what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('when you want recent forced liquidations on OKX USDT perpetuals for a coin, with side and size') and names a disqualifying alternative — 'Not for liquidity pools (use liquidity_levels).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidity_levelsARead-onlyIdempotentInspect
[Trading Data API] ICT liquidity levels: buy-side liquidity (above swing highs) & sell-side (below swing lows), sweep/taken status, relative-equal pools, and nearest untaken targets. Crypto or stocks.
Example: /v1/liquidity-levels?symbol=TQQQ&timeframe=1h
Use when you want buy-side/sell-side liquidity levels and whether they were swept. Not for gap zones (use fvg) or actual liquidation events (use liquidations).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. e.g. BTC, NVDA, TQQQ (or any with &class=). | |
| lookback | No | Optional. Candles to analyze (default 300, max 500). | |
| timeframe | No | Optional. 1m..1W (default 1h). | |
| swing_length | No | Optional. Pivot strength — bars each side of a swing (default 5). Tune to match your chart indicator. | |
| include_swept | No | Optional. true to include already-taken levels (default false = resting only). | |
| equal_threshold_pct | No | Optional. Group swings within this % as relative-equal pools (default 0.1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description rightly spends its words elsewhere: it discloses the pricing model (x402 USDC on Base or WICKEDAPI_API_KEY) and pre-empts the biggest agent trap by explaining that HTTP 402 with a decoded price is a quote, not a failure. That is behavior an agent cannot infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line definition, then example, then when-to-use exclusions, then behavior/payment. Every sentence carries new information and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what the response contains (buy-side/sell-side levels, swept status, equal pools, nearest untaken targets) and by describing the non-200 payment path. For a six-parameter read-only data endpoint that is sufficient for 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?
Schema coverage is 100%, so the schema already documents symbol, lookback, timeframe, swing_length, include_swept and equal_threshold_pct; baseline would be 3. The description adds modest semantic grounding by tying 'sweep/taken status' and 'relative-equal pools' to the corresponding parameters and by showing a concrete query (`?symbol=TQQQ&timeframe=1h`), though it does not explain units or defaults for the numeric knobs.
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 resource (ICT buy-side liquidity above swing highs, sell-side below swing lows) and the specific data returned (sweep/taken status, relative-equal pools, nearest untaken targets). It also names the two closest siblings it is not (fvg, liquidations), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is explicit: 'Use when you want buy-side/sell-side liquidity levels and whether they were swept', followed by exclusions routing to named alternatives ('Not for gap zones (use fvg) or actual liquidation events (use liquidations)'). This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
long_short_ratioARead-onlyIdempotentInspect
[Trading Data API] Binance long/short ratios: global account, top-trader account, top-trader position, and taker buy/sell. Companion to funding-oi.
Example: /v1/long-short-ratio?symbol=BTC&period=1h
Use when you want Binance positioning ratios (global accounts, top traders, taker buy/sell). Not for funding or open interest (use funding_oi).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Optional. One of 5m,15m,30m,1h,2h,4h,6h,12h,1d (default 5m). | |
| symbol | Yes | Required. Base crypto symbol (e.g. BTC). Mapped to <SYMBOL>USDT. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/safe semantics, and the description adds non-obvious context: paid via x402 or an API key, and that an HTTP 402 carries a price quote rather than being a failure. That pricing/auth disclosure is exactly the kind of behavioral info annotations can't 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 resource list, then example, usage, and behavior. The 'Use when...' sentence partially restates the opening enumeration, a minor redundancy, but overall it is tight 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?
No output schema, but the description names the four ratio families returned and covers payment/auth behavior and an example call, which is sufficient for correct invocation. Return shape/pagination specifics are the only minor gap.
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% with each parameter described (symbol mapping to <SYMBOL>USDT, period enum). The description echoes usage only through the example query string and adds little parameter detail beyond the schema, so 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?
States a specific verb+resource (Binance long/short ratios) and enumerates the four sub-metrics it returns, immediately distinguishing it from siblings. An agent can identify its function 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?
Explicitly says when to use it ('Use when you want Binance positioning ratios') and when not to ('Not for funding or open interest (use funding_oi)'), naming the alternative tool. Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_calendarARead-onlyIdempotentInspect
[Trading Data API] Free, no signup required. Upcoming US macro events (FOMC rate decisions, CPI, jobs report) with verified Fed/BLS dates, days-until, and Kalshi rate-decision odds (cut/hold/hike) for FOMC meetings.
Example: /v1/macro-calendar
Use when you want upcoming US macro events (FOMC, CPI, jobs) with verified dates. Not for company earnings (use earnings_calendar).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Optional. Only events within the next N days. | |
| type | No | Optional. Filter to FOMC, CPI, or NFP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and non-destructive; the description adds non-structured context that it is free, requires no key or signup, and that dates are verified against Fed/BLS sources. It does not mention rate limits, pagination, or the response envelope, so it falls short of 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?
Purpose, data contents, and the sibling exclusion are front-loaded and earned. The raw endpoint example (`/v1/macro-calendar`) and the repeated free/no-signup phrasing in both the header and the Behavior line are mild 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?
With no output schema, the description does the needed work by enumerating what comes back (dates, days-until, cut/hold/hike odds) and confirming no auth is needed. Pagination and response size limits are unstated, which is a minor gap for a calendar-style list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (days, type) are already documented in the schema. The description only indirectly clarifies that type values map to FOMC/CPI/jobs (NFP) and adds no format or boundary detail beyond that, 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?
States a specific verb-and-resource: returns upcoming US macro events (FOMC, CPI, jobs report) with verified Fed/BLS dates, days-until, and Kalshi odds. It also explicitly distinguishes itself from the closest sibling by naming earnings_calendar as the wrong tool for company events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive trigger ("Use when you want upcoming US macro events... with verified dates") and an explicit exclusion with the alternative to use instead ("Not for company earnings (use earnings_calendar)"). An agent has a complete routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_clockARead-onlyIdempotentInspect
[Trading Data API] US equities market clock (is_open, next_open/close) + upcoming sessions, via Alpaca. Crypto endpoints are 24/7 and unaffected.
Example: /v1/market-clock
Use when you need to know whether US equity markets are open and when the next session opens or closes. Not for crypto, which trades 24/7.
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Optional. Upcoming session days to include (default 3, max 30; 0 to omit). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), and the description adds materially new behavioral facts beyond them: payment via x402 (USDC on Base) or free with WICKEDAPI_API_KEY, and crucially that an HTTP 402 response carries the decoded price in payment_required and is a quote, not a failure. That last point prevents an agent from misinterpreting a normal response as an error.
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 in the first sentence, then example endpoint, usage rule, and behavior — a clean, scannable structure. It loses a point for redundancy: "Crypto endpoints are 24/7 and unaffected" and "Not for crypto, which trades 24/7" say the same thing twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still names the key return fields (is_open, next_open/close) and explains the non-obvious 402 payment flow, which is enough for correct invocation. It does not describe the shape of the upcoming-sessions list or pagination/limits, a minor gap for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional `days` parameter is fully documented in the schema (default 3, max 30, 0 to omit). The description only implies that upcoming sessions are configurable via "+ upcoming sessions" and adds no syntax or default detail beyond the schema, 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?
States a specific verb+resource: returns the US equities market clock (is_open, next_open/close) plus upcoming sessions, sourced via Alpaca. It explicitly bounds scope to US equities and declares crypto out of scope, so an agent can distinguish it from the other 24/7 crypto price/OHLCV tools in the sibling 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?
"Use when you need to know whether US equity markets are open and when the next session opens or closes" gives the positive selection condition, and "Not for crypto, which trades 24/7" gives the exclusion. Both directions are stated explicitly rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_overviewARead-onlyIdempotentInspect
[Trading Data API] Free, no signup required. CoinGecko global crypto stats (total market cap, 24h volume, BTC/ETH dominance) or top coins by market cap.
Example: /v1/market-overview
Use when you want global crypto stats: total market cap, 24h volume, BTC and ETH dominance. Not for a single asset's price (use price).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Optional. global (default) or coins. | |
| limit | No | Optional (coins view). Number of coins (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context beyond annotations: it is free, requires no signup, and needs no key or payment. It does not describe rate limits or response format, so it falls short of 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?
The description is front-loaded and appropriately sized. It repeats the same stat list in the opening sentence and the 'Use when' sentence, which is a minor 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?
For a simple two-parameter read-only tool with full schema coverage and annotations, the description provides enough context: data source, use case, exclusion, auth/payment behavior, and the returned stat categories. Nothing essential for correct invocation 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 parameter documentation is already handled by the schema. The description implies the two views but does not add parameter names, defaults, or constraints beyond what the schema provides.
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 resource and scope: CoinGecko global crypto stats or top coins by market cap. It explicitly distinguishes itself from the `price` sibling for single-asset queries, 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?
It gives an explicit use case (global crypto stats such as market cap, volume, and dominance) and an explicit exclusion with the alternative: 'Not for a single asset's price (use price).' This leaves little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_deleteADestructiveInspect
[Wicked Memory] PERMANENTLY hard-delete a memory (right-to-be-forgotten). Default scope "chain" removes every version; "version" only this one. Only an audit row (no content) is kept.
Use when you must permanently erase a memory (right to be forgotten). Not for correcting it (use memory_update, which keeps history).
Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | From memory_prepare (single use). | |
| scope | No | "chain" (all versions, default) or "version". | |
| reason | No | Optional audit-log note (max 200 chars). | |
| wallet | Yes | Your agent's 0x wallet address. | |
| memory_id | Yes | UUID of any version in the chain. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent behavior, but the description adds material context: deletion is irreversible, an audit row without content is retained, default chain scope removes every version, and intent should be confirmed before calling. This is exactly the extra behavioral information an agent needs for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the destructive action and scope behavior, then gives usage routing and a safety warning. There is some repetition around permanence and destructiveness, but for a high-risk deletion tool the redundancy is defensible rather than wasteful.
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 rich annotations and fully described schema, the description supplies the missing behavioral context: irreversibility, audit retention, scope consequences, and a confirmation warning. No output schema exists, but the key outcome (audit row retained, content deleted) is stated.
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 parameter documentation is already strong and the baseline would be 3. The description adds consequence-level meaning for the scope parameter by explaining that default chain scope removes every version while version scope removes only one, which is useful beyond the schema's brief scope note.
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: permanently hard-delete a memory. It also specifies scope behavior (chain vs version) and explicitly distinguishes this from memory_update, so the agent can identify it among memory 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?
Gives an explicit when-to-use condition (permanent erasure / right to be forgotten) and a clear when-not-to-use alternative (correcting a memory should use memory_update). The routing guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_deletionsARead-onlyIdempotentInspect
[Wicked Memory] Your deletion audit log (ids, times, reasons; never content).
Use when you want your audit log of deletions (ids, times, reasons, never content). Not for recovering content, which is gone.
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | From memory_prepare (single use). | |
| wallet | Yes | Your agent's 0x wallet address. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so "Behavior: read-only" is largely redundant. The valuable addition is the irreversibility note ("content is gone", "never content"), but the wallet/nonce/signature auth flow — the real behavioral gotcha for calling this — is left entirely to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core information is front-loaded, but the second sentence restates the first almost verbatim ('audit log of deletions (ids, times, reasons, never content)'), which is wasted space in a three-sentence description. The exclusion clause earns its place; the duplication does not.
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, non-destructive query with no output schema, the description tells the agent what fields come back and that content cannot be recovered, which is enough to call it correctly. Only the memory_prepare prerequisite chain is unmentioned in prose, though the schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters (wallet, timestamp, nonce, signature) are documented in the schema itself, including the dependency on memory_prepare. The description adds no parameter-level meaning, which is acceptable given the schema baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a deletion audit log) and enumerates its contents (ids, times, reasons, never content), so the agent knows exactly what this returns. It stops short of differentiating itself from the closely named sibling memory_history or from memory_delete, which leaves room for confusion among the memory_* family.
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?
"Use when you want your audit log of deletions" gives an explicit trigger, and "Not for recovering content, which is gone" gives an explicit exclusion plus the reason. It does not name sibling alternatives (e.g., memory_history for non-deletion events), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_getARead-onlyIdempotentInspect
[Wicked Memory] Fetch one of your memories by id (another wallet's or a deleted id returns the same 404).
Use when you have a memory id and want its content. Not for searching by meaning (use memory_search).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | From memory_prepare (single use). | |
| wallet | Yes | Your agent's 0x wallet address. | |
| memory_id | Yes | The memory's UUID. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful non-obvious behavior: another wallet's memory or a deleted id returns the same 404. It repeats 'read-only' but does not contradict 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 short, front-loaded with the core action, and structured into purpose, usage guidance, and behavior. Every sentence contributes to selecting or understanding the tool.
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?
The tool is simple and the annotations plus schema are rich, while the description adds the important 404 behavior and sibling routing. Since there is no output schema, it could say more about the returned memory shape, but overall it is adequately complete for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema, including memory_id, wallet, nonce, timestamp, and signature. The description mentions the memory id conceptually but adds no parameter-level syntax 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 states a specific verb and resource: 'Fetch one of your memories by id.' It also distinguishes this tool from memory_search by clarifying that it is not for semantic search.
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 an explicit usage condition ('when you have a memory id and want its content') and an explicit alternative ('Not for searching by meaning (use memory_search)'). No inference is needed to choose between memory_get and memory_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_historyARead-onlyIdempotentInspect
[Wicked Memory] Full version chain for a memory, oldest first, with valid_from / valid_until / superseded_by. Works from any version's id.
Use when you want a memory's full version chain and validity windows. Not for its current content (use memory_get).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | From memory_prepare (single use). | |
| wallet | Yes | Your agent's 0x wallet address. | |
| memory_id | Yes | UUID of any version in the chain. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: ordering is oldest first, the chain includes valid_from / valid_until / superseded_by, and any version id can be used as the starting point.
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 short and front-loads the return shape and usage guidance. The final 'Behavior: read-only' sentence repeats what annotations already declare, so it is slightly redundant, but the overall structure remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining the returned fields and ordering, which is important for this tool. The authentication parameters are covered by the schema, so the definition is nearly complete, though it could mention whether the chain is paginated or always full.
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 every parameter is already documented, including that memory_id is a UUID of any version in the chain. The description reinforces this but does not add meaning beyond what the schema provides.
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 resource and operation: the full version chain for a memory, oldest first, with validity fields. It also distinguishes itself from memory_get by scoping the tool to historical versions rather than current content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (full version chain and validity windows) and when not to use it (current content, directing the agent to memory_get). This gives a clear routing decision between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_prepareARead-onlyIdempotentInspect
Wicked Memory step 1 of every call: returns the exact message_to_sign. Sign it with your own wallet (EIP-191 personal_sign), then call the matching memory_* tool with the SAME arguments plus the returned timestamp, nonce and your signature. Timestamp must be within 5 minutes; nonce is single-use, so prepare again for every call.
Use when you are about to call any other memory tool and need the exact message to sign for that request. Not for the call itself.
Behavior: pure local computation, no network call, nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | The arguments you will pass to the tool, by name, e.g. {"content":"...","tags":["a"]} or {"memory_id":"<uuid>"}. | |
| wallet | Yes | Your agent's 0x wallet address (memories are scoped to it). | |
| operation | Yes | "store", "search", "get", "update", "history", "delete" or "deletions". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds traits annotations cannot express: pure local computation, no network call, nothing is stored, timestamp must be within 5 minutes, and the nonce is single-use. Those are exactly the operational constraints an agent must know before composing a signed call.
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 tight sections (what it returns, when to use, behavior) with the returned value front-loaded. No filler sentences; each one carries a constraint or routing instruction.
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 3-param prerequisite tool with no output schema, the description still names the returned field (`message_to_sign`) and the full two-step signing workflow. An agent has everything needed to call it correctly on the first attempt.
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 nevertheless adds the non-obvious coupling that `params` must be the SAME arguments later passed to the target memory_* tool, and that the returned timestamp/nonce/signature travel alongside them. It does not enumerate the operation strings beyond what the schema already lists.
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: it returns the exact `message_to_sign` for a Wicked Memory operation. It explicitly positions itself against siblings by saying it is for the signing step and 'Not for the call itself', so an agent can distinguish it from memory_store, memory_get, etc. without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precise when: before calling any other memory tool, then sign with EIP-191 personal_sign and call the matching memory_* tool with the SAME arguments plus timestamp, nonce and signature. It also names the exclusion ('Not for the call itself') and the re-use rule (nonce is single-use, so prepare again for every call).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_searchARead-onlyIdempotentInspect
[Wicked Memory] Semantic search over YOUR memories only, ranked by real cosine similarity. The one metered call: free with MEMORY_API_KEY, otherwise http_status 402 with x402 v2 instructions under payment_required (0.001 USDC on Base) — pay, then call again with the SAME arguments (a 402 does not consume the nonce) plus payment_signature.
Use when you want to recall your memories by meaning rather than by id. Not for fetching a known id (use memory_get).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | What to look for, in natural language. | |
| tags | No | Only memories having ALL of these tags. | |
| as_of | No | ISO-8601 instant; search memory as it stood then. | |
| limit | No | 1-50, default 10. | |
| nonce | Yes | From memory_prepare (single use). | |
| wallet | Yes | Your agent's 0x wallet address. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. | |
| created_after | No | ISO-8601 lower bound. | |
| created_before | No | ISO-8601 upper bound. | |
| payment_signature | No | x402 payment payload (base64) for the keyless path. | |
| include_superseded | No | Also search old, superseded versions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds substantive behavioral context beyond annotations: it is a metered call, free with MEMORY_API_KEY, otherwise returns HTTP 402 with x402 v2 payment instructions, costs 0.001 USDC on Base, and requires retrying with the SAME arguments plus payment_signature. This is exactly the kind of operational detail annotations cannot express.
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 purpose and usage guidance, then gives necessary payment details. It is generally efficient, though the final 'Behavior: read-only.' sentence merely repeats the readOnlyHint annotation and is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 12-parameter tool with payment flow and no output schema, the description covers purpose, usage, payment/retry behavior, and read-only nature well. It does not describe the shape of returned results, which is a minor gap given the absence of an output schema, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters, including q, tags, as_of, limit, nonce, wallet, signature, timestamp, and payment_signature. The description adds some useful parameter-usage context via the retry rule and payment_signature flow, but it does not elaborate on the individual search filters. Baseline 3 is appropriate when the schema does 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?
States a specific verb and resource: 'Semantic search over YOUR memories only, ranked by real cosine similarity.' It also distinguishes from the sibling memory_get by saying it is not for fetching a known id. An agent can clearly identify what the tool does and how it differs from related 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?
Explicitly says when to use it: 'Use when you want to recall your memories by meaning rather than by id.' It also names the exclusion and alternative: 'Not for fetching a known id (use memory_get).' This leaves no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_storeAInspect
[Wicked Memory] Store a memory (free, fair-use rate limited). A real embedding is computed at write time. Run memory_prepare with operation 'store' and these same arguments first.
Use when you want to save something for later, scoped to your wallet. Not for changing an existing memory (use memory_update).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Up to 20 short tags. | |
| nonce | Yes | From memory_prepare (single use). | |
| source | No | Which agent/session wrote this. | |
| wallet | Yes | Your agent's 0x wallet address. | |
| content | Yes | Text to remember (max 16 KB). | |
| metadata | No | Free-form JSON object (max 8 KB). | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the "writes state upstream (not read-only)" sentence largely restates them. The description does add genuine non-annotation context: free/fair-use rate limiting, embedding computation at write time, wallet signature requirement, and the single-use nonce flow that makes retries unsafe.
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, then prerequisite, then exclusion, then behavior — good ordering with no wasted preamble. The closing line "needs the credentials or wallet signature noted above where applicable" is generic boilerplate that mostly echoes the annotations, keeping it off 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?
For an 8-parameter signed write with full schema coverage and annotations, the description covers the prerequisite flow, rate-limit posture, and mutation semantics. It stops short of saying what comes back (memory id, embedding reference) or whether stored tags/metadata are indexed for later memory_search, which is a minor gap given no output 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 per-parameter meaning is already documented; baseline would be 3. The description earns above baseline by explaining that the wallet scopes the write and that the nonce/timestamp/signature trio must come from a prior memory_prepare call with identical arguments, which is a cross-field relationship the schema does not express.
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?
"Store a memory" is a specific verb+resource, and the description immediately scopes it ("scoped to your wallet") and names the sibling it is not ("Not for changing an existing memory (use memory_update)"). An agent can distinguish this from memory_update, memory_search, and memory_prepare without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ("save something for later, scoped to your wallet"), explicit when-not plus the alternative ("Not for changing an existing memory (use memory_update)"), and a stated prerequisite flow ("Run memory_prepare with operation 'store' and these same arguments first"). All three routing signals an agent needs are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_updateAInspect
[Wicked Memory] Update without overwriting: creates a new version and closes the old one (valid_until / superseded_by). Omitted fields carry over; only the current version can be updated (409 otherwise).
Use when you want to change a memory while keeping its history (a new version supersedes the old). Not for removing it (use memory_delete).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Replacement tags. | |
| nonce | Yes | From memory_prepare (single use). | |
| source | No | New source label. | |
| wallet | Yes | Your agent's 0x wallet address. | |
| content | No | New text (re-embedded). Provide at least one of content/tags/metadata/source. | |
| metadata | No | Replacement metadata object. | |
| memory_id | Yes | UUID of the CURRENT version to supersede. | |
| signature | Yes | Your wallet's signature over memory_prepare's message_to_sign. | |
| timestamp | Yes | From memory_prepare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false, non-idempotent and non-destructive; the description goes well past them by disclosing the versioning model, that omitted fields carry over, and that only the current version is updatable (409 otherwise) — a concrete failure mode an agent must anticipate. It also flags the wallet/signature auth requirement, though 'noted above where applicable' is a dangling reference to context not present in this record.
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 key mechanic, then usage, then behavior — three tight blocks with no redundancy. The final sentence's 'noted above where applicable' is filler that points at nothing and could be cut or replaced with the actual auth requirement.
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 9-parameter, non-idempotent write with no output schema, the description covers the semantics that matter: versioning, partial-update behavior, auth, and the 409 failure case. It stops short of saying what the response contains (e.g. the new version's id), which is the main remaining gap.
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 would be 3, but 'Omitted fields carry over' resolves a real ambiguity created by schema wording like 'Replacement tags' and 'Replacement metadata object' — it tells the agent this is a partial update, not a whitelist replacement. The memory_id wording ('CURRENT version to supersede') is reinforced by the description's 409 rule.
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 plus the non-obvious mechanics: creating a new version and closing the old one via valid_until / superseded_by. It also explicitly contrasts itself with memory_delete, so an agent can separate it from the delete sibling 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?
'Use when you want to change a memory while keeping its history' gives the positive trigger, and 'Not for removing it (use memory_delete)' gives both the exclusion and the named alternative. The 409-only-current-version constraint further bounds when the call will succeed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
momentum_scoreARead-onlyIdempotentInspect
[Trading Data API] Alias of /v1/verdict. Multi-asset momentum verdict (bias, confidence, thesis, entry/invalidation/targets, signal readings) from the oracle.py pipeline, run on a separate Python service. Scoped to 10 assets.
Example: /v1/momentum-score?symbol=BTC&timeframe=1h
Use when you want a ready-made LONG/SHORT/NEUTRAL view with confidence, thesis and entry/invalidation/targets for a supported asset. Not for raw inputs (use price, atr, funding_oi). Same data as verdict, which is the newer name.
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. One of: BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA. | |
| timeframe | No | Optional. 15m, 1h, 4h, 1D, 1W (default 1h). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely non-obvious context: pricing via x402 (USDC on Base) or an API key, and that a bare HTTP 402 carries a price quote rather than being a failure. That last point is a real operational trap avoided. Slight deduction because it doesn't say whether the oracle pipeline can go stale or fail independently.
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 identity and payload, then example, usage, and behavior. Mostly tight, but 'Alias of /v1/verdict' and 'Same data as verdict, which is the newer name' are redundant statements of the same fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the returned fields (bias, confidence, thesis, entry/invalidation/targets, signal readings). It also covers the payment/discovery path and the 10-asset boundary, leaving nothing an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (symbol enum and timeframe values fully documented in-schema), so the schema carries the semantics. The description reinforces the 10-asset scope and shows a sample query string, but adds no format or default detail beyond what the schema already provides.
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 the concrete resource (multi-asset momentum verdict) and enumerates its payload (bias, confidence, thesis, entry/invalidation/targets, signal readings), plus the source pipeline and 10-asset scope. It also explicitly positions itself against siblings: it is the same data as verdict (the newer name) and is not for raw inputs like price/atr/funding_oi.
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 an explicit when-to-use ('ready-made LONG/SHORT/NEUTRAL view with confidence, thesis and entry/invalidation/targets') and an explicit when-not ('Not for raw inputs') naming the three alternative tools. It also flags that verdict is the newer name for the same data, which is exactly the routing decision an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ohlcvARead-onlyIdempotentInspect
[Trading Data API] OHLCV candles (oldest-first) for crypto or stocks. Routes to Alpaca SIP / Alpaca-crypto / Coinbase.
Example: /v1/ohlcv?symbol=NVDA&timeframe=1h&limit=100
Use when you need historical candles to chart or compute indicators yourself. Not for only the latest price (use price) or a ready-made indicator (atr, fvg, liquidity_levels).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Optional. stock|crypto for non-curated symbols. | |
| limit | No | Optional. Candles to return (default 100, max 300). | |
| symbol | Yes | Required. e.g. BTC, NVDA, SPY. | |
| timeframe | No | Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely non-obvious traits: provider routing, oldest-first result ordering, and the x402 payment model where an HTTP 402 carries a decoded price quote in payment_required and is 'not a failure.' That last point materially changes how an agent should interpret an error response. It stops short of describing the candle object fields or pagination edge cases.
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 purpose sentence, then a compact example, then routing guidance, then behavior/payment notes. Every block earns its place and nothing is repeated from the schema.
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 four-parameter read tool with no output schema, the description covers purpose, alternatives, provider routing, ordering, and the payment/error path. The only residual gap is the exact shape of returned candle objects, which is minor for a standard OHLCV list.
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 symbol, timeframe, limit, and class are all documented at the field level. The description only supplements with a concrete example query (symbol=NVDA&timeframe=1h&limit=100) and never touches the 'class' parameter, so it adds marginal semantics beyond the schema — 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 first sentence names a specific verb and resource (OHLCV candles), states ordering (oldest-first), asset coverage (crypto or stocks), and even the upstream routing (Alpaca SIP / Alpaca-crypto / Coinbase). It is unmistakably distinct from siblings like price, atr, fvg, and liquidity_levels, which are named explicitly.
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 an explicit positive case (charting or computing indicators yourself) and explicit negative routing with named alternatives: 'Not for only the latest price (use price) or a ready-made indicator (atr, fvg, liquidity_levels).' An agent can decide between siblings without opening another schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orderbookARead-onlyIdempotentInspect
[Trading Data API] Top-of-book depth + spread (bps) from Binance, Bybit, or Hyperliquid.
Example: /v1/orderbook?symbol=BTC&exchange=binance&depth=10
Use when you need top-of-book depth and spread (bps) on Binance, Bybit or Hyperliquid. Not for a prediction-market book (use kalshi_market).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Optional. Levels per side (default 10, max 50). | |
| symbol | Yes | Required. Base crypto symbol (e.g. BTC). | |
| exchange | No | Optional. binance (default), bybit, or hyperliquid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the description's "read-only" line is redundant. What it does add beyond structured data is the payment/auth model: x402 USDC on Base, free with an API key, and — importantly — that an HTTP 402 carrying a decoded price is a quote rather than a failure. That is genuinely useful pre-call context, though it says nothing about response shape or rate limits.
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 resource definition, then an example, then usage/exclusion, then payment behavior — a natural decision order. The only mild redundancy is the opening line and the "Use when..." sentence restating depth and spread, which is acceptable reinforcement at the routing point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of telling the agent what comes back. It conveys the concept (bid/ask levels per side plus a spread in bps) and the payment path, but never states the response fields, ordering, or how to interpret an empty/synthetic book. Adequate to call correctly, thin for interpreting the result.
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% with per-parameter descriptions for symbol, exchange and depth, so the schema already carries the semantics. The worked example URL `/v1/orderbook?symbol=BTC&exchange=binance&depth=10` shows the three parameters composed together, which is a small but real addition over 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 resource and measurement (top-of-book depth plus spread in bps) and names all three supported venues (Binance, Bybit, Hyperliquid). It also explicitly carves out the prediction-market case, so an agent can tell it apart from kalshi_market and polymarket without inspecting 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?
"Use when you need top-of-book depth and spread (bps)" gives the positive trigger, and "Not for a prediction-market book (use kalshi_market)" gives both the exclusion and the named alternative. Nothing about selection 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.
paywall_create_routeAInspect
[x402 Paywall] Paywall a new endpoint with x402 pay-per-call, settled in USDC straight to payTo. With upstreamUrl, paid requests are proxied to your backend. Applies live within ~20s (needs PAYWALL_API_KEY).
Use when you want to put one HTTP endpoint behind x402 pay-per-call, paid in USDC straight to your wallet. Not for many routes at once (use paywall_import_routes).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Route path, e.g. "/weather". | |
| asset | No | Payment token contract; defaults to USDC on the network. | |
| payTo | Yes | Your payout wallet (0x…). Settlement pays here directly; nothing is custodied. | |
| price | Yes | Decimal USD amount, e.g. "0.01" or "$0.01". | |
| method | No | Default GET. | |
| network | Yes | CAIP-2 id: Base mainnet eip155:8453, Base Sepolia eip155:84532. | |
| description | No | Up to 200 chars: letters, digits, space . _ - | |
| upstreamUrl | No | Your https backend. Omit for the demo confirmation payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuine behavioral context beyond annotations: changes apply live within ~20s, PAYWALL_API_KEY is required, and with upstreamUrl paid requests are proxied to the caller's backend. The closing 'writes state upstream (not read-only)' line merely restates the readOnlyHint=false annotation and is redundant, but the timing and proxying details are real value.
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 and structured with clear Use/Behavior sections, but the USDC-to-payTo settlement is stated twice and the trailing 'Behavior:' sentence largely repeats the annotations. Some trimming would sharpen it without losing 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?
For an 8-param create tool with full schema coverage and no output schema, the description covers side effects, activation latency, credentials, and proxying well. It stops short of indicating what a successful call returns (route record, confirmation payload), which would matter given no output schema is provided.
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 all eight parameters are already documented in the schema. The description reinforces payTo and upstreamUrl semantics but adds no format or constraint detail beyond what the schema provides, so 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?
States a specific verb+resource (paywall a new endpoint with x402 pay-per-call) and specifies the settlement model (USDC straight to payTo) and proxying behavior. It explicitly distinguishes itself from the batch sibling by naming paywall_import_routes, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('put one HTTP endpoint behind x402 pay-per-call') and an explicit when-not with the named alternative ('Not for many routes at once (use paywall_import_routes)'). Nothing is left to inference about which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_delete_routeADestructiveIdempotentInspect
[x402 Paywall] Remove a paywalled route; applies within ~20s (needs PAYWALL_API_KEY).
Use when you want a route removed from the paywall. Not for changing its price (use paywall_update_route).
Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Route id from paywall_list_routes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, so the core safety profile is covered. The description adds useful behavioral context beyond the annotations: it says the change applies within ~20 seconds, requires PAYWALL_API_KEY, and is not reversible. It does not contradict 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 compact and front-loaded: it names the tool, states the effect and timing, gives usage guidance, names the alternative, and warns that the action is destructive. Every sentence carries actionable information with no wasted prose.
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 one-parameter delete tool with a fully described schema and rich annotations, the description covers purpose, timing, auth, alternative tool, and destructiveness. The only minor gap is that it does not describe the return value, but the tool is simple enough that this is not a major omission.
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 is documented as "Route id from paywall_list_routes." The description does not add further parameter meaning or format details beyond what the schema already provides, so 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 states a specific verb and resource: "Remove a paywalled route." It also scopes the operation with timing (~20s) and an auth requirement, and explicitly distinguishes it from paywall_update_route. An agent can identify the tool's purpose 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 gives explicit usage guidance: use when a route should be removed from the paywall, and not for changing its price because paywall_update_route should be used instead. It also tells the agent to confirm intent before calling, which is appropriate for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_demo_weatherARead-onlyIdempotentInspect
[x402 Paywall] Call the live demo route on the paywall gateway (GET /wickedapi/weather) to see a real x402 challenge: unpaid, it returns HTTP 402 with the decoded price, network and payTo in payment_required. A safe way to learn what a paywalled endpoint looks like before creating your own.
Use when you want to see a real x402 payment challenge from a paywalled route (price, network, payTo) without creating anything. Not for setting up your own paywall (use paywall_signup then paywall_create_route).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered; the description still adds real value by describing the outcome shape (HTTP 402 with decoded price, network and payTo in payment_required). It stops short of mentioning rate limits, availability, or that no credentials are needed, so it is strong but not exhaustive.
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 action and endpoint, then the mechanism, then the routing guidance. The second paragraph largely restates the first ('use when you want to see a real x402 challenge') and the trailing 'Behavior: read-only' duplicates readOnlyHint, so a small amount of text is redundant.
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?
There is no output schema, but the description supplies exactly what matters about the return value (HTTP 402 plus the decoded payment_required fields). Combined with annotations covering safety, an agent has everything needed to call a zero-parameter demo endpoint 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 tool takes zero parameters, so there is nothing parameter-level to document; the description correctly does not invent arguments. The only implicit input, the fixed path segment /wickedapi/weather, is stated in prose, which 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?
States a specific verb (call) plus the exact resource and endpoint (GET /wickedapi/weather on the paywall gateway), and explicitly says it is a demo/learning tool rather than a paywall-setup tool. An agent can distinguish it from paywall_signup and paywall_create_route without inspecting any 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?
Explicitly names the use case ('see a real x402 payment challenge ... without creating anything') and the exclusion with named alternatives ('Not for setting up your own paywall (use paywall_signup then paywall_create_route)'). Both when-to-use and when-not-to-use are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_get_tenantARead-onlyIdempotentInspect
[x402 Paywall] Your tenant record (needs PAYWALL_API_KEY).
Use when you want your tenant record (name, slug, key hint). Not for route management.
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description gets a lower bar — and the trailing 'Behavior: read-only' is mostly redundant with them. What it does add beyond structured data is the auth prerequisite (needs PAYWALL_API_KEY) and the shape of the returned record, both of which are genuinely useful.
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, front-loaded lines — purpose, disambiguation, behavior — with no filler. The second sentence partially restates the first, and 'Behavior: read-only' duplicates the annotation, so it is not maximally economical, but it is well within a reasonable size for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and full annotation coverage, the description supplies everything an agent needs: what it returns, that a PAYWALL_API_KEY is required, and what it is not for. Missing only failure-mode detail (e.g., what happens without a valid key), a minor gap for a zero-arg read.
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 the baseline is 4 and there is no parameter semantics to document. The description correctly implies no input is required, and nothing in it misleads about arguments.
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 verb+resource (get your tenant record) and enumerates the fields it returns (name, slug, key hint). It also explicitly disclaims route management, which cleanly separates it from the paywall_*_route siblings in the tool 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?
It gives a positive trigger (use when you want your tenant record) and an explicit exclusion (not for route management), which is more than most definitions offer. It stops short of naming the specific alternative tools (paywall_list_routes, paywall_create_route), so the agent must infer the handoff rather than being routed to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_import_routesAInspect
[x402 Paywall] Bulk upsert routes keyed on (method, path) — paywall a whole API in one call (needs PAYWALL_API_KEY).
Use when you want to paywall many routes in one call (upsert on method and path). Not for a single route (use paywall_create_route).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| routes | Yes | Route objects, same fields as paywall_create_route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by naming the required credential (PAYWALL_API_KEY) and stating that state is written upstream, which an agent needs before calling. One caveat: 'upsert keyed on (method, path)' implies repeat-safe behavior while the annotations declare idempotentHint=false — this is a mild tension worth noting, though not a flat contradiction since upserts can still mutate existing fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the three sentences are short. There is minor redundancy ('upsert on method and path' restated in the usage sentence) and the trailing 'needs the credentials or wallet signature noted above where applicable' is boilerplate that could be trimmed to the concrete key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what it does, when to use it, and the auth requirement, which is adequate for a one-parameter tool with annotations and no output schema. It is silent on bulk-specific behavior an agent would want: partial-failure semantics (atomic vs per-route), maximum batch size, and what the call returns on success.
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 route item fields (price, network, payTo, upstreamUrl, asset) are already fully documented in the schema, so the description adds little per-field meaning. Its only extra value is the cross-reference that route objects use 'same fields as paywall_create_route'.
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 ('Bulk upsert routes') plus the key ('method, path') and the outcome ('paywall a whole API in one call'). It explicitly names the sibling it is not (paywall_create_route), so the agent can distinguish bulk from single-route operations without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when you want to paywall many routes in one call' gives the positive condition, and 'Not for a single route (use paywall_create_route)' names the exclusion and the alternative. This is the explicit when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_list_routesARead-onlyIdempotentInspect
[x402 Paywall] List your paywalled routes (needs PAYWALL_API_KEY).
Use when you want your paywalled routes and their prices. Not for earnings (use paywall_list_settlements).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the 'Behavior: read-only' line is largely redundant. However, the description adds a genuinely useful operational precondition not captured in any structured field: it requires PAYWALL_API_KEY, which tells the agent about an auth dependency before invocation.
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 bracketed domain tag, then purpose, then usage, then behavior — a clean information hierarchy. The closing 'Behavior: read-only' sentence duplicates the annotation and is the one line that does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, non-destructive list tool with no output schema, the description covers purpose, the auth prerequisite, the returned data ('routes and their prices'), and the correct alternative. Only minor gaps remain, such as pagination or the exact fields per route, which are low stakes here.
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 is no parameter semantics burden and the baseline of 4 applies. Nothing in the description conflicts with the empty 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 and resource ('List your paywalled routes') and immediately scopes it with the price data it returns. It also names the sibling it is not (paywall_list_settlements), so an agent can distinguish it from the settlement tooling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the triggering condition ('Use when you want your paywalled routes and their prices') and an exclusion with a named alternative ('Not for earnings (use paywall_list_settlements)'). That is the when-to-use / when-not-to-use / alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_list_settlementsARead-onlyIdempotentInspect
[x402 Paywall] Your real on-chain USDC settlements (earnings) (needs PAYWALL_API_KEY).
Use when you want your real on-chain USDC settlements (earnings). Not for route configuration (use paywall_list_routes).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so 'Behavior: read-only' is a restatement with no added value. The one genuinely new piece of context is the auth requirement ('needs PAYWALL_API_KEY'), which annotations cannot express. Return shape and pagination behavior are left undisclosed.
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?
Short and front-loaded: the resource and usage condition come first, the sibling exclusion second. It loses a point for restating the resource phrase twice ('your real on-chain USDC settlements (earnings)') and for the redundant 'Behavior: read-only' line already covered by annotations.
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?
There is no output schema, so the description is the only place to learn what a settlement record contains or how pagination behaves beyond the limit cap — and it says nothing about either. For a simple read-only listing tool with full annotation and schema coverage, the gap is real but modest.
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 'limit' parameter is already documented in-schema with its default and maximum ('Default 50, max 200'). The description adds no meaning about the parameter, 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 identifies the resource precisely ('real on-chain USDC settlements (earnings)') and the bracketed '[x402 Paywall]' tag places it in the right tool family, distinguishing it from paywall_list_routes by name. The action verb is only implied by the tool name, not stated in the description, so it falls just short of the clearest tier.
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 the selection condition ('Use when you want your real on-chain USDC settlements') and an exclusion with the named alternative ('Not for route configuration (use paywall_list_routes)'). This is exactly the when/when-not/alternative structure that removes inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_signupAInspect
[x402 Paywall] Create a tenant account. Returns a Bearer apiKey ONCE — store it and set PAYWALL_API_KEY. Rate-limited to 5/hour per IP.
Use when you want a paywall tenant account and its API key (shown once). Not for managing routes of an existing tenant.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Letters, digits, space . _ - (max 100). | |
| slug | Yes | Lowercase a-z0-9 and hyphens, 2-40 chars; becomes your mount path prefix /{slug}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond annotations: the API key is returned only once, must be stored, and signup is rate-limited to 5/hour per IP. It also confirms upstream state mutation, though the phrase "credentials or wallet signature noted above where applicable" is vague and points to nothing visible in the provided definition.
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 and reasonably short, with creation, return value, and rate limit stated early. It repeats the one-time API key note and restates the read-only annotation, which slightly dilutes conciseness.
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 two-parameter signup tool with full schema coverage and annotations covering safety profile, the description supplies the critical missing context: one-time key return and rate limiting. No output schema exists, but the important return behavior is described.
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 both parameters already have detailed constraints and usage notes in the schema. The description does not add meaningful semantics for `name` or `slug` beyond what the schema provides.
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: "Create a tenant account" for the x402 Paywall. It distinguishes this from route-management siblings with the explicit exclusion "Not for managing routes of an existing tenant."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use the tool: "Use when you want a paywall tenant account and its API key." It also states when not to use it by naming route management of an existing tenant as out of scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paywall_update_routeAIdempotentInspect
[x402 Paywall] Partial update of a route (e.g. change price or payout wallet); applies live within ~20s (needs PAYWALL_API_KEY).
Use when you want to change a route's price, payout wallet or upstream without a redeploy. Not for creating or deleting routes.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Route id from paywall_list_routes. | |
| path | No | Route path, e.g. "/weather". | |
| asset | No | Payment token contract; defaults to USDC on the network. | |
| payTo | No | Your payout wallet (0x…). Settlement pays here directly; nothing is custodied. | |
| price | No | Decimal USD amount, e.g. "0.01" or "$0.01". | |
| method | No | Default GET. | |
| network | No | CAIP-2 id: Base mainnet eip155:8453, Base Sepolia eip155:84532. | |
| description | No | Up to 200 chars: letters, digits, space . _ - | |
| upstreamUrl | No | Your https backend. Omit for the demo confirmation payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context the annotations do not carry: the ~20s live propagation delay and the PAYWALL_API_KEY credential requirement. It also restates non-read-only behavior, which is consistent with readOnlyHint=false. It stops short of saying what happens to fields omitted from a partial update and what a successful response looks like.
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, front-loaded sentences with the core action first, then usage, then behavior. Slight waste in 'writes state upstream (not read-only)', which duplicates readOnlyHint=false, and the vague qualifier 'where applicable' on the credentials note.
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 9-parameter mutation with no output schema, the description covers purpose, credential prerequisites, latency and exclusions. It is nearly sufficient; only the post-update result (and whether unspecified fields are preserved) is left unaddressed.
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 every one of the nine parameters is already documented in the schema (id, path, price, payTo, network, etc.). The description only echoes 'price or payout wallet' and 'upstream', adding no format or constraint detail beyond the schema. 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?
States a specific verb and resource ('Partial update of a route') and immediately scopes it with examples (price, payout wallet). The closing 'Not for creating or deleting routes' distinguishes it from paywall_create_route and paywall_delete_route without the agent needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('change a route's price, payout wallet or upstream without a redeploy') and an explicit exclusion ('Not for creating or deleting routes'), which maps directly to the sibling create/delete tools. Nothing about tool selection 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.
polymarketARead-onlyIdempotentInspect
[Trading Data API] Polymarket prediction markets with live probabilities: question, per-outcome probability, 24h and total volume, liquidity, best bid/ask, one-day price change and end date. Top markets by volume, liquidity or soonest end, or free-text search.
Example: /v1/polymarket?q=bitcoin&limit=5
Use when you want Polymarket markets with live per-outcome probabilities and volume. Not for Kalshi markets (use kalshi_probability).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optional. Free-text search, e.g. bitcoin, fed rate, election. | |
| sort | No | Optional. volume (default), liquidity or ending. Ignored when q is set. | |
| limit | No | Optional. 1-25 (default 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the payment/auth behavior: x402 USDC on Base, free with `WICKEDAPI_API_KEY`, and an HTTP 402 price quote when neither is present, which is explicitly framed as not a failure. This is exactly the kind of operational context an agent needs before invoking 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 front-loaded and efficient, with the key purpose, usage boundary, example, and payment behavior in a compact block. There is minor repetition around 'Polymarket markets' and a slightly noisy API prefix, but nothing that materially hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the key returned fields — question, per-outcome probability, volumes, liquidity, bid/ask, price change, end date. It also covers the important payment failure mode, making the definition complete for a read-only data query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so `q`, `sort`, and `limit` are already well documented. The description adds a useful example and maps sort concepts to volume/liquidity/ending, but it does not add much parameter syntax or semantics 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 states a specific resource and capability: Polymarket prediction markets with live per-outcome probabilities, volume, liquidity, bid/ask, price change, and end date. It also explicitly distinguishes this from Kalshi markets, so an agent can route between siblings 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?
It says exactly when to use this tool, when not to use it, and which alternative to call for Kalshi data (`kalshi_probability`). The supported modes — top by volume, liquidity, soonest end, or free-text search — are clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
priceARead-onlyIdempotentInspect
[Trading Data API] Current spot price for crypto (Coinbase) or US equities/ETFs (Alpaca SIP), via the shared routing layer.
Example: /v1/price?symbol=BTC
Use when you need the current spot price of one crypto asset or US stock/ETF. Not for history or candles (use ohlcv), or a trading view (use momentum_score or verdict).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| class | Yes | Optional. stock|crypto — required for symbols outside the curated list. | |
| symbol | Yes | Required. e.g. BTC, ETH, SUI, NVDA, SPY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, non-destructive. The description adds genuinely non-derivable behavior: billing via x402 (USDC on Base) or an API key, and the crucial note that an HTTP 402 is a price quote rather than a failure. It does not mention rate limits, caching/latency, or the shape of the returned price payload, which keeps it off 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 purpose and source, then example, usage/exclusions, and behavior in clearly labeled segments. Every sentence carries information; nothing is redundant with the name or annotations.
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 2-parameter read tool with full schema coverage and annotations, the description covers selection, alternatives, and auth/payment edge cases. The remaining gap is the return payload (field names, quote currency, timestamp), which matters somewhat since no output schema exists.
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 (symbol, class) are already documented in the schema, and the description adds only an example instance (/v1/price?symbol=BTC). It adds no extra meaning for `class` (stock|crypto) or the curated-list fallback beyond what the schema states, 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?
States a precise verb+resource (current spot price) and scopes it by asset classes with named data sources (Coinbase for crypto, Alpaca SIP for equities/ETFs). It also names the routing layer and gives a concrete example path, so an agent can distinguish it immediately from quote/history 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?
Explicitly says when to use it ('need the current spot price of one crypto asset or US stock/ETF') and when not to, naming the exact alternatives: ohlcv for history/candles and momentum_score/verdict for a trading view. Nothing 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.
protocol_health_list_protocolsARead-onlyIdempotentInspect
[Protocol Health Oracle] All tracked protocols with their latest health score and verdict.
Use when you need every tracked protocol with its latest score and verdict. Not for one protocol's details (use protocol_health_score).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional. Rows to return (default 100, max 2000). | |
| offset | No | Optional. Pagination offset (default 0). | |
| min_tvl | No | Optional. Only protocols with TVL >= this USD amount. | |
| category | No | Optional. Filter by DefiLlama category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so safety is free; the description adds the non-obvious payment behavior that no structured field carries — x402 USDC-on-Base pricing, the API-key bypass, and the crucial clarification that an HTTP 402 carries a decoded price quote and is 'not a failure'. That prevents an agent from misreading a paywall response as an error.
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?
Scope is front-loaded and the payment caveat is placed last where it belongs. The second sentence largely restates the first ('every tracked protocol with its latest score and verdict' vs 'All tracked protocols with their latest health score and verdict'), which is mild waste in an otherwise tight three-sentence definition.
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 list endpoint with fully covered parameters and no output schema, the description covers purpose, routing, and the paywall edge case. It stops short of describing the shape of a returned row (score, verdict fields) or default page size behavior in prose, but the schema's defaults cover the latter.
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 limit, offset, min_tvl, and category are fully documented in the schema. The description adds nothing about filtering or pagination semantics, so the baseline 3 applies rather than a higher score.
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?
Opens with a specific resource and scope: 'All tracked protocols with their latest health score and verdict.' The bracketed oracle tag plus the explicit sibling callout ('Not for one protocol's details') lets an agent distinguish this from protocol_health_score without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when you need every tracked protocol with its latest score and verdict') and an explicit exclusion routing to the correct alternative ('Not for one protocol's details (use protocol_health_score)'). Nothing 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.
protocol_health_refresh_allAInspect
[Protocol Health Oracle] Force an immediate live re-score of all tracked protocols.
Use when you need every tracked protocol re-scored right now instead of waiting for the schedule. Not for a single protocol (read it with protocol_health_score).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context beyond annotations by stating that it writes state upstream and may require credentials or a wallet signature. The auth note is somewhat vague with 'where applicable,' but the write behavior and non-read-only nature are clearly disclosed and consistent with 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 front-loaded and efficient: purpose first, then when-to-use, then the single-protocol exclusion, then behavior. The phrase 'noted above where applicable' is slightly vague but does not bloat the definition.
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 action tool, the description covers purpose, usage, scope, and write behavior. Since there is no output schema, it could say more about what the refresh returns, but the essential invocation context is present.
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 no parameters to explain, so the baseline is 4. The description correctly presents this as a zero-input bulk action.
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: force an immediate live re-score of all tracked protocols. It also explicitly distinguishes this bulk refresh from the single-protocol sibling, protocol_health_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use it: when every tracked protocol must be re-scored now rather than waiting for the schedule. It also names the alternative for a single protocol, protocol_health_score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol_health_scoreARead-onlyIdempotentInspect
[Protocol Health Oracle] Latest health score for one protocol: components (GitHub activity, TVL trend, treasury), source details, and score history.
Use when you are vetting one protocol before integrating it and want GitHub activity, TVL trend and treasury components. Not for a ranking (use protocol_health_scoreboard) or token contract risk (use token_risk).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Required (path). The protocol's defillama_slug, e.g. lido. | |
| history | No | Optional. Number of historical scores to include (default 10, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the monetization model (x402 USDC on Base, free with WICKEDAPI_API_KEY) and, critically, that an unauthenticated call returns HTTP 402 with the decoded price in payment_required rather than being a failure. That failure-mode context is exactly the kind of behavior an agent cannot get from annotations and would otherwise misread as an error.
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, labeled blocks — purpose, routing, behavior — with the primary purpose front-loaded. Every sentence carries distinct information: what it returns, when to use it, when not to, and how payment works.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned components and score history, and it fully explains the payment/auth failure path. For a two-parameter read tool, nothing an agent needs 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?
Schema description coverage is 100%, with slug and history fully documented (default 10, max 100), so the schema does the heavy lifting. The description mentions "score history" as a return component but adds no format or syntax detail beyond the schema, which is the expected baseline.
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 ("Latest health score for one protocol") and enumerates the returned components (GitHub activity, TVL trend, treasury, source details, score history). It also names the two adjacent-but-different siblings, protocol_health_scoreboard and token_risk, so an agent can disambiguate 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?
Gives an explicit usage trigger ("when you are vetting one protocol before integrating it") and explicit exclusions with the correct alternatives: ranking → protocol_health_scoreboard, token contract risk → token_risk. No inference required from the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol_health_scoreboardARead-onlyIdempotentInspect
[Protocol Health Oracle] Public teaser: protocol name, score, and verdict only (no components/history) across the full tracked universe — auto-ingested from DefiLlama (TVL > $1M) plus curated protocols.
Use when you want the free public ranking of every tracked DeFi protocol: name, score and verdict only. Not for the component breakdown for one protocol (use protocol_health_score).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional. Rows to return (default 100, max 2000). | |
| offset | No | Optional. Pagination offset (default 0). | |
| min_tvl | No | Optional. Only protocols with TVL >= this USD amount. | |
| category | No | Optional. Filter by DefiLlama category, e.g. "Liquid Staking". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the data provenance (DefiLlama auto-ingest with TVL > $1M plus curated protocols) and the commercial terms ('free; no key or payment needed'), which the readOnlyHint/idempotentHint flags do not convey. It does not cover pagination behavior or the practical effect of limit/offset on a large universe, so it falls short of 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 payload scope, then usage, then behavior, with zero filler sentences. The bracketed '[Protocol Health Oracle] Public teaser:' prefix and section labels add slight overhead but aid scanning rather than obscuring.
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 no-required-param list tool with no output schema, the description still tells the agent exactly what comes back (name, score, verdict only) and what does not. Pagination over a potentially large universe is left to the schema, which is a minor but real gap for a 2000-row-capable endpoint.
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 limit, offset, min_tvl, and category are already documented in the schema. The description's mention of the TVL > $1M ingest threshold gives useful background for min_tvl but adds no format or semantics beyond what the schema states, 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+resource (scoreboard of protocol health scores) and precisely bounds the payload: 'protocol name, score, and verdict only (no components/history)'. It explicitly contrasts with the sibling that returns the detailed breakdown, so an agent can distinguish it from protocol_health_score without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('free public ranking of every tracked DeFi protocol') and an explicit when-not with the named alternative ('Not for the component breakdown for one protocol (use protocol_health_score)'). The routing decision is fully specified rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol_health_sync_universeAInspect
[Protocol Health Oracle] Force an immediate sync of the tracked-protocol universe from DefiLlama (TVL > $1M). Runs automatically once/day; use this to trigger it on demand.
Use when you want the tracked universe re-synced from DefiLlama (TVL above $1M), which also runs automatically on a schedule. Not for routine reads.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, open-world, non-idempotent, and non-destructive behavior, and the description adds useful context: it writes state upstream and may require credentials or a wallet signature. The phrase 'where applicable' leaves some ambiguity, but there is no annotation contradiction.
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 action is front-loaded, but the second sentence largely repeats the first by restating the DefiLlama TVL sync and automatic schedule. There is some redundancy, though the description remains short.
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 trigger tool with no output schema, the description covers the action, scope, schedule, write behavior, and credential caveat. It does not describe the post-sync return or downstream effect, but it is otherwise sufficient.
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 the baseline is 4. The empty schema makes additional parameter semantics unnecessary.
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 verb and resource: forcing an immediate sync of the tracked-protocol universe from DefiLlama, scoped to TVL above $1M. It distinguishes from routine reads, but does not explicitly name a sibling tool such as protocol_health_refresh_all.
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 says to use this when the tracked universe needs re-syncing on demand because it otherwise runs automatically, and it excludes routine reads. It gives clear context but names no alternative tool or competing sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol_health_track_protocolAInspect
[Protocol Health Oracle] Track a new protocol. Scored immediately from live GitHub + DeFiLlama data.
Use when a protocol you care about is not tracked yet and you want it scored from live GitHub and DefiLlama data. Not for reading an existing score.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name, e.g. "Lido". | |
| chain | No | Optional. Default "ethereum". | |
| github_repo | Yes | owner/repo, e.g. lidofinance/core. | |
| defillama_slug | Yes | DeFiLlama protocol slug, e.g. lido. | |
| treasury_address | No | Optional. On-chain treasury address to score (Etherscan balance). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false. The description reinforces this with 'writes state upstream (not read-only)' and adds an auth requirement, but 'the credentials or wallet signature noted above where applicable' is vacuous – no credentials are documented anywhere, and nothing explains what happens if the protocol is already tracked despite the non-idempotent hint.
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 front-loaded segments: purpose, usage, behavior. The bracketed '[Protocol Health Oracle]' prefix is decorative overhead, but otherwise there is little waste.
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 5-parameter mutation with no output schema, the description conveys the immediate-scoring outcome but omits what the caller gets back, whether re-tracking an existing protocol errors or updates, and any rate/cost implications. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented with examples in the schema itself. The description only gestures at two of them via 'GitHub + DeFiLlama data' and adds no format or default detail beyond what the schema provides; 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?
States a specific verb and resource ('Track a new protocol') and the data sources used for scoring (GitHub + DeFiLlama). It also distinguishes itself from reading an existing score, though it does not name the sibling tool (protocol_health_score) explicitly.
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?
'Use when a protocol you care about is not tracked yet' gives a clear positive condition, and 'Not for reading an existing score' gives an exclusion. The exclusion implies the sibling to use but never names it, so the routing is slightly less crisp than it could be.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ratesARead-onlyIdempotentInspect
[Trading Data API] US Treasury yield curve (1M–30Y) + recession-indicator spreads (10y-2y, 10y-3m), from FRED.
Example: /v1/rates
Use when you need the US Treasury yield curve and recession spreads (10y-2y, 10y-3m). Not for event dates (use macro_calendar).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| series | No | Optional. A specific FRED series id (e.g. DGS10) for a single value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the 'read-only' note mostly repeats them. However, the description adds genuinely valuable context beyond annotations: pricing via x402 (USDC on Base) or API key, and the crucial disclosure that a 402 response is a price quote, not a failure.
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 resource and scope, then usage, then behavior, with a concrete example endpoint. Minor waste in restating 'read-only' already covered by annotations, but otherwise 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 one-optional-param read tool with no output schema, the description covers purpose, routing, and the payment/auth behavior that would otherwise confuse an agent. Return payload shape is undescribed, but that is a minor gap given the tool's simplicity.
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 single 'series' parameter is fully documented in the schema. The description adds no parameter guidance, so the baseline 3 for a schema-documented tool 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?
States a specific resource (US Treasury yield curve 1M–30Y) plus the recession spreads (10y-2y, 10y-3m) and the data source (FRED). It names the sibling it is not (macro_calendar), so an agent can distinguish 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?
Explicitly states when to use it ('when you need the US Treasury yield curve and recession spreads') and when not to, routing event-date needs to macro_calendar. Nothing 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.
registry_create_api_keyAInspect
[Wicked Registry] Step 2 of getting a free API key. Submit the wallet, the timestamp and YOUR signature over the message from registry_onboarding_message(action=api_key). The key (wr_...) is returned once - store it and pass it as api_key to registry_search_tools / registry_tool_detail. Up to 3 active keys per wallet; past the daily cap calls fall back to x402.
Use when you signed the onboarding message and want a free Registry API key (shown once). Not for inspecting a key (use registry_key_info).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional label for the key. | |
| wallet | Yes | 0x wallet that signed the message. | |
| signature | Yes | 0x-prefixed ECDSA signature over the message. | |
| timestamp | Yes | The timestamp returned with the message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real state facts beyond the annotations: the key is shown once and must be stored, max 3 active keys per wallet, and requests past the daily cap fall back to x402. That is substantive operational context. The closing sentence ("writes state upstream (not read-only)") largely restates readOnlyHint=false rather than adding new information.
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 the one-time-return warning; the sibling exclusion follows immediately. The trailing "Behavior:" sentence is boilerplate that partly duplicates the annotations and could be dropped without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return value ("wr_...") and how to use it as api_key with registry_search_tools / registry_tool_detail. Prerequisites, quota limits, and failure fallback are all covered for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-tool meaning: the signature is over the message obtained from registry_onboarding_message(action=api_key) and the timestamp must be the one returned with that message. That is more than the schema's one-line parameter docs convey; the optional label parameter is left unaddressed in the description (schema covers it).
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?
Names a specific verb+resource (create API key), states its position in a workflow ("Step 2 of getting a free API key"), and explicitly excludes the adjacent use case ("Not for inspecting a key (use registry_key_info)"). An agent can place it against registry_key_info / registry_onboarding_message without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ("Use when you signed the onboarding message") plus the goal ("want a free Registry API key"), names the sibling that produces the prerequisite message (registry_onboarding_message(action=api_key)), and routes the look-up case to registry_key_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_featured_toolsARead-onlyIdempotentInspect
[Wicked Registry] Top scored active tools. Public and free.
Use when you want the top-scored active tools with no key or payment. Not for filtered search (use registry_search_tools).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations: it is public and free, requires no key or payment, and returns only active tools. It does not describe result size or ranking details, keeping it from 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?
The definition is short, front-loaded, and routes to the sibling alternative efficiently. The sentence 'Behavior: read-only' largely repeats the readOnlyHint annotation, which is minor waste.
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, no output schema, and rich annotations, the description covers the essential calling context: public, free, no key/payment, top-scored active tools only. It could mention expected result shape or ranking basis, but nothing critical for invocation 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 there is no parameter semantics to explain. The schema is empty and fully consistent with the no-input description, making the baseline of 4 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 a specific resource and scope: top-scored active tools from the Wicked Registry. It explicitly distinguishes itself from the sibling search tool by saying it is not for filtered search.
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 an explicit use case (top-scored active tools with no key or payment) and an explicit exclusion with the alternative named: 'Not for filtered search (use registry_search_tools).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_key_infoARead-onlyIdempotentInspect
[Wicked Registry] Metadata and usage for a Registry API key (wr_...): label, created time, call counts. Pass api_key, or set REGISTRY_API_KEY.
Use when you want a Registry API key's label, creation time and usage counts. Not for creating or revoking a key.
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Registry API key to inspect. Overrides REGISTRY_API_KEY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the trailing 'Behavior: read-only.' is largely redundant. The description does add real context beyond annotations: which fields are returned and how the key is supplied or defaulted via REGISTRY_API_KEY, but it says nothing about the time window for call counts or any rate/auth failure behavior.
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 what is returned, then usage, then behavior, in three short lines with no filler. Minor redundancy exists: the first sentence and the 'Use when' sentence cover overlapping ground, and 'Behavior: read-only' duplicates the annotations.
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-required-param read tool with rich annotations and no output schema, the description gives the return field list, the credential source, and the sibling boundary, which is enough to call it correctly. A brief note on what the call-count figures cover (window/granularity) would close the remaining gap.
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?
Only one parameter and schema description coverage is 100%, so the schema already documents api_key and its override semantics. The description restates the same fact ('Pass api_key, or set REGISTRY_API_KEY') without adding format or precedence detail beyond the schema. 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?
States a specific verb and resource: metadata and usage for a Registry API key, and enumerates what is returned (label, created time, call counts). It explicitly disclaims the sibling operations create and revoke, so an agent can separate it from registry_create_api_key and registry_revoke_key without reading 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 a positive trigger ('Use when you want a Registry API key's label, creation time and usage counts') and an explicit exclusion ('Not for creating or revoking a key'), plus the auth fallback (pass api_key or set REGISTRY_API_KEY). Nothing 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.
registry_lookupARead-onlyIdempotentInspect
[Wicked Registry] Free lookup: find a tool's id and headline reliability score by name or URL fragment (q), exact endpoint URL (endpoint) or category. No key or payment. Use it to check a tool before your agent pays it; follow with registry_tool_badge or registry_tool_detail.
Use when you want a free lookup of a tool's id and headline score by name, URL fragment or exact endpoint before you call it. Not for full detail (use registry_tool_detail).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Name or URL fragment, at least 2 characters. | |
| limit | No | 1-25, default 10. | |
| category | No | ||
| endpoint | No | Exact endpoint URL of the tool you are about to call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/openWorld/non-destructive, and the description's 'Behavior: read-only' merely repeats that. What it does add beyond annotations is real: 'No key or payment' discloses the auth/cost profile, which matters for deciding whether to call it.
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 lead sentence is front-loaded and useful, but the second paragraph largely re-says it ('Use when you want a free lookup of a tool's id and headline score by name, URL fragment or exact endpoint'), and 'Behavior: read-only' duplicates the annotation. Roughly a third of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape (id + headline reliability score). For an optional-parameter, read-only lookup that is largely sufficient, though it never clarifies ordering/pagination implications of `limit` or what happens when no match is found.
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 75%, so the schema already documents q, limit and endpoint. The description only restates those keys in prose (and omits `limit` entirely) without adding matching semantics or format constraints beyond what the schema says. 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?
States a specific verb (find/lookup) and resource (a tool's id and headline reliability score) plus the three lookup keys. It also names the natural follow-on siblings (registry_tool_badge, registry_tool_detail), so an agent can place it relative to other registry tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ('check a tool before your agent pays it') and an explicit exclusion ('Not for full detail – use registry_tool_detail'). The one gap is that the adjacent sibling registry_search_tools is never mentioned, leaving the boundary between 'lookup' and 'search' to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_onboarding_messageARead-onlyIdempotentInspect
[Wicked Registry] Step 1 of self-onboarding. Returns the exact message YOU must sign (EIP-191 personal_sign) plus its timestamp, valid for about an hour. action=api_key (needs wallet) for a free API key, or action=register (needs name and endpoint_url) to list your own tool. This tool never signs anything.
Use when you are starting self-serve onboarding and need the exact message to sign. Not for when you already have a signature (use registry_create_api_key or registry_register_tool).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Tool name (required for register). | |
| action | Yes | ||
| wallet | No | Your 0x wallet address (required for api_key). | |
| endpoint_url | No | Tool endpoint URL (required for register). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavior: the message is valid for about an hour and 'This tool never signs anything', which prevents a common misuse. It stops short of covering rate limits or whether the message can be reused, so not 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?
The purpose and the message's nature are front-loaded, and the usage/differentiation sentences each carry information. The trailing 'Behavior: read-only.' restates the readOnlyHint annotation and is the only clearly redundant line.
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?
There is no output schema, so the description must explain the return value, and it does (the exact signable message plus its timestamp and validity window). Combined with the action-to-prerequisite mapping, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description compensates by tying parameters to the enum value that requires them ('action=api_key (needs wallet)', 'action=register (needs name and endpoint_url)'). That conditional-requirement detail is the key semantic an agent needs and is not fully stated 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 verb and resource ('Returns the exact message YOU must sign (EIP-191 personal_sign) plus its timestamp') and frames it as 'Step 1 of self-onboarding', which distinguishes it from the signature-consuming siblings. An agent can tell what it gets back 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?
Explicitly gives the when ('Use when you are starting self-serve onboarding and need the exact message to sign') and the when-not with named alternatives ('Not for when you already have a signature (use registry_create_api_key or registry_register_tool)'). It also maps each action to its prerequisites, so selection between api_key and register is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_register_toolAInspect
[Wicked Registry] Register a tool you own so it gets real synthetic checks and a live score. Get the exact message to sign from registry_onboarding_message(action=register), sign it with owner_wallet, then call this. This tool never signs.
Use when you own a tool and want it listed and monitored, with your wallet's signature over the registration message. Not for finding tools.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | Yes | ||
| protocol | Yes | "x402", "mcp" or "rest". | |
| signature | Yes | 0x-prefixed ECDSA signature over the registration message. | |
| timestamp | Yes | ISO 8601 timestamp used in the signed message (within an hour of the call). | |
| schema_url | No | Optional JSON Schema URL enabling the schema-conformance score. | |
| description | Yes | ||
| endpoint_url | Yes | Live, publicly reachable endpoint. | |
| owner_wallet | Yes | 0x wallet that signed the registration message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely useful context beyond annotations: the tool never signs, signing must happen client-side over a message from a sibling tool, and state is written upstream. It does partly restate annotations ('writes state upstream (not read-only)') where readOnlyHint=false already says so, and says nothing about failure modes or what registration returns.
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 the prerequisite flow in the first two sentences. The trailing 'Behavior:' line is boilerplate that largely repeats the annotations and could be cut.
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 9-parameter write tool with no output schema, the critical signing prerequisite is fully explained. Minor gaps remain: no mention of name uniqueness, category values, endpoint reachability validation, or what a successful registration produces.
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?
At 67% schema coverage the description still adds meaning the schema can't: that `signature` must be over the message obtained from registry_onboarding_message and produced by `owner_wallet`. It leaves `name`, `category`, `endpoint_url`, `protocol`, and `description` entirely to the schema, which does document most of them.
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 ('Register a tool you own') plus the outcome ('real synthetic checks and a live score'), and explicitly excludes the lookup use case with 'Not for finding tools,' which routes the agent away from registry_search_tools/registry_lookup.
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 an explicit precondition chain: fetch the message via registry_onboarding_message(action=register), sign it with owner_wallet, then call this tool. It also names the when ('you own a tool and want it listed and monitored') and the when-not ('Not for finding tools').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_report_toolAInspect
[Wicked Registry] File a complaint about a tool's reliability or behaviour. Public, rate-limited; reviewed manually, never auto-suspends.
Use when a tool misbehaved and you want to file a complaint for manual review. Not for reading scores.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | "downtime", "incorrect_response", "scam_or_abuse", "schema_violation" or "other". | |
| tool_id | Yes | The tool's Wicked Registry id. | |
| evidence | No | Optional note or URL. | |
| reporter | Yes | Your wallet address or another best-effort identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=false and openWorldHint=true, but the description adds real value beyond them: public visibility, rate limiting, manual review, and the key reassurance that it never auto-suspends a tool. The closing credential note ('noted above where applicable') points at context that isn't actually present, which weakens it slightly.
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, front-loaded with the core action and moderation behavior. Mild redundancy in restating 'writes state upstream (not read-only)', which the annotations already declare.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the trigger, side effects, moderation outcome, and rate limiting for a 4-parameter mutation tool with no output schema. What a submission returns (e.g., a report id or review status) is left unstated, though the absence of an output schema limits how much is needed.
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 tool_id, reporter, reason (with its enumerated values), and optional evidence are all documented structurally. The description adds no parameter-level meaning at all, 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?
States a specific verb and resource ('File a complaint about a tool's reliability or behaviour') and immediately scopes it against the sibling family by ruling out score-reading tools. An agent can distinguish this from registry_lookup, registry_tool_detail, and the reputation_* tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when a tool misbehaved and you want to file a complaint for manual review') plus an explicit exclusion ('Not for reading scores'). It stops short of naming the concrete alternative tools an agent should use for score lookups, so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_revoke_keyADestructiveIdempotentInspect
[Wicked Registry] PERMANENTLY revoke a Registry API key (the one presented). Use if a key leaked. Pass api_key, or set REGISTRY_API_KEY.
Use when a Registry API key leaked or is no longer needed and must be disabled permanently. Not for inspecting a key (use registry_key_info).
Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Registry API key to revoke. Overrides REGISTRY_API_KEY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the safety profile is structured. The description still adds real value: permanence and non-reversibility in plain language and a 'confirm intent before calling' instruction, which is the operational consequence an agent needs. It stops short of stating what a revoked key loses access to or what the response looks like.
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, front-loaded blocks with the destructive verb first and the alternative second. There is mild redundancy between 'Use if a key leaked' and 'Use when a Registry API key leaked or is no longer needed', but no meaningful 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?
For a one-parameter destructive tool with no output schema, the definition covers the trigger, the exclusion, the permanence, the env-var fallback and the confirm-first posture. Only the post-revocation effect and any error conditions are unstated, which is a minor gap given the annotation coverage.
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% with a single documented parameter that already explains the env-var override. The description's 'Pass api_key, or set REGISTRY_API_KEY' restates the same fallback, adding no new syntax or format detail. Baseline 3 is appropriate when the schema carries the parameter semantics.
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: 'PERMANENTLY revoke a Registry API key (the one presented)'. It also names the sibling it is not (registry_key_info for inspection), so an agent can distinguish intent without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('a key leaked or is no longer needed and must be disabled permanently') and an explicit exclusion with the alternative named ('Not for inspecting a key (use registry_key_info)'). Nothing about selection 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.
registry_search_toolsARead-onlyIdempotentInspect
[Wicked Registry] Search x402/MCP tools by real reliability data (uptime, latency, schema conformance). Works via x402 (402 carries payment instructions) or a free API key (pass api_key, or set REGISTRY_API_KEY). No key yet? Call registry_onboarding_message then registry_create_api_key to get one yourself. For a quick free check of a known tool, use registry_lookup.
Use when you want to find x402/MCP tools filtered by category, protocol or minimum reliability score. Not for a quick free check of a known tool (use registry_lookup).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | "score" (default), "latency" or "recency". | |
| limit | No | 1-200, default 50. | |
| api_key | No | Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY. | |
| category | No | e.g. "data", "crypto". | |
| protocol | No | "x402", "mcp" or "rest". | |
| min_score | No | Minimum composite score 0-100; unchecked tools are excluded once set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, open-world, and non-destructive behavior, so the bar is lower. The description adds meaningful auth and payment context: x402 is supported with payment instructions on 402, a free API key can be passed or set via REGISTRY_API_KEY, and onboarding tools are named for agents without a key, though it does not detail cost or rate limits.
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 search purpose and then adds auth and usage guidance. It is generally efficient, but the registry_lookup alternative is repeated in both the first paragraph and the explicit usage section, and 'Behavior: read-only' restates the annotation.
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 six optional parameters fully documented in the schema and annotations covering the safety profile, the description supplies the remaining context an agent needs: what the tool searches, how payment/auth works, the onboarding path, and when to choose a sibling tool instead. No output schema exists, and the description adequately describes the search result domain.
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 every parameter is already documented in the schema, including sort, limit, category, protocol, min_score, and api_key. The description mentions filtering by category, protocol, and minimum reliability score but adds no syntax, defaults, or behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: searching x402/MCP tools, and explains the differentiating value of real reliability data (uptime, latency, schema conformance). It also explicitly distinguishes this tool from registry_lookup, so an agent can tell the two apart without opening either 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?
It states exactly when to use the tool (finding tools filtered by category, protocol, or minimum reliability score) and when not to use it for a quick free check of a known tool. The alternative registry_lookup is named, and the auth/onboarding alternatives are also given for agents without a key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_tool_badgeARead-onlyIdempotentInspect
[Wicked Registry] A tool's current composite reliability score. Public and free.
Use when you want one tool's current composite score as a free badge. Not for the breakdown (use registry_tool_detail).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes | The tool's Wicked Registry id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, and the description does partly repeat that ('Behavior: read-only'). However, 'Public and free' adds real behavioral context not captured by the annotations, telling the agent there is no auth or paywall barrier. It stops short of describing freshness or return shape, which keeps 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?
Purpose and the sibling exclusion are front-loaded in two short sentences, which is efficient. The trailing 'Behavior: read-only.' is largely redundant with the readOnlyHint annotation and slightly dilutes the otherwise tight structure.
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 one-parameter, read-only lookup with no output schema, the description establishes purpose and the key alternative but does not describe what the badge actually returns (score scale, tier, timestamp, or failure behavior for unknown tool ids). An agent knows when to call it but not what to expect back, leaving a meaningful gap.
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 a single required tool_id parameter with 100% schema description coverage, so the schema already carries the parameter meaning. The description implies the identifier refers to one tool but adds no format, lookup, or error semantics beyond the schema. Baseline 3 is appropriate when the schema fully documents the only parameter.
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 sentence names the resource precisely (a tool's current composite reliability score) and the second clarifies it is a single-tool, free badge. It explicitly excludes the sibling registry_tool_detail by naming what that tool is for, so an agent can separate the two without opening either 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?
It states the use case directly ('Use when you want one tool's current composite score as a free badge') and names the alternative and the condition that selects it ('Not for the breakdown (use registry_tool_detail)'). This is explicit when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_tool_detailARead-onlyIdempotentInspect
[Wicked Registry] One tool's full score breakdown, component history and recent real health checks. x402 or a free API key.
Use when you want one tool's full score breakdown and recent real health checks. Not for finding tools (use registry_search_tools or registry_lookup).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY. | |
| tool_id | Yes | Registry id from registry_lookup / registry_search_tools / registry_featured_tools. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the closing 'Behavior: read-only' sentence merely restates them. The genuinely additive context is the access model — 'x402 or a free API key' — which tells the agent a payment or key may be needed. No info on how many health checks/history entries come back, but for a single-record read that is a modest gap.
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?
Short and front-loaded, with the capability stated first and routing second. The second sentence largely rephrases the first ('full score breakdown and recent real health checks' appears twice), which is mild redundancy rather than bloat.
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 detail tool with no output schema, the description tells the agent what it will get back (score breakdown, component history, health checks), how to authenticate (x402 or API key), and which siblings to use instead. It does not mention behavior on unknown tool_id or depth limits, which keeps it a small distance from complete.
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 both parameters carry descriptions, including how to obtain tool_id. The description adds no format, prefix or override semantics beyond what the schema states, so 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?
States a specific verb and resource — retrieving one tool's full score breakdown, component history and recent real health checks. The bracketed namespace plus the explicit contrast with registry_search_tools/registry_lookup make it distinguishable from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use clause (wanting a single tool's breakdown and health checks) and an explicit when-not-to-use clause that routes to the correct sibling tools. Nothing is left to inference about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_erc8004ARead-onlyIdempotentInspect
[Wicked Reputation] Cross-reference a wallet against the open ERC-8004 Identity and Reputation registries (read-only). Free.
Use when you want to cross-reference a wallet against the open ERC-8004 identity and reputation registries. Not for Wicked's own staking data (use reputation_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint, so the closing 'Behavior: read-only' sentence is largely redundant. The genuinely additive traits are 'Free' and the openWorld framing (results come from third-party registries and may be empty or stale), but nothing is said about latency or what a miss looks like.
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 and short, which is good, but the leading one-liner and the 'Use when you want to cross-reference a wallet against the open ERC-8004 identity and reputation registries' sentence restate the same content almost verbatim, and the trailing 'Behavior: read-only' repeats the annotations. Roughly a third of the text is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only place to learn what comes back (an identity record? a reputation score? an empty result when the registry has no entry for the wallet?). It says nothing about that, which is the main open question for a lookup tool returning external data.
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?
Only one parameter (wallet) with 100% schema description coverage, so the schema already carries the semantics. The description adds no format guidance beyond '0x wallet address' that the schema already provides; 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 first sentence names a specific verb (cross-reference) plus the exact resource (ERC-8004 Identity and Reputation registries) and frames the scope as an external open registry lookup. It distinguishes itself from reputation_status by naming that sibling, though it doesn't disambiguate from the many other reputation_* tools (reputation_query, reputation_leaderboard).
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 'Use when' clause plus an explicit exclusion ('Not for Wicked's own staking data') with a named alternative, reputation_status. Clear routing guidance, though other plausible alternatives (reputation_query, wallet_sanctions_check, wallet_check) go unmentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_get_nonceAInspect
[Wicked Reputation] Step 1 of every signed Reputation call (register, stake, unstake, withdraw): a one-time nonce plus the exact message to sign. Each signed call needs a fresh nonce.
Use when you are about to register, stake, unstake or withdraw and need the one-time message to sign. Not for read-only lookups, which need no signature.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The key added value is 'Each signed call needs a fresh nonce,' which tells the agent the nonce is single-use and not reusable across calls — context not conveyed by idempotentHint alone. However, 'writes state upstream (not read-only)' merely restates readOnlyHint=false, and 'needs the credentials or wallet signature noted above where applicable' points at nothing in the description, so the guidance is partly boilerplate.
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 'Step 1 of every signed Reputation call' framing is front-loaded and immediately actionable, and the when/when-not sentences are tight. The trailing 'Behavior:' line is partly redundant filler, keeping 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?
For a one-parameter tool with no output schema, the description covers what is returned (a nonce and the message to sign), the lifecycle constraint (fresh per call), and the prerequisites (wallet signature). That is enough for an agent to invoke it correctly; only the vague 'noted above' credential reference is unresolved.
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 single wallet parameter is already documented as a 0x address in the schema. The description adds no format, constraints, or meaning beyond what the schema supplies, 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?
States a specific action and resource: retrieves a one-time nonce plus the exact message to sign, for Reputation signed calls. It scopes this to the four operations (register, stake, unstake, withdraw), which distinguishes it from siblings like identity_get_nonce and chain_nonce that serve different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit when ('about to register, stake, unstake or withdraw and need the one-time message to sign') and an explicit when-not ('not for read-only lookups, which need no signature'). It does not name the sibling nonce tools (identity_get_nonce, chain_nonce) as alternatives, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_historyARead-onlyIdempotentInspect
[Wicked Reputation] An agent's history of reputation/tier changes over time. Free. 404 means the wallet never registered.
Use when you want how one agent's reputation and tier changed over time. Not for current standing (use reputation_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description need not carry the full safety burden. It adds useful context beyond annotations: the call is free and a 404 means the wallet was never registered, which is valuable error semantics.
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 short, front-loaded, and every sentence earns its place: purpose, cost, error meaning, usage routing, and behavior are all stated compactly.
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 one-parameter read-only history tool with rich annotations, the description covers purpose, alternative, cost, and a key 404 behavior. It does not describe the returned history shape, but the core invocation guidance is complete.
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 one parameter with 100% schema description coverage, so the schema already explains the wallet address. The description does not add parameter-specific meaning beyond implying one agent wallet, 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?
States a specific verb and resource: an agent's reputation/tier change history over time. It explicitly distinguishes itself from reputation_status, which covers current standing, 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?
Gives an explicit when-to-use condition (one agent's reputation and tier changes over time) and names the alternative for current standing (reputation_status). The usage boundary is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_leaderboardARead-onlyIdempotentInspect
[Wicked Reputation] Public leaderboard: every agent's current active stake, tier and slash count. Free.
Use when you want the public ranking of agents by active stake, with tier and slash count. Not for filtered searches (use reputation_query).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default set by the service). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the explicit 'Behavior: read-only' line mostly repeats structured data. The description does add value beyond annotations by disclosing that the data is public, free to call, and what payload it contains (stake, tier, slash count).
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 one-line purpose, followed by a use/avoid clause and a behavior note. Every sentence earns its place with no 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?
With no output schema, the description correctly states the returned fields and the ranking basis (active stake), which is what an agent needs. It stops short of mentioning ordering guarantees or pagination, but that is a minor gap for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'limit' parameter, so the schema documents it fully. The description adds no syntax or default details beyond that, which matches the baseline-3 rule for high coverage.
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 resource (public leaderboard of agents) and the exact fields returned: active stake, tier, slash count. It explicitly distinguishes itself from the filtered-search sibling reputation_query, so an agent can pick 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?
Contains an explicit 'Use when' clause plus a 'Not for...' exclusion naming the alternative tool (reputation_query) and the condition that selects it. Nothing 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.
reputation_queryARead-onlyIdempotentInspect
[Wicked Reputation] Search/rank registered agents by tier, stake, reputation or slash history. Every filter is a typed query param.
Use when you want to filter or rank agents by tier, stake, reputation or slash history. Not for one known wallet (use reputation_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | stake_amount | reputation_score | slash_count | registered_at, prefixed "-" (desc, default) or "+" (asc). | |
| tier | No | Exact tier name, e.g. "gold". | |
| limit | No | 1-200, default 20. | |
| max_stake | No | Maximum active stake (USDC). | |
| min_stake | No | Minimum active stake (USDC). | |
| min_reputation | No | Minimum reputation score. | |
| founding_member | No | True to only show founding members. | |
| min_slash_count | No | Minimum slash events (1 finds agents ever slashed). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the trailing 'Behavior: read-only.' line merely restates structured data. The description adds no behavioral context beyond that — no note on result size, pagination behavior, or the registry scope implied by openWorldHint. With annotations carrying the safety profile, this adds little.
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, front-loaded blocks with no filler. Minor redundancy: the list 'tier, stake, reputation or slash history' appears in both the first and second sentences, so one sentence could be trimmed.
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 an 8-param filtered-list tool with full schema coverage, rich annotations, and no output schema, the description covers purpose, alternative routing, and safety posture. What remains thin is return-shape and pagination expectations, which are minor given the schema's limit/sort documentation.
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 all 8 filter params are documented with units and ranges in the schema itself. The description only says 'Every filter is a typed query param,' which adds no semantics 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 description states a specific verb pair (search/rank) and resource (registered agents) plus the four filter dimensions, then explicitly rules out the sibling case with 'Not for one known wallet (use reputation_status).' An agent can distinguish it from reputation_status or reputation_leaderboard without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives both the when ('filter or rank agents by tier, stake, reputation or slash history') and the when-not with a named alternative ('use reputation_status'). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_registerAInspect
[Wicked Reputation] Register your wallet as an agent (no stake required). Needs your signature over reputation_get_nonce's message; this tool never signs.
Use when you want to register your wallet as an agent, with your own signature over the nonce message. Not for staking (use reputation_stake after funding the treasury).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Nonce from a FRESH reputation_get_nonce call. | |
| wallet | Yes | Your 0x wallet address on Base. | |
| signature | Yes | 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so 'writes state upstream (not read-only)' is largely redundant. However, the description adds genuinely new behavioral context: the tool never signs, the caller must produce the signature themselves, and no stake is consumed. It stops short of saying what happens on repeat registration besides the idempotentHint=false annotation.
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, but the middle sentence retreads the first paragraph ('register your wallet as an agent, with your own signature over the nonce message'), and the 'Behavior:' line restates annotation hints. Redundancy costs it points.
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 3-parameter write tool with full schema coverage and annotations, the description covers workflow (get nonce, sign, register), cost (no stake), and the sibling split. It omits what registration yields downstream (agent status/profile) and failure modes like already-registered or stale nonce, but is sufficient to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents wallet, fresh nonce, and EIP-191 signature. The description ties the signature to reputation_get_nonce's message, reinforcing an ordering dependency, but adds little beyond what the schema field descriptions state.
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 ('Register your wallet as an agent') plus a key qualifier ('no stake required') that separates it from the staking siblings. An agent can identify this tool's job 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?
Explicitly names the precondition (signature over reputation_get_nonce's message), the situation to use it ('Use when you want to register your wallet as an agent'), and the exclusion with a redirect ('Not for staking (use reputation_stake after funding the treasury)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_stakeAInspect
[Wicked Reputation] Record a USDC stake that YOU already sent on-chain to the treasury (see reputation_transparency for the address). Real funds: send the transfer from your own wallet first, then pass its tx_hash with a signed nonce. This tool never moves funds or signs.
Use when you already sent USDC on-chain to the treasury and want that stake recorded, with its transaction hash and a signed nonce. Not for moving funds, which this server never does.
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Nonce from a FRESH reputation_get_nonce call. | |
| amount | Yes | USDC amount staked. | |
| wallet | Yes | Your 0x wallet address on Base. | |
| tx_hash | Yes | Hash of your on-chain USDC transfer to the treasury. | |
| signature | Yes | 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the 'writes state upstream (not read-only)' line is largely redundant. What the description genuinely adds is the two-step protocol — send the USDC transfer yourself first, then submit the tx_hash with a signed nonce — and the assurance that the tool never signs or moves funds. It omits what happens if a tx_hash or nonce is replayed, which matters since idempotentHint=false.
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 critical constraint is front-loaded in the first sentence, but the second paragraph restates it ('Use when you already sent USDC on-chain...') almost verbatim, and the trailing 'needs the credentials or wallet signature noted above where applicable' is vague filler. Roughly a third of the text is redundant.
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 five-required-parameter mutation with annotations and no output schema, the description supplies the essential operational context: the on-chain transfer must precede the call, the nonce comes from a fresh reputation_get_nonce, and the server custodies nothing. It does not say whether a new reputation record or status object is returned, but with no output schema that omission is minor.
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 per-field descriptions already explain wallet, tx_hash, nonce freshness and EIP-191 signature format. The description only reinforces the ordering ('send the transfer from your own wallet first, then pass its tx_hash'), adding little field-level meaning the schema does not already carry, 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?
States a specific verb and resource — record an already-sent USDC stake against the treasury — and immediately scopes it with 'that YOU already sent on-chain.' It names reputation_transparency as the place to find the treasury address, so it is distinguishable from the sibling tools it could be confused with.
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 'Use when...' sentence plus 'Not for moving funds, which this server never does' gives an explicit precondition (transfer already broadcast) and an explicit exclusion. It does not contrast against the neighbouring reputation_unstake/reputation_withdraw flows, which would be the natural confusion point, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_statementARead-onlyIdempotentInspect
[Wicked Reputation] An agent's full position plus real event ledger (stakes, unstakes, withdrawals, slashes). Does not include WickedAPI call volume or fees — see the note field.
Use when you need an agent's full position and ledger of stakes, unstakes, withdrawals and slashes. Not for a quick tier check (use reputation_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, so the description does not need to prove safety; it nonetheless adds a real scope boundary by excluding call volume and fees and redirecting the agent to the `note` field. The trailing 'Behavior: read-only' simply restates readOnlyHint, so it is slightly redundant but not contradictory.
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 what the tool returns and an efficient exclusion note. The 'Use when...' sentence largely restates the opening inventory of stakes/unstakes/withdrawals/slashes, and 'Behavior: read-only' repeats structured annotation data, costing some 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?
No output schema exists, so the description must orient the agent to the return payload, which it does by naming the ledger contents and the `note` field for omitted metrics. Adequate for a single-parameter read tool; more detail on response shape would help but is not essential.
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 a single `wallet` parameter with 100% schema description coverage, so the schema fully documents it. The description adds no format or interpretation detail about the wallet address beyond implying it identifies the agent; baseline 3 is appropriate for a one-param tool whose schema leads.
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 the specific resource (an agent's full position plus real event ledger) and enumerates what the ledger contains: stakes, unstakes, withdrawals, slashes. It also names what is excluded (WickedAPI call volume and fees) and points to the sibling that handles the lighter variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (full position and ledger of stakes, unstakes, withdrawals, slashes) and when not to (quick tier check — use reputation_status). The alternative is named with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_statusARead-onlyIdempotentInspect
[Wicked Reputation] An agent's current reputation: tier, active/unbonding stake, score, slash count, founding-member badge. http_status 404 means the wallet never registered — treat as tier 'unranked'.
Use when you want one agent's tier, stake, reputation score and slash count before dealing with it. Not for the event history (use reputation_statement) or a ranking (use reputation_leaderboard).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | The 0x wallet address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint/idempotent/openWorld, so the 'Behavior: read-only' line adds nothing new. However, the http_status 404 semantics — that an unregistered wallet returns 404 and should be interpreted as 'unranked' rather than an error — is a genuinely valuable behavioral disclosure an agent would otherwise mishandle.
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 what is returned, then when-to-use, then alternatives, then behavior — a sensible ordering with no wasted prose. The closing 'Behavior: read-only' line is redundant with the readOnlyHint annotation and could be dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates well by enumerating the returned fields and by defining the 404 case. Minor gaps remain (no indication of what an 'unbonding' stake looks like or the score's range/units), but nothing essential for correct invocation 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?
Single parameter with 100% schema description coverage ('The 0x wallet address'), so the schema carries the load and baseline 3 applies. The description implies the wallet identifies a single agent but adds no format, validation, or case-sensitivity detail 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?
Names a specific resource (an agent's reputation) and enumerates exactly what is returned: tier, active/unbonding stake, score, slash count, founding-member badge. It also distinguishes the tool from reputation_statement and reputation_leaderboard by name, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('before dealing with it') plus two explicit exclusions naming the correct sibling for each alternative use case. The 404 edge case is also given a decision rule ('treat as tier unranked'), which removes the main ambiguity an agent would hit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_tiersARead-onlyIdempotentInspect
[Wicked Reputation] Live tier thresholds and benefits (min stake, rate-limit multiplier, fee discount). Read at call time — thresholds are admin-configurable.
Use when you want the live tier thresholds and benefits (minimum stake, rate-limit multiplier, fee discount). Not for a specific agent's tier (use reputation_status).
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. It does add meaningful context beyond the annotations: values are resolved at call time and thresholds are admin-configurable, so results can change between calls despite idempotency. It stops short of describing freshness or caching behavior, which would have earned 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?
The field list and the 'live tier thresholds and benefits' phrase are repeated almost verbatim in the opening sentence and the 'Use when' sentence, and 'Behavior: read-only' restates readOnlyHint from the annotations. The content is correct but not tightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of explaining what comes back, and it does so by listing the three returned values. It is adequate for this zero-arg read tool, though it could note the response shape or whether thresholds are returned as a list of tiers.
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 the baseline is 4. The description still adds value by naming the output fields an agent will receive, orienting it to the response shape in the absence of an output 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?
It names the specific resource (tier thresholds and benefits) and enumerates the exact fields returned (minimum stake, rate-limit multiplier, fee discount), and explicitly distinguishes itself from the sibling reputation_status. The only shortfall versus a 5 is that no verb is stated for the tool itself; the read is implied by 'Live' and 'Read at call time'.
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?
'Use when you want the live tier thresholds and benefits' gives a positive trigger, and 'Not for a specific agent's tier (use reputation_status)' names the exclusion and the alternative tool explicitly. Nothing about tool selection 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.
reputation_transparencyARead-onlyIdempotentInspect
[Wicked Reputation] Live transparency numbers: treasury address, custody model, unbonding cooldown, total stake, agents, slash events, founding-slot counts.
Use when you want the treasury address, custody model, unbonding cooldown and totals, for example before staking. Not for per-agent data.
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the trailing 'Behavior: read-only' mostly restates structured data. It adds that the numbers are 'live', which hints at freshness, but never explains caching, refresh cadence, or how 'live' is guaranteed. Useful field-level context, but no behavioral traits beyond 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?
Front-loaded with the payload contents, then a use/exclusion sentence, then a one-line behavior note — well ordered and short. The only waste is the 'Behavior: read-only' line, which duplicates the readOnlyHint annotation and could be spent on something the annotations do not cover.
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 zero params and no output schema, the description does the essential work by enumerating the return fields, so an agent knows what comes back. What is missing is operational detail such as data freshness/latency for 'live' values and whether the snapshot covers a single chain or many.
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 no parameters, so the baseline is 4 and there is nothing for the description to disambiguate. The description correctly implies a zero-argument global snapshot rather than something requiring an address or agent ID.
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?
Enumerates the exact data returned (treasury address, custody model, unbonding cooldown, total stake, agents, slash events, founding-slot counts), which is far more specific than the name alone. It also carves out a boundary with 'Not for per-agent data', signaling it differs from per-agent reputation tools. It stops short of a clear verb and never names the sibling it is contrasted against.
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 an explicit trigger ('Use when you want the treasury address, custody model, unbonding cooldown and totals') plus a concrete use case ('for example before staking') and an exclusion ('Not for per-agent data'). The guidance is clear but does not name the alternative tool an agent should call for per-agent data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_unstakeADestructiveInspect
[Wicked Reputation] Start the unbonding period for amount of your active stake. It stops counting toward tier/reputation immediately; withdraw after the cooldown (see reputation_transparency). Needs a signed nonce.
Use when you want to start the unbonding period for part of your active stake, with a signed nonce. Not for collecting funds (use reputation_withdraw once the cooldown has passed).
Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Nonce from a FRESH reputation_get_nonce call. | |
| amount | Yes | USDC amount to unbond. | |
| wallet | Yes | Your 0x wallet address on Base. | |
| signature | Yes | 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, but the description adds substantive facts those fields cannot convey: stake stops counting toward tier/reputation immediately, funds are locked until a cooldown, and the cooldown details live in reputation_transparency. It also instructs the agent to confirm intent, which goes beyond the bare destructive flag. Minor gap: no mention of gas cost, insufficient-stake failure, or what the response contains.
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 second paragraph's opening sentence ('Use when you want to start the unbonding period for part of your active stake, with a signed nonce') nearly duplicates the first sentence verbatim, which is wasted space. The destructive warning is well placed at the end, and the remaining content is front-loaded and useful.
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?
The tool has no output schema, so the description carries the return-value burden and does so only implicitly — it says funds are withdrawable later rather than describing the response. It compensates with the full lifecycle (unbond now, cooldown, withdraw via reputation_withdraw), which is the key context for a non-idempotent mutation.
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 all four parameters (nonce, amount, wallet, signature) are already documented, including the FRESH reputation_get_nonce requirement. The description restates that a signed nonce is needed but adds no format, constraint, minimum, or derivation detail beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource — 'Start the unbonding period for `amount` of your active stake' — scoped to the [Wicked Reputation] system. It explicitly distinguishes itself from the collection step handled by reputation_withdraw, so an agent can pick it apart from the other reputation_* 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?
Provides both a when-to-use clause ('start the unbonding period for part of your active stake, with a signed nonce') and an explicit when-not with the correct alternative ('Not for collecting funds (use reputation_withdraw once the cooldown has passed)'). The routing to the next step in the workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reputation_withdrawADestructiveInspect
[Wicked Reputation] Pay out every unbonding stake whose cooldown has elapsed, in one on-chain transfer to your wallet. Safe to retry if a payout fails. Needs a signed nonce.
Use when your unbonding cooldown has elapsed and you want every matured stake paid out to your wallet. Not for starting the unbonding (use reputation_unstake).
Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Nonce from a FRESH reputation_get_nonce call. | |
| wallet | Yes | Your 0x wallet address on Base. | |
| signature | Yes | 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so 'DESTRUCTIVE and not reversible' largely restates them, but the description adds real value beyond annotations: the payout is batched into one transfer, retry after a failed payout is safe, and a signed nonce is required. It does not describe what is returned (amounts, tx hash), which is a minor gap for a destructive tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then usage, then behavior, with no wasted filler. There is mild redundancy between the opening sentence and the 'Use when' sentence, which restates the cooldown-elapsed condition.
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?
All three required parameters are documented, the destructive/irreversible behavior and sibling alternative are covered, and annotations carry the safety profile. Only the absence of any return-value context (payout amount, transaction reference) keeps it shy of complete.
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 wallet, nonce, and signature in detail, including the 'FRESH' nonce constraint. The description only echoes that a signed nonce is needed, adding no per-parameter meaning 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?
Specific verb and resource: pays out matured unbonding stakes in a single on-chain transfer. It also explicitly distinguishes itself from reputation_unstake, so an agent can route between the two without inspecting 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?
States the triggering condition (cooldown elapsed, matured stakes exist) and the exclusion with the named alternative ('Not for starting the unbonding (use reputation_unstake)'). Both the when and when-not are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanity_checkAInspect
[Wicked Sanity] Verify one claim before acting on it. Verdicts: supported | contradicted | unsupported | insufficient_evidence (see data). confidence_score is raw consistency (a "contradicted" verdict scores near 0). Policy: act on supported; treat unsupported/insufficient_evidence as unverified; reject contradicted. x402 or SANITY_API_KEY; 429 means a rate limit — see retry_after.
Use when you must verify one claim before acting on it, either against source text you supply or against live web evidence. Not for many claims at once (use sanity_check_batch).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "grounded" (default; check against context) or "open" (check against live web evidence — consistency with the web, not objective truth). | |
| claim | Yes | The single statement to verify (max 5,000 chars). | |
| context | No | Source text the claim(s) must be faithful to. Required for mode "grounded". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context beyond the annotations: credential requirements (x402 or SANITY_API_KEY), upstream state writes, and 429/retry_after rate-limit behavior, all consistent with readOnlyHint=false and openWorldHint=true. However, much of the space is spent restating the verdict vocabulary and confidence semantics, and it does not explain what state is written upstream or what a failure other than a 429 looks like.
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 sentence front-loads purpose, verdicts, and policy efficiently, but the 'Use when you must verify one claim before acting on it' line repeats the first sentence almost verbatim, and the trailing 'Behavior:' sentence partly duplicates the credential and non-read-only points already made.
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?
There is no output schema, and the description compensates by naming the verdict values, the `data` field, and confidence_score semantics, plus retry_after on rate limits. Combined with the auth note and the grounded/open evidence framing, an agent has everything needed to call it and interpret the response.
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 explains mode (grounded/open), claim length, and the context requirement for grounded mode. The description adds only an indirect gloss ('source text you supply or against live web evidence') that restates the schema without new syntax or formatting detail, 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?
States a specific verb and resource ('Verify one claim'), enumerates the possible verdicts, and explicitly names the sibling it is not (sanity_check_batch) for the multi-claim case. An agent can distinguish this from sanity_check_batch and sanity_get_check without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when you must verify one claim before acting on it'), names the two supported evidence sources, and names the alternative tool with the condition that selects it ('Not for many claims at once — use sanity_check_batch'). It also supplies an action policy per verdict, which is genuine decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanity_check_batchAInspect
[Wicked Sanity] Verify up to 50 claims against one shared context in a single call — prefer this over one sanity_check per sentence. data is a list in the same order as claims.
Use when you have a multi-sentence output to verify against one shared context in a single call (up to 50 claims). Not for a single claim (use sanity_check).
Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "grounded" (default; check against context) or "open" (check against live web evidence — consistency with the web, not objective truth). | |
| claims | Yes | 1-50 statements, each up to 5,000 chars. | |
| context | No | Source text the claim(s) must be faithful to. Required for mode "grounded". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations by disclosing that it "writes state upstream (not read-only)" and requires credentials or a wallet signature. The openWorldHint=true is also indirectly supported by the schema's "open" mode description. Minor deduction because "the credentials or wallet signature noted above where applicable" points to text that does not exist in the description, leaving the exact auth requirement unresolved.
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 sentence and the "Use when..." paragraph repeat the same facts (50 claims, one shared context, single call) nearly verbatim. The dangling "noted above" reference also costs space without adding information. The core routing guidance is front-loaded, which saves it from a lower score.
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?
Batch verification semantics and the grounded/open modes are covered, and there is no output schema to relieve. However, with no output schema the description should say what comes back per claim (verdicts, ordering, partial failures), and the dangling auth reference leaves an operational question open.
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 would be 3, but the description introduces "`data` is a list in the same order as `claims`" — there is no `data` parameter in the schema. This actively misleads an agent about what to send. The one genuinely useful hint, batch ordering, is attached to a nonexistent field.
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 with scope: "Verify up to 50 claims against one shared context in a single call." It also names the sibling it replaces (one sanity_check per sentence), so an agent can distinguish it from sanity_check without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing in both directions: "Use when you have a multi-sentence output to verify against one shared context" and "Not for a single claim (use sanity_check)." The alternative and the condition that selects it are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sanity_get_checkARead-onlyIdempotentInspect
[Wicked Sanity] Fetch a previously run check by its check_id (returned by sanity_check / sanity_check_batch). x402 or SANITY_API_KEY like the other Sanity calls.
Use when you want to re-read an earlier check by its check_id. Not for running a new check.
Behavior: read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| check_id | Yes | The check_id from an earlier sanity_check result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint and that nothing is destructive, so 'Behavior: read-only' repeats structured data. The genuinely additive piece is the payment/auth note ('x402 or SANITY_API_KEY like the other Sanity calls'), which tells the agent a payment path may be required — but the description never says what the retrieved check looks like or whether results expire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the total length is small. There is some waste: the usage sentence largely restates the purpose sentence, and the 'Behavior: read-only.' line duplicates the annotation rather than earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-param read tool with no output schema, the description covers purpose, alternative, and auth. However, it gives no hint of the returned record's structure or how it differs from just re-running sanity_check, leaving the agent to guess what it will get back.
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 says check_id comes from an earlier sanity_check result; the description restates the same provenance. With one fully documented parameter and no extra format details (e.g., id shape, whether batch ids work), baseline 3 is right.
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 — fetch a previously run check by check_id — and names the sibling tools that produce that id (sanity_check / sanity_check_batch). It is distinguishable from the sibling checks, though the bracketed '[Wicked Sanity]' prefix adds noise rather than precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use ('re-read an earlier check by its check_id') and when not ('Not for running a new check'), which routes the agent away from sanity_check. No further exclusions or sequencing guidance are given, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sentimentARead-onlyIdempotentInspect
[Trading Data API] Free, no signup required. Crypto Fear & Greed Index (alternative.me), current reading + optional history.
Example: /v1/sentiment?limit=7
Use when you want the crypto Fear & Greed reading as a quick market-mood signal. Not for asset-specific direction (use momentum_score).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional. Number of days of history (default 1, max 90). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotent, but the description adds materially new facts beyond them: the upstream source, that it is free, and that no API key or payment is needed. It could still say more about refresh cadence or what the response contains, but the extra context is genuinely valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage routing are front-loaded, followed by the example and behavior notes. It is efficiently sized, though the raw endpoint path is slightly redundant for a tool-calling audience.
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 optional parameter, read-only, no-output-schema tool, the definition covers source, scope, usage, and access requirements. Only minor gaps remain, such as update frequency or the shape of the returned index reading.
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 description already explains limit as days of history with default 1 and max 90. The description's example "/v1/sentiment?limit=7" and "optional history" reinforce but add little semantic detail 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 the specific resource and source: "Crypto Fear & Greed Index (alternative.me), current reading + optional history." This is a concrete verb+resource that distinguishes it from the many trading-data siblings such as momentum_score and market_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ("as a quick market-mood signal") and when not to ("Not for asset-specific direction (use momentum_score)"), naming the alternative tool. This is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_riskARead-onlyIdempotentInspect
[Token Risk Oracle] Free, public, no signup. Aggregates real on-chain risk signals from GoPlus Security for a token contract — honeypot detection, mint/ownership authority, holder & LP concentration, buy/sell tax, trust-list status — into one transparent risk score. Never a bare safe/unsafe claim: every flag GoPlus didn't return data for stays null, and the raw source data ships alongside the score.
Use when you are about to buy or interact with a token contract and want honeypot, mint authority, holder and LP concentration and tax signals (EVM and Solana). Not for wallet or address risk (use wallet_check) or protocol vetting (use protocol_health_score).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Required. ethereum, bsc, base, polygon, arbitrum, optimism, avalanche, fantom, zksync, linea, scroll, or solana. A numeric EVM chain_id also works. | |
| address | Yes | Required. The token contract address (EVM) or mint address (Solana). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, yet the description adds material context beyond them: free and no signup/key, GoPlus as the upstream source, and the null-not-false convention for missing flags. It also discloses that raw source data is returned alongside the score, which prevents an agent from over-trusting the aggregate.
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 and the null-handling caveat are front-loaded, and every sentence carries information. Slightly long with two dense parenthetical signal lists, but no filler or marketing fluff that fails to inform invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return shape: a transparent risk score, null flags, and the raw upstream payload. Combined with clear input scope, an agent has everything needed to call it and interpret results.
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 are already documented including the chain enum values and the numeric chain_id fallback. The description only adds a scope note ('EVM and Solana'), which the schema already conveys via its chain list. 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?
Starts with a specific verb+resource framing ('[Token Risk Oracle] ... aggregates real on-chain risk signals ... for a token contract') and enumerates the exact signal families covered. It is clearly distinguishable from the risk-adjacent siblings it names.
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 trigger ('about to buy or interact with a token contract') plus explicit exclusions that route to the right alternatives: wallet_check for address risk, protocol_health_score for protocol vetting. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verdictARead-onlyIdempotentInspect
[Trading Data API] One-call trading verdict for an asset: LONG, SHORT or NEUTRAL bias with a 0-10 confidence, a one-line thesis, entry, invalidation and two targets, and the trend / momentum / structure / liquidity readings behind it. Mechanical scoring from live candles on two timeframes (EMA stack, MACD, RSI, ADX, swing structure, liquidity sweeps, volume point of control), never a guess. BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA.
Example: /v1/verdict?symbol=BTC&timeframe=1h
Use when you want one call that returns a LONG/SHORT/NEUTRAL bias with a 0-10 confidence and a one-line thesis. Not for the full structured levels (use momentum_score, an alias of the same engine) or raw inputs (use price, atr).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Required. One of: BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA. | |
| timeframe | No | Optional. Execution timeframe: 15m, 1h, 4h, 1D, 1W (default 1h); the next timeframe up is used as context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld/non-destructive, and the description adds genuinely non-derivable behavior: pricing via x402 (USDC on Base) or an API key, and that an unauthenticated call returns HTTP 402 with a decoded price in payment_required that is a quote, not a failure. That 402 explanation is exactly the kind of trap an agent needs disclosed; it stops just short of 5 only because rate limits/quota behavior and latency expectations are unmentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core promise in the first sentence and uses a predictable shape (what it is, example, when-to-use, when-not, behavior). It loses a point for redundancy: the asset list appears twice within the description and the 'Use when...' sentence restates the opening sentence's bias/confidence/thesis payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so precisely (bias, confidence, thesis, entry, invalidation, two targets, indicator readings). For a read-only single-call tool with two well-documented params, the added auth/payment semantics leave nothing an agent needs missing before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so symbol's allowed values and timeframe's 15m/1h/4h/1D/1W options with default 1h are already fully documented in structured fields. The description mostly repeats that asset list and only adds a concrete request example (`/v1/verdict?symbol=BTC&timeframe=1h`), which is mild incremental value, 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?
States a specific verb and resource ('one-call trading verdict for an asset') and enumerates the exact payload: LONG/SHORT/NEUTRAL bias, 0-10 confidence, thesis, entry, invalidation, two targets, plus the underlying readings. It also names the engine inputs, so an agent can distinguish it from momentum_score (same engine, structured levels) and price/atr (raw inputs) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Use when you want one call that returns a LONG/SHORT/NEUTRAL bias...') and explicit when-not with named alternatives ('Not for the full structured levels (use momentum_score...) or raw inputs (use price, atr)'). Nothing about routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volatilityARead-onlyIdempotentInspect
[Trading Data API] Deribit volatility: DVOL implied-vol index (30d forward) + latest realized volatility, for BTC or ETH.
Example: /v1/volatility?currency=BTC
Use when you want Deribit implied volatility (DVOL) next to realized volatility for BTC or ETH. Not for other assets or ATR-style sizing (use atr).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Optional. BTC (default) or ETH. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, so the description's biggest value-add is the pricing and failure semantics: x402 (USDC on Base) or free with WICKEDAPI_API_KEY, and that an HTTP 402 carries a decoded price in payment_required which is a quote, not a failure. That is non-obvious behavior an agent cannot infer from structured fields and prevents a misdiagnosed error.
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?
Content is dense and every block earns its place (definition, example, usage/exclusion, payment behavior). Minor deduction: the example path is placed before the use-case guidance, so the routing information an agent most needs is not the first thing it reads.
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 one-optional-param read tool with annotations covering the safety profile and no output schema, this covers purpose, currency scope, the ATR boundary, and payment/error behavior. It stops short of describing the shape of the returned values (units, whether realized vol is a window series or a scalar), which would fully close the gap left by the absent output 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% and the single `currency` parameter is already documented in-schema as "BTC (default) or ETH". The description's example (`?currency=BTC`) and the repeated BTC-or-ETH scope add only marginal value beyond the schema, so the 3 baseline 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?
States a specific verb+resource: Deribit DVOL implied-vol index (30d forward) plus latest realized volatility, limited to BTC or ETH. The trailing clause explicitly names the sibling `atr` as the tool for ATR-style sizing, so an agent can distinguish this from the nearest alternative 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?
Gives an explicit when-to-use ("Use when you want Deribit implied volatility (DVOL) next to realized volatility for BTC or ETH") and an explicit when-not ("Not for other assets or ATR-style sizing (use atr)"). The alternative and the selecting condition are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_checkARead-onlyIdempotentInspect
[Wallet Oracle] Pre-transaction counterparty check for an EVM wallet or contract: OFAC SDN screening, GoPlus malicious-address flags (phishing, drainers, laundering, mixers ...), and a live on-chain profile (EOA / contract / EIP-7702, nonce, balance, ENS, first transaction, contract verification). Returns risk_level, a plain recommendation (do_not_transact / review_before_transacting / no_red_flags_found), every reason with its source, and which sources were unavailable.
Example: /v1/wallet-check?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum
Use when you are about to transact and want a pre-transaction check of a wallet or contract: OFAC, malicious-address flags and on-chain signals. Not for token contract safety (use token_risk).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. ethereum, base, arbitrum, optimism, polygon (default base). | |
| address | Yes | Required. A 0x address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description goes well beyond them: it discloses x402 pricing (USDC on Base), the free path via WICKEDAPI_API_KEY, and pre-empts the most common misread by explaining that an HTTP 402 with a decoded price in payment_required is a quote, not a failure. It also names the returned decision fields (risk_level, do_not_transact/review_before_transacting/no_red_flags_found) and that unavailable sources are reported.
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 what is screened, followed by returns, example, usage, and behavior blocks in a predictable order. There is minor redundancy between the opening scope sentence and the 'Use when...' sentence repeating the same OFAC/malicious/on-chain list, and the bracketed '[Wallet Oracle]' tag is low-value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (risk_level, a plain recommendation, every reason with its source, unavailable sources) and covers payment gating, which is the main failure mode for this tool. Nothing an agent needs before calling 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?
Schema coverage is 100% and the chain enum (ethereum, base, arbitrum, optimism, polygon) plus the base default are already documented in the schema. The example query string illustrates address/chain usage but adds no semantics the schema does not already carry, 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?
States a specific verb and resource ('pre-transaction counterparty check for an EVM wallet or contract') and enumerates what it aggregates: OFAC SDN screening, GoPlus malicious-address flags, and a live on-chain profile (EOA/contract/EIP-7702, nonce, balance, ENS, first tx, verification). It also explicitly carves itself off from the sibling token_risk, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when you are about to transact and want a pre-transaction check of a wallet or contract' gives a concrete trigger condition, and 'Not for token contract safety (use token_risk)' supplies both an exclusion and the named alternative. Nothing about choosing this tool 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.
wallet_portfolioARead-onlyIdempotentInspect
[Trading Data API] What a wallet holds: native balance plus major ERC-20 tokens (stablecoins, wrapped assets, large caps) across Ethereum, Base, Arbitrum, Optimism and Polygon, with live USD prices, per-chain and total value. Address or ENS name. Reads the chain directly; tokens outside the curated list are not shown (the response states this).
Example: /v1/wallet-portfolio?address=vitalik.eth&chain=all
Use when you want what a wallet holds in one call: native balance plus major ERC-20 tokens across supported chains. Not for one specific token (use chain_token_balance) or counterparty risk (use wallet_check).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional. all (default), ethereum, base, arbitrum, optimism or polygon. | |
| address | Yes | Required. 0x address or ENS name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations it discloses two behaviors an agent cannot infer: tokens outside the curated list are silently excluded (though stated in the response), and the paywall path where a missing key yields HTTP 402 carrying a decoded price quote rather than an error. That 402-is-not-a-failure note is genuinely useful for agent error handling; it stops short of describing pagination or response shape in detail, which the paid-access framing partly excuses.
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 what the tool returns, followed by an example, usage routing, and behavior notes. Slightly redundant in restating 'what a wallet holds in one call' from the opening, but every other sentence carries distinct 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?
With only two flat parameters and no output schema, the description covers the return contents (native + major tokens, USD prices, per-chain and total), the supported chain set, the curation limitation, and the payment requirement. An agent can call it and interpret failures correctly without further information.
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% with only two parameters, so the schema already documents address/ENS and the chain choices. The description largely repeats those (the five chain names and 'Address or ENS name' duplicate the schema), adding only a concrete example URL as marginal value, so 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 states a specific resource and scope: native balance plus major ERC-20 tokens across five named chains, with live USD prices and per-chain/total value. It also bounds the result set (curated token list) so an agent knows exactly what 'portfolio' means here, distinguishing it from single-balance and risk 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 an explicit use case ('one call' snapshot of holdings) and two explicit exclusions with named alternatives: chain_token_balance for a single token and wallet_check for counterparty risk. Nothing about tool selection 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.
wallet_sanctions_checkARead-onlyIdempotentInspect
[Wallet Oracle] Is this address on the US Treasury OFAC SDN sanctions list? Exact match against every digital-currency address OFAC publishes (EVM, Tron, Bitcoin and others), with the sanctioned entity, program, and the list's publish date - Free. Is this address on the US Treasury OFAC SDN sanctions list? Exact match against every digital-currency address OFAC publishes (EVM, Tron, Bitcoin and others), with the sanctioned entity, program, and the list's publish date. Chain-agnostic.
Example: /v1/sanctions-check?address=0x8589427373D6D84E98730D7795D8f6f8731FDA16
Use when you need a free yes/no on whether an address is on the OFAC SDN sanctions list. Not for broader counterparty risk (use wallet_check).
Behavior: read-only and free; no key or payment needed.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Required. Any wallet address (0x EVM, Tron T..., Bitcoin, Solana, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context beyond the annotations: it is free, requires no key or payment, performs exact matching, is chain-agnostic, and returns sanctioned entity, program, and publish date.
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 key purpose and usage guidance are front-loaded, but the description contains a near-verbatim duplicate of the main sanctions-check sentence, which adds length without new information. The duplication noticeably weakens conciseness despite otherwise efficient phrasing.
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 tool with full schema coverage and rich annotations, the description supplies what is still useful: usage guidance, alternative tool, cost/auth behavior, exact-match semantics, chain support, and what the response contains. No output schema is present, but the description sufficiently explains return 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 coverage is 100%, so the single address parameter is already documented. The description adds meaning by clarifying that matching is exact, that it applies to digital-currency addresses across EVM, Tron, Bitcoin and others, and by including an example address.
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 question the tool answers: whether an address is on the US Treasury OFAC SDN sanctions list, using exact matching across multiple chains. It clearly distinguishes the tool from broader wallet risk checks by naming wallet_check as the alternative for counterparty risk.
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 says when to use the tool: for a free yes/no on whether an address is on the OFAC SDN list. It also gives an exclusion and alternative: not for broader counterparty risk, use wallet_check instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchARead-onlyIdempotentInspect
[Trading Data API] Real-time web search for agents: ranked results with title, URL, snippet and score, plus an optional synthesized answer. Pay per search; general or news topic.
Example: /v1/web-search?q=latest+ethereum+upgrade&max_results=5&topic=news
Use when an agent needs fresh web results with titles, URLs and snippets. Not for verifying a claim (use sanity_check with mode open).
Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Required. The search query (max 400 characters). | |
| topic | No | Optional. general (default) or news. | |
| max_results | No | Optional. 1-10 (default 5). | |
| include_answer | No | Optional. true (default) or false to skip the synthesized answer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world safety, but the description adds material context the annotations cannot: per-search pricing via x402 (USDC on Base) or an API key, and that an HTTP 402 response carrying a decoded price is a quote, not a failure. That payment edge case is precisely the kind of behavior an agent would otherwise misread as an error.
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?
Four short blocks (summary, example, when-to-use, behavior) with the core capability front-loaded and no filler sentences. The pricing paragraph is the longest but every clause carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the returned fields and covers the payment path and the 402 edge case. For a 4-param, single-required read tool, an agent has everything needed to call it and interpret the response.
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 would be 3; the description earns extra by supplying a concrete example URL that shows parameter formatting and the interaction of q, max_results and topic. It does not restate defaults or the 400-character limit, so it stops short of a 5.
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 ('Real-time web search') plus the exact return shape (title, URL, snippet, score, optional synthesized answer). It explicitly distinguishes itself from the sibling sanity_check, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('agent needs fresh web results with titles, URLs and snippets'), an explicit when-not ('Not for verifying a claim'), and names the alternative with the exact mode to use ('use sanity_check with mode open').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.7.3- Added
paywall_demo_weather
46 tool updates
v0.7.2- Added
chain_balance - Added
chain_block - Added
chain_ens - Added
chain_nonce - Added
chain_token_balance - Added
chain_tx - Added
crypto_news - Added
filings_8k_events - Added
filings_filing - Added
filings_freshness - Added
filings_insider_summary - Added
filings_insider_trades - Added
filings_latest_preview - Added
filings_search - Changed
identity_get_challenge5 fields changed- changed
Input schema / properties / nonce / descriptionPrevious value: -"Nonce from a FRESH identity_get_nonce call."New value: +"Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox." - added
Input schema / properties / sandbox_tokenAdded value: +{ + "description": "Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature.", + "type": "string" +} - changed
Input schema / properties / signature / descriptionPrevious value: -"0x-prefixed ECDSA signature over that nonce's message."New value: +"Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox." - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your agent's 0x wallet address on Base."New value: +"Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register." - changed
Input schema / requiredPrevious value: -[ - "wallet", - "nonce", - "signature" -]New value: +[ + "wallet" +]
- Changed
identity_get_nonce1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your agent's 0x wallet address on Base."New value: +"Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register."
- Added
identity_get_test_key - Changed
identity_jwks1 field changed- added
Input schema / properties / sandboxAdded value: +{ + "description": "true = the sandbox key set (issuer wicked-identity-sandbox).", + "type": "boolean" +}
- Changed
identity_register1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your agent's 0x wallet address on Base."New value: +"Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register."
- Added
identity_sandbox_register - Changed
identity_status1 field changed- added
Input schema / properties / api_keyAdded value: +{ + "description": "Optional x-api-key, e.g. from identity_get_test_key.", + "type": "string" +}
- Changed
identity_submit_response6 fields changed- changed
Input schema / properties / nonce / descriptionPrevious value: -"Nonce from a FRESH identity_get_nonce call."New value: +"Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox." - changed
Input schema / properties / response_text / descriptionPrevious value: -"Your answer exactly as the instructions specify."New value: +"Your answer exactly as the instructions specify: raw text only." - added
Input schema / properties / sandbox_tokenAdded value: +{ + "description": "Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature.", + "type": "string" +} - changed
Input schema / properties / signature / descriptionPrevious value: -"0x-prefixed ECDSA signature over that nonce's message."New value: +"Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox." - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your agent's 0x wallet address on Base."New value: +"Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register." - changed
Input schema / requiredPrevious value: -[ - "wallet", - "nonce", - "signature", - "challenge_id", - "response_text" -]New value: +[ + "wallet", + "challenge_id", + "response_text" +]
- Added
liquidations - Added
polymarket - Added
registry_create_api_key - Added
registry_key_info - Added
registry_lookup - Added
registry_onboarding_message - Changed
registry_register_tool1 field changed- changed
Input schema / properties / timestamp / descriptionPrevious value: -"ISO 8601 timestamp used in the signed message (within 10 minutes of the call)."New value: +"ISO 8601 timestamp used in the signed message (within an hour of the call)."
- Added
registry_revoke_key - Changed
registry_search_tools1 field changed- added
Input schema / properties / api_keyAdded value: +{ + "description": "Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY.", + "type": "string" +}
- Changed
registry_tool_detail2 fields changed- added
Input schema / properties / api_keyAdded value: +{ + "description": "Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY.", + "type": "string" +} - changed
Input schema / properties / tool_id / descriptionPrevious value: -"Registry id from registry_search_tools / registry_featured_tools."New value: +"Registry id from registry_lookup / registry_search_tools / registry_featured_tools."
- Added
reputation_erc8004 - Added
reputation_get_nonce - Added
reputation_history - Added
reputation_leaderboard - Added
reputation_register - Added
reputation_stake - Added
reputation_unstake - Added
reputation_withdraw - Added
sanity_get_check - Added
verdict - Added
wallet_check - Added
wallet_portfolio - Added
wallet_sanctions_check - Added
web_search
70 tool updates
v0.3.1- First observed
atr - First observed
basis - First observed
broker_sync_balances - First observed
broker_sync_connections - First observed
broker_sync_positions - First observed
broker_sync_prop_firms - First observed
broker_sync_register_user - First observed
broker_sync_transactions - First observed
defi_tvl - First observed
earnings_calendar - First observed
funding_oi - First observed
fvg - First observed
gas - First observed
hyperliquid - First observed
identity_get_challenge - First observed
identity_get_nonce - First observed
identity_jwks - First observed
identity_register - First observed
identity_status - First observed
identity_submit_response - First observed
kalshi_market - First observed
kalshi_probability - First observed
liquidity_levels - First observed
long_short_ratio - First observed
macro_calendar - First observed
market_clock - First observed
market_overview - First observed
memory_delete - First observed
memory_deletions - First observed
memory_get - First observed
memory_history - First observed
memory_prepare - First observed
memory_search - First observed
memory_store - First observed
memory_update - First observed
momentum_score - First observed
ohlcv - First observed
orderbook - First observed
paywall_create_route - First observed
paywall_delete_route - First observed
paywall_get_tenant - First observed
paywall_import_routes - First observed
paywall_list_routes - First observed
paywall_list_settlements - First observed
paywall_signup - First observed
paywall_update_route - First observed
price - First observed
protocol_health_list_protocols - First observed
protocol_health_refresh_all - First observed
protocol_health_score - First observed
protocol_health_scoreboard - First observed
protocol_health_sync_universe - First observed
protocol_health_track_protocol - First observed
rates - First observed
registry_featured_tools - First observed
registry_register_tool - First observed
registry_report_tool - First observed
registry_search_tools - First observed
registry_tool_badge - First observed
registry_tool_detail - First observed
reputation_query - First observed
reputation_statement - First observed
reputation_status - First observed
reputation_tiers - First observed
reputation_transparency - First observed
sanity_check - First observed
sanity_check_batch - First observed
sentiment - First observed
token_risk - First observed
volatility
TDQS
Scored across 108 tools
Many descriptions explicitly say when to use one tool versus another, and most subdomains are distinct. However, there are real overlaps and aliases such as verdict vs momentum_score, registry_lookup vs registry_tool_badge, and protocol_health_scoreboard vs protocol_health_list_protocols. With 108 tools across many domains, misselection remains a meaningful risk.
Almost all names use snake_case, and many domains have clear prefixes such as memory_, reputation_, paywall_, and registry_. But the convention is mixed: some tools are noun-only (price, sentiment, gas, verdict), others are verb_noun (memory_store, paywall_create_route), and the Trading Data API tools are largely unprefixed while other domains are namespaced.
A 108-tool surface is far beyond a well-scoped MCP tool set and spans numerous unrelated services including trading data, filings, reputation, registry, memory, paywall, identity, and broker sync. Even if each subdomain is coherent internally, the overall set is too large for an agent to navigate reliably.
Most visible subdomains have broad lifecycle coverage: memory CRUD/versioning, reputation staking flows, paywall route management, registry onboarding, filings, identity, sanity checks, and broker sync. There are minor gaps such as broker/user disconnect or registry update operations, but no obvious dead ends for the core workflows.
Maintenance
Related MCP Connectors
Pay-per-call DeFi and macro intel for AI agents. x402 USDC tools via streamable HTTP /api/mcp.
Pay-per-call ($0.005-$0.03 USDC) market, on-chain, and prediction-market data API for AI agents and trading bots via x402 — no signup, no API key. Remote MCP server, 28 tools: token security (honeypot/liquidity/counterfeit checks), Hyperliquid oracle-gap risk, kimchi premium, funding APR, DEX slippage, Polymarket arbitrage/liquidity audits, Hyperliquid HIP-4 odds.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Related MCP Servers
- AlicenseAqualityCmaintenanceEight crypto and DeFi data tools for AI agents: prices, gas, one ParaSwap route quote, GoPlus token security and top-holder samples, DefiLlama yields, Hyperliquid/dYdX funding, and observed wallet balances. Inspect prices free; pay 0.001–0.008 USDC per call on Base through x402. No API key or subscription.8120 npmMIT
- FlicenseNot gradedqualityCmaintenance250+ AI-powered MCP tools: research, write, code, translate, scrape, sentiment, vision, RAG, agent memory, marketplace, trading signals, and more. 15 models across 7 providers. Pay-per-use via API key or x402 USDC micropayments.2-
- AlicenseNot gradedqualityDmaintenanceCrypto intelligence MCP: 104 tools for market data, ML signals, on-chain analytics, derivatives, and Bittensor subnets. Pay-per-call via x402 USDC on Base/Solana/Algorand/Stellar or $9.99/mo API key.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access professional crypto market intelligence via 8 MCP tools, covering market regime, fear/greed, funding rates, DeFi yields, token signals, wallet risk, and contract audits. Backed by real-time data from Binance, DeFiLlama, Etherscan, with both free tools and x402 micropayment options.2MIT