Crypto Bot Audit + Market Data (x402 paid)
Server Details
x402 pay-per-call: 146 MCP tools, no account or key. USDC on Base + Solana, $0.001-$0.01/call.
- Status
- Healthy
- Uptime
- 71.8% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 146 tools
With 146 tools, many perform conceptually identical tasks across different venues (ticker/trades/candles for Bitfinex, Coinbase, Kraken, Gate, OKX, KuCoin, Hyperliquid) and chain wrappers overlap (chain_balance vs chain_wallet_state, chain_token_balance vs chain_token_balances vs chain_wallet_tokens). Descriptions distinguish data sources, but an agent choosing a tool for 'get price' or 'check balance' faces many near-equivalent options.
Nearly all tools use snake_case with clear subsystem prefixes (chain_, market_<venue>_), making the pattern predictable. A handful of generic names (get_token_price, search_tokens, top_markets, stablecoin_supply) deviate from the prefix convention and are not verb_noun, but they remain readable.
146 tools is far beyond a well-scoped set; the server bundles dozens of low-level RPC wrappers and per-venue market-data endpoints, many of which are redundant for typical agent workflows.
Coverage of on-chain reads and multi-venue market data is extremely broad, including bot auditing, token risk, and x402 rail intelligence. Gaps remain: audit only takes one file, there are no write/execution/signing operations, and some data sources (e.g., Solana RPC, Sui) are not represented, but these are workable for a read-only data server.
Available Tools
146 toolsaudit_bot_codeAudit crypto-bot source for fake-earnings bugsARead-onlyIdempotentInspect
Input one JS/TS source file (string). Returns findings for: testnet-as-USD, silent-zero balance, cooldown key mismatch, fake faucet endpoint, speculative earnings text. Costs $0.01 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | one JS/TS file | |
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, idempotentHint=true, and destructiveHint=false already covering the safety profile, the bar is lower; the description earns credit by disclosing the $0.01 USDC x402 cost, a real behavioral side effect annotations cannot express. It also clarifies input format and enumerates exactly what findings are returned. Minor gap: it does not flag that the submitted source code is transmitted to an external service.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, roughly 40 words, with zero filler. Input format and findings list are front-loaded, and the cost disclosure earns its place as the closing sentence. Every word adds signal.
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-required-param tool with annotations covering safety, the input format, cost, and findings categories give an agent enough to invoke it correctly. But with no output schema, the description carries the return-value burden and only lists finding names, not their structure; it also leaves 'filename' unexplained and does not differentiate from demo_audit. Adequate but with real 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 only 50% (code has 'one JS/TS file', filename has none), so the description should compensate but does not. It merely restates the schema's type for 'code' ('Input one JS/TS source file (string)') and says nothing about 'filename's purpose or when it should be supplied. It adds essentially no meaning beyond the structured 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 names a specific verb (audit), resource (crypto-bot JS/TS source), and enumerates the exact bug categories it detects (testnet-as-USD, silent-zero balance, cooldown key mismatch, fake faucet endpoint, speculative earnings text). The title echoes this. Among a sibling list dominated by chain_* and market_* tools, its purpose is unmistakable, and it is substantially differentiated from the closest sibling, demo_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied via 'Input one JS/TS source file (string)' and the specific fake-earnings bug list, so an agent can infer when it applies. However, it never states when not to use it, names the alternative (demo_audit exists as a sibling), or gives selection conditions. Clear context, but no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_1155_balanceERC-1155 balance of one idARead-onlyIdempotentInspect
balanceOf(account, id) for a multi-token contract, formatted with whatever supply unit the contract uses — the read a Zora/Sudoswap-style position tracker needs, which an ERC-20 or ERC-721 lookup cannot answer. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/1155-balance?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&account=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| account | Yes | holder address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| account | No | |
| chainId | No | |
| tokenId | No | |
| readable | No | |
| supported | No | |
| balanceRaw | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds non-obvious behavior beyond annotations: cost per call ($0.001 USDC) and formatting behavior ('formatted with whatever supply unit the contract uses'). These are not available in schema or annotations, and the description does not contradict the readOnlyHint/idempotentHint 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 longer than strictly necessary but well-structured: purpose first, then cost, then chains, then a concrete REST equivalent. Each sentence adds value and the tool is not buried in fluff. Slightly verbose, but not rambling.
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 essential aspects for a read-only balance lookup: purpose, differentiation, cost, supported chains, and formatting behavior. The output schema handles return-value documentation, so the description need not explain that. It does not mention edge cases like invalid token or account, but that is minor for this kind of utility.
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 each parameter (chain, token, account, tokenId) is already documented with concise descriptions. The description's example URL underscores parameter usage but does not introduce new semantics beyond what the schema provides. 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?
Description states the exact operation (balanceOf for ERC-1155), specifies the contract type, and clearly differentiates from ERC-20/721 lookups. The mention of 'the read a Zora/Sudoswap-style position tracker needs' grounds it in a concrete use case, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when this tool is appropriate (ERC-1155 balance) and explicitly notes that ERC-20/721 lookups are insufficient. However, it does not name specific sibling tools like chain_1155_batch for multi-token queries or chain_1155_check for other checks, leaving the alternative selection partly implicit. The chain list and cost also help set expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_1155_batchMany ERC-1155 positions, one paymentARead-onlyIdempotentInspect
balanceOfBatch over up to 10 (account, id) pairs in a single settled call — the position snapshot of a portfolio, which is otherwise one paid read per line. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/1155-batch?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&accounts=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenIds=1,2.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| accounts | Yes | up to 10 holder addresses, positionally matched to tokenIds [required] | |
| tokenIds | Yes | up to 10 ids (decimal), same order as accounts [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| answered | No | |
| readable | No | |
| requested | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint, idempotentHint, and destructiveHint=false already cover safety, the description adds material behavior: $0.001 USDC cost per call, a 10-pair cap, supported chains, and byte-identical REST equivalence. No contradiction 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 main function is front-loaded and every segment—function, cost, chains, REST equivalence—carries distinct information. The long example URL is dense rather than 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?
With an output schema, full parameter descriptions, and strong annotations, the description covers purpose, cost, supported chains, batch limits, and exact endpoint equivalence. An agent has what it needs to select and invoke this 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 applies and the description mostly restates positional matching and caps already in the schema. The byte-identical GET example demonstrates encoding (e.g., tokenIds=1,2) but leaves the accounts list delimiter implicit, so it adds only marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names the exact operation (balanceOfBatch) and resource (up to 10 ERC-1155 account/id pairs) in a single settled call, and positions it as a portfolio snapshot. This is distinct from the single-position 1155 siblings and from other chain balance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates when to use the tool: when you need a multi-position snapshot and want to avoid one paid read per line. It does not explicitly name the single-balance sibling or state when not to use it, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_1155_checkIs this really an ERC-1155ARead-onlyIdempotentInspect
supportsInterface for the multi-token ids plus contractURI and a probe of one id — the pre-flight before a client assumes a contract is a 721 and sends the wrong call. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/1155-check?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| tokenId | No | id to probe uri() with (default 0) (default 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| standards | No | |
| supported | No | |
| chainLabel | No | |
| contractURI | No | |
| probedTokenId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral context: it costs $0.001 USDC per call, supports a specific set of chains, and is byte-identical to a documented GET endpoint, which goes beyond the annotation defaults.
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 its core purpose, then cost, chains, and REST equivalence. It is compact, though the byte-identical GET URL adds some redundant detail that could have been shortened.
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 annotations covering safety, an output schema covering return values, and a schema covering all parameters, the description provides the remaining essential context: why to use the tool, what it checks, what it costs, and where it works. Nothing critical 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 input schema already documents all three parameters with 100% coverage. The description adds a concrete URL example showing chain, token, and tokenId, which is helpful, but it does not add material semantic meaning 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 operation: checking ERC-1155 support via supportsInterface, contractURI, and an id probe. It clearly frames this as a pre-flight check before assuming a contract is a 721, distinguishing it from balance/URI siblings like chain_1155_balance and chain_1155_uri.
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 an explicit use case: 'the pre-flight before a client assumes a contract is a 721 and sends the wrong call.' It also lists supported chains and a per-call cost, giving context for when calling is appropriate, though it does not explicitly name alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_1155_uriERC-1155 metadata pointer for an idARead-onlyIdempotentInspect
uri(id) decoded from the ABI string, with the {id} substitution left visible instead of followed — the metadata URL a wallet will fetch, returned as text and never requested by us. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/1155-uri?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| raw | No | |
| uri | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| tokenId | No | |
| readable | No | |
| template | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent hints, the description discloses valuable behavioral details: the `{id}` substitution is left visible, the URI is returned as text, the tool never fetches the URL itself, there is a $0.001 USDC cost, supported chains are listed, and results are byte-identical to a specific REST endpoint. This significantly exceeds the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the most important semantic detail, then adds cost, chains, and an exact REST-equivalent reference. Every sentence contributes actionable information without 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 simple read-only ERC-1155 URI lookup, the description covers the output form, behavioral guarantee of not fetching, cost, supported chains, and REST equivalency. The output schema exists, and annotations cover safety/idempotency, so nothing critical 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 schema already covers all three parameters with clear descriptions at 100% coverage, so the baseline applies. The description adds a concrete endpoint example and reiterates chain keys, but it does not substantially deepen parameter meaning beyond what the schema and example already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action: decoding `uri(id)` from the ERC-1155 ABI and returning the metadata URL a wallet would fetch. It is specific about the resource and output format, and the title plus supported-chain list distinguish it from ERC-721-oriented sibling tools like `chain_nft_token_uri`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—when you need the metadata URL for a token ID without fetching it—and clarifies that the tool never requests the URL. However, it does not explicitly direct users to alternative sibling tools (e.g., `chain_nft_token_uri` for ERC-721) or state when not to use it, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_allowanceERC-20 allowanceARead-onlyIdempotentInspect
allowance(owner, spender) in raw and decimal form — how much a approval still lets a third party move, which is the number behind most drain headlines. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/allowance?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&spender=0x0000000000000000000000000000000000000000.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| token | Yes | token / NFT contract address [required] | |
| spender | Yes | allowance spender address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| raw | No | |
| note | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| spender | No | |
| decimals | No | |
| formatted | No | |
| chainLabel | No | |
| unlimitedApproval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond these: the cost per call ($0.001 USDC), the supported chains, the output format (raw and decimal), and a concrete example request. It also provides a byte-identical REST endpoint reference. This exceeds the minimum and enriches the agent's understanding of side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by cost, chains, and a practical example. Each sentence adds value; the example is long but informative. It avoids unnecessary filler and is well-structured for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent single-allowance lookup, the description covers the key context: cost, supported chains, output format, and a usage example. The output schema exists, so return values are defined elsewhere. It lacks error-case details or notes on edge cases, but these are not critical for a simple 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 all four parameters are already documented. The description does not add significant semantic detail beyond the schema, but the included example request clarifies address format and the 'chain key' usage. Since the schema carries the heavy lifting, this is an adequate baseline 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?
The description clearly states the function's purpose: returning the allowance between owner and spender in raw and decimal form, with a contextual explanation ('how much a approval still lets a third party move'). It is specific about the resource and operation. However, it does not explicitly differentiate from sibling tools like chain_approvals_scan or chain_wallet_approvals, so it doesn't fully separate itself from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other allowance-related tools. It mentions the chains and cost but does not indicate scenarios where this specific call is preferred, nor does it mention alternatives or conditions for choosing another tool. The reader must infer usage from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_approvals_scanRecent ERC-20 approvalsARead-onlyIdempotentInspect
Approval events for one token over a short, bounded window, decoded to owner/spender/amount — the ledger of who just gave someone leave to move their USDC. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/approvals-scan?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&blocks=20.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| blocks | No | window size in blocks (bounded) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| range | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| decimals | No | |
| truncated | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond those: the $0.001 USDC cost per call, supported chains, bounded windows, and byte-identical equivalence to a specific GET endpoint. This is exactly the operational detail an agent needs to safely invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. It includes useful operational details like cost, chains, and an endpoint example. The byte-identical URL is long but serves as a precise, unambiguous example, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations, and fully described parameters, the description covers the remaining essentials: cost, chain list, bounded window, and exact endpoint equivalence. The only notable gap is not explicitly routing the agent away from closely related sibling tools like chain_wallet_approvals.
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 chain, token, and blocks. The description adds an example request and clarifies the decoded output (owner/spender/amount), but it does not materially expand the meaning of the parameters themselves. 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 clearly states a specific action and resource: approving events for one token over a short, bounded window, decoded to owner/spender/amount. The 'who just gave someone leave to move their USDC' phrasing makes the tool's purpose vivid and easily distinguishable from siblings like chain_wallet_approvals, chain_allowance, and chain_transfers_scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use it for recent approval events for a single token, not for wallet-wide approvals or current allowance checks. It does not explicitly name alternatives or state when not to use it, but the 'one token' and 'short, bounded window' constraints make the intended usage reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_balanceNative balance for one addressARead-onlyIdempotentInspect
Native coin balance (wei plus a decimal string) at the latest block, with the chain's symbol so the number cannot be misread as USD. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/balance?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| wei | No | balance in wei |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| balance | No | decimal-formatted native amount |
| chainId | No | |
| chainLabel | No | |
| nativeSymbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false as safe. The description adds value beyond these by disclosing the return format (wei plus a decimal string), the inclusion of the chain symbol to prevent USD misreading, the per-call cost, and its byte-identical behavior to a REST endpoint—detail the annotations do not 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?
Four sentences, each dense with information: result semantics, pricing, supported chains, and endpoint equivalence. No filler or redundancy—every sentence contributes to the agent's ability to use 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?
With an output schema present, return values need no elaboration. The description supplies cost, chain scope, block height semantics, and the exact REST equivalent, which is more than enough context for an agent to invoke this 2-parameter 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?
Input schema coverage is 100%: both chain and address are documented with their expected formats. The description repeats the chain list but adds no new meaning about parameters beyond what the schema already states, 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 opens with a specific verb and resource: 'Native coin balance' for 'one address', further specifying 'at the latest block' and that it returns the chain's symbol. This clearly distinguishes it from siblings like chain_balances (plural) and chain_token_balance, and the supported chains list removes ambiguity.
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 useful context—pricing per call, supported chains, and the byte-identical REST endpoint—but does not explicitly say when to choose this tool over alternatives like chain_balances or chain_token_balance. Usage is implied by the 'one address' and 'native coin' phrasing, but no explicit when-to-use or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_balancesBatch native balancesARead-onlyIdempotentInspect
Up to 25 addresses in one paid call — the shape a portfolio or risk bot actually needs, cheaper than 25 single lookups. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/balances?chain=base&addresses=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x4200000000000000000000000000000000000006.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| addresses | Yes | comma list of up to 25 addresses [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| requested | No | |
| chainLabel | No | |
| nativeSymbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond those annotations: the call is paid, costs $0.001 USDC, supports at most 25 addresses, and is byte-identical to a specific GET endpoint. No contradiction with annotations exists.
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: batching, limit, use case, cost, supported chains, and exact endpoint compatibility are all covered in four short sentences. No sentence is wasted, and the most decision-relevant facts appear 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?
For a two-parameter batch read tool, the description covers everything needed to call it correctly: address limit, required chain selector, eligible chains, cost, and exact request shape. An output schema is present, so return-value documentation is not the description's responsibility.
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 chain and addresses are already documented in the schema. The description mostly repeats the chain list and 25-address limit, though the example URL does illustrate exact comma-separated formatting. This is helpful but not a substantial semantic addition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this is a batch native-balance lookup supporting up to 25 addresses in one call, and the title 'Batch native balances' reinforces the resource. It also distinguishes itself from single lookups by emphasizing batching and lower cost. The byte-identical endpoint reference makes the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool fits—portfolio and risk bot use cases needing many balances at once—and frames it as cheaper than 25 single lookups. It stops short of explicitly naming an exact alternative like chain_balance or stating a threshold for when to use the singular tool, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_blockBlock by number or tagARead-onlyIdempotentInspect
One block header decoded: height, time, author, gas used vs limit, base fee in gwei and transaction count. Readable numbers, not raw hex. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block?chain=base&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| block | No | decoded header |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No |
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 safety profile is covered. The description adds valuable behavioral context: it returns decoded/readable numbers rather than raw hex, includes a specific cost per call ($0.001 USDC), and states it is byte-identical to a REST endpoint. It does not mention pagination or error behavior, but for a single-block read tool this is sufficient.
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 opens with the output fields, then cost, then chains, then the REST equivalence. Every sentence adds information. No filler or repetition of 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?
Given the tool's simplicity (2 params, 1 required, no nested objects) and the presence of an output schema, the description covers the essential context: what the output looks like, cost, supported chains, and the block parameter semantics. It does not explicitly state that the output schema describes the return shape, but the output schema exists and the description's field list aligns with it. A minor gap is not naming sibling tools for alternative lookup methods, but the 'by number or tag' phrasing is enough.
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 both parameters (chain and block) with their allowed values. The description adds the default for block ('latest') and the list of supported chains, but these are also present in the schema. The description does not add significant new meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('decoded'), a resource ('block header'), and the exact output fields (height, time, author, gas used vs limit, base fee in gwei, transaction count). It also distinguishes itself from sibling tools like chain_block_by_hash and chain_block_by_timestamp by clarifying it fetches by number or tag. The title 'Block by number or tag' reinforces the scope.
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 clearly states the supported chains and the block parameter options (number or latest|safe|finalized|earliest|pending), which tells an agent when to use this tool. It does not explicitly name alternatives like chain_block_by_hash or chain_block_by_timestamp, but the 'by number or tag' phrasing implies the distinction. It also mentions the cost and the byte-identical REST endpoint, which helps an agent decide if this is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_by_hashBlock header by hashARead-onlyIdempotentInspect
The same decoded header /chain/block gives, addressed by hash instead of height — which is what a receipt, a log or a reorg report actually hands you. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-by-hash?chain=base&blockHash=0x1c2e3a….
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blockHash | Yes | block hash, 0x + 64 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| block | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| requestedHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description adds value beyond them by disclosing the $0.001 USDC cost, the supported chains, and byte-identical equivalence to the height-based endpoint. This gives the agent practical expectations about cost and response consistency. It does not cover error cases or rate limits, but those are less critical for a simple read-only lookup.
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 deliver purpose, usage context, cost, supported chains, and endpoint equivalence with no filler. The most important distinguishing information is front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with a full output schema, the description covers everything an agent needs: what it returns, how it differs from the height-based sibling, which chains are supported, and the cost. No critical operational detail 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 both chain and blockHash already documented. The description adds a concrete URL example and explains that blockHash is the key from receipts/logs/reorg reports, which slightly reinforces parameter meaning. However, it does not substantially expand beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the same decoded block header as /chain/block but addressed by hash rather than height. This directly distinguishes it from chain_block and other block-related siblings. The resource and lookup key are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly identifies when to use this tool: when a receipt, log, or reorg report provides a block hash. It also contrasts with height-based lookup via '/chain/block', giving both a when and a when-not. The byte-identical note reinforces that the only difference is the addressing mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_by_timestampWhich block was mined at a timeARead-onlyIdempotentInspect
Binary-searches the header timestamps for the first block at or after a unix time — every 'what was the supply / who held what on that date' question starts here, and no public node offers the lookup. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-by-timestamp?chain=base×tamp=1758000000.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| timestamp | Yes | unix seconds to locate a block at [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| hash | No | |
| head | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| probes | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| isoTime | No | |
| chainLabel | No | |
| blockNumber | No | |
| blockTimestamp | No | |
| requestedTimestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds genuinely new behavioral context beyond annotations: the $0.001 USDC per-call cost, the binary-search algorithm, the at-or-after boundary semantics, and the byte-identical REST endpoint equivalence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler: algorithm/purpose, cost, and chains + endpoint identity. The core semantics are front-loaded and every sentence carries operational value for the agent.
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-param read-only tool with a full output schema and safety annotations, everything an agent needs is present: purpose, semantics, cost, supported chains, and endpoint reference. Return-value explanation is unnecessary given the output schema, and openWorldHint covers auth expectations.
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% — both chain (with the full chain list) and timestamp (unix seconds) are already documented in the schema. The description's example URL (chain=base×tamp=1758000000) adds a concrete worked instance, but it mostly confirms rather than extends the schema, so the 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 ('Binary-searches the header timestamps for the first block at or after a unix time') with precise matching semantics. This clearly differentiates it from siblings like chain_block_by_hash (lookup by hash), chain_block_number (latest block), and chain_block (by number).
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 concrete when-to-use: "every 'what was the supply / who held what on that date' question starts here," plus a differentiator ('no public node offers the lookup'). However, it never names sibling alternatives or states when not to use it, so the exclusion guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_numberCurrent block heightARead-onlyIdempotentInspect
Latest block number for one chain straight from a public node — the cheapest possible 'is the chain alive and where is it' check. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-number?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| blockNumber | No | latest block height |
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 description need not repeat safety. It adds useful behavioral context: data comes from a public node, the call costs a fixed amount, and the response is byte-identical to a REST endpoint.
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 compact sentences, each earning its place: the purpose and liveness use case, the cost, and the supported chains plus REST equivalence. It is front-loaded and has 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?
For a one-parameter read-only tool with an output schema and strong annotations, this is complete. The agent knows what the tool does, when to choose it, how much it costs, which chains are supported, and how it maps to a REST 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 coverage is 100%, so the schema already fully documents the single required chain parameter. The description adds value by listing the supported chain keys in prose and restating that exactly one chain is queried, but this mostly duplicates the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the latest block number for one chain. It also distinguishes itself from the many chain_* siblings by framing it as the cheapest liveness/height check and noting it is byte-identical to a specific GET endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: as a cheap 'is the chain alive and where is it' check, with a concrete $0.001 USDC cost. It does not name alternative tools to prefer for deeper block data, but the 'one chain' and 'cheapest possible' framing gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_receiptsEvery receipt in one blockARead-onlyIdempotentInspect
eth_getBlockReceipts in a single paid call: per-transaction gas, status and log count, plus where the block's total fees went — instead of one receipt read per transaction. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-receipts?chain=base&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| cap | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| truncated | No | |
| chainLabel | No | |
| blockNumber | No | |
| failedCount | No | |
| feesPaidWei | No | |
| successCount | No | |
| totalGasUsed | No | |
| uniqueSenders | No | |
| aggregatedOver | No | |
| feesPaidNative | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. The description adds valuable behavioral details beyond annotations: the call costs $0.001 USDC, supported chains are enumerated, and it is byte-identical to a specific REST endpoint, giving agents information about cost, compatibility, and network coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that packs purpose, cost, supported chains, and the alternative method without redundancy. It's slightly long but every clause earns its place, and the core purpose is front-loaded before supporting details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return structure is covered. The description completes the picture with cost, chain list, and equivalence to the REST call. Nothing essential for correct invocation is missing, though error handling or rate limits are not mentioned (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?
The input schema already provides complete descriptions for both 'block' and 'chain' (100% coverage). The description adds no extra parameter semantics—it doesn't explain parameter formats, defaults, or constraints beyond what the schema documents. Baseline 3 is appropriate when schema covers parameters fully.
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 the specific verb 'eth_getBlockReceipts' on the resource 'block receipts', lists the exact data returned (per-transaction gas, status, log count, fee distribution), and explicitly contrasts with per-transaction reads, making it unmistakable what this tool does and how it differs from 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?
The description clearly implies when to use this tool—when you need all receipts for a block rather than one at a time—and gives the equivalent REST endpoint for reference. It doesn't name the sibling tool 'chain_receipt' explicitly, but the contrast 'instead of one receipt read per transaction' is a strong usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_seriesA short run of block headersARead-onlyIdempotentInspect
Height, timestamp, transaction count, gas used and base fee for up to 25 consecutive blocks — the series itself, so a caller can plot throughput or fee pressure instead of taking our word for the average. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-series?chain=base&blocks=20.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blocks | No | how many blocks, newest first (max 25) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| window | No | |
| chainId | No | |
| chainLabel | No | |
| secondsPerBlock | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful context beyond those: the $0.001 cost, the supported chain list, the block cap, and byte-identical equivalence to the REST endpoint. No contradiction 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?
Each sentence earns its place: fields and purpose, cost, supported chains, and REST equivalence. It is compact, front-loaded with the most decision-relevant information, and contains 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?
For a simple read-only tool with a full output schema and clear annotations, the description is nearly complete. The only minor gap is that it does not explicitly contrast itself with single-block or stats tools, but an agent can infer this from the raw-series framing.
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 baseline is 3. The description reinforces the chain list and the 'up to 25' cap, but it does not add new semantic details beyond the schema, such as how to format the blocks value as a string.
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 exactly what is returned — height, timestamp, transaction count, gas used, and base fee for up to 25 consecutive blocks — and frames it as 'the series itself.' It also ties the tool to a concrete GET endpoint, making it easy to distinguish from single-block or aggregate-stat 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 a clear use case: callers who want to plot throughput or fee pressure from raw series data rather than rely on an average. Supported chains and cost are stated, but it does not explicitly name alternatives like chain_block or chain_block_stats, so the guidance is strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_statsMeasured block cadenceARead-onlyIdempotentInspect
Seconds per block and blocks per hour, taken from the timestamps of two real headers at the edges of a window — one stalled block shows as a wider span instead of being smoothed away. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-stats?chain=base&blocks=20.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blocks | No | window size in blocks (bounded) (default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| head | No | |
| note | No | |
| chain | No | |
| edges | No | |
| label | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| toBlock | No | |
| fromBlock | No | |
| chainLabel | No | |
| spanSeconds | No | |
| windowBlocks | No | |
| blocksPerHour | No | |
| secondsPerBlock | No |
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 valuable non-obvious behavior: it uses two real header timestamps, does not smooth stalls, charges $0.001 USDC per call, and is byte-identical to a REST endpoint. No contradiction 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 compact and well-ordered: metric first, then the key behavioral differentiator, cost, supported chains, and REST equivalence. Every sentence earns its place and there is no filler or redundant schema 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?
Given the output schema exists and annotations cover safety/idempotency, the description is complete enough for an agent to call the tool correctly: it names required chain values, default window parameter, cost, and REST endpoint behavior. The only minor gap, exact bounds for 'blocks', is already disclosed as 'bounded' in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description mostly restates the chain list and window concept already present in the schema; the REST query example ('chain=base&blocks=20') is mildly useful but does not add new parameter constraints or format details 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 metric ('Seconds per block and blocks per hour') and the exact method ('timestamps of two real headers at the edges of a window'), which clearly identifies the resource as a raw block-cadence measurement. It also distinguishes itself from smoothed alternatives by noting that a stalled block widens the span rather than being averaged away, helping an agent separate it from siblings like chain_block_series.
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 concrete operational context: supported chains, cost per call, and byte-identical REST endpoint equivalence, which makes invocation expectations clear. It does not explicitly name alternatives or state when not to use this tool, though the 'instead of being smoothed away' clause implies a preference for raw cadence measurements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_block_txidsTransaction hashes in a blockARead-onlyIdempotentInspect
Every transaction hash in one block plus the count — the step between 'which block' and 'which transfers happened', without pulling full receipts. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/block-txids?chain=base&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| truncated | No | |
| chainLabel | No | |
| blockNumber | No | |
| transactionHashes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to restate safety. It adds valuable behavioral context by disclosing the $0.001 USDC cost, supported chains, and exact byte-identical REST endpoint equivalence.
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 tightly written, front-loading the core purpose, then adding cost, supported chains, and endpoint equivalence. Every sentence earns its place without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with a rich output schema and full parameter coverage, the description covers all needed context: result shape, cost, chain scope, and relationship to receipt-heavy alternatives. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents chain and block well. The description adds no additional parameter-level semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: every transaction hash in one block plus a count. It also differentiates itself from heavier alternatives by explicitly saying it does so 'without pulling full receipts,' which separates it from siblings like chain_block_receipts.
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 useful context for when to use this tool: it is the intermediate step between locating a block and seeing actual transfers, and it avoids pulling full receipts. It does not name a specific sibling alternative, but the receipts reference clearly signals the trade-off against receipt-level tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_bytecode_capabilitiesWhich functions this code carriesARead-onlyIdempotentInspect
Scans deployed bytecode for 4-byte selectors we can name from a derived table: what this contract can be asked to do, read off the code rather than trusted from a README. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/bytecode-capabilities?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&count=8.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| count | No | how many named selectors to list (max 60) (default 40) | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| named | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| hasCode | No | |
| chainLabel | No | |
| namedCount | No | |
| bytecodeSize | No | |
| push4Candidates | No | |
| unnamedSelectorCount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the tool is clearly a safe, read-only, idempotent operation. The description adds useful context about cost ($0.001 per call) and that results are derived from code rather than assumed, which goes beyond the annotations. However, it doesn't detail response structure or error behavior, but that is partially covered by the 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?
The description is concise, with three sentences covering purpose, pricing, and chain list. It is front-loaded with the main purpose. The mention of a byte-identical GET endpoint is useful for debugging but adds a bit of extra length. Overall, every sentence earns its place, though it could be slightly 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?
The description is complete for an agent to call the tool correctly: it explains what it does, costs, supported chains, and parameter defaults. The output schema is present, so return values are documented elsewhere. Cost and the difference from trusting a README are not in the schema or annotations, making the description cover the needed context.
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 parameters. The description adds context like the default count (40) and max (60) for the count parameter, which is helpful but not critical. The chain parameter's supported values are listed both in the schema description and the tool description, so the description adds limited extra value. 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 clearly states it scans deployed bytecode for 4-byte selectors and identifies named functions. It distinguishes from siblings like chain_bytecode_fingerprint by focusing on function discovery rather than fingerprinting. However, the phrasing 'which functions this code carries' is somewhat colloquial and could be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to know what functions a contract supports by reading on-chain code, not trusting documentation. It mentions pricing and supported chains, which helps decide when to use it. However, it does not explicitly state when NOT to use it or mention any alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_bytecode_fingerprintFingerprint a contract's codeARead-onlyIdempotentInspect
SHA-256 of the deployed bytecode plus its size and edges — two addresses with the same fingerprint are the same compiled contract, which is how a clone of a known scam shows up before you interact with it. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/bytecode-fingerprint?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| prefix | No | |
| reason | No | |
| sha256 | No | |
| source | No | |
| suffix | No | |
| address | No | |
| chainId | No | |
| hasCode | No | |
| chainLabel | No | |
| bytecodeSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the $0.001 USDC cost, the list of supported chains, and the fact that it is byte-identical to a specific GET endpoint. This goes beyond annotation coverage and gives the agent practical operational knowledge. No contradiction 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 compact yet information-dense: definition, use case, cost, chains, and API equivalence all in a few sentences. The first sentence front-loads the core concept (fingerprint), and every clause serves a purpose. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return format is handled externally. Annotations cover safety and idempotence. The description covers use case, cost, supported chains, and a REST equivalence reference. An agent has everything needed to decide when to use this tool and how to invoke it correctly. Complete within its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (chain lists allowed values, address specifies 0x + 40 hex). The description reinforces the chain list and provides a concrete example address in the URL, but adds little semantic nuance beyond the schema. Baseline 3 is appropriate since the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (fingerprint) and resource (contract's bytecode), and defines exactly what the tool computes: SHA-256 of deployed bytecode plus size and edges. It explicitly explains the semantic meaning (same fingerprint = same compiled contract) and the use case (detecting clones of known scams), distinguishing it from sibling tools like chain_code, chain_code_at, and chain_bytecode_capabilities. The purpose is unmistakable.
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 a concrete usage scenario: detecting clones of known scams before interaction. It also provides operational constraints (cost per call, supported chains) and references a REST endpoint equivalence. It does not explicitly state when NOT to use it or compare with alternative tools, which would have made it a 5, but the context clearly implies its intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_callRead-only contract callARead-onlyIdempotentInspect
eth_call with your own calldata against one pinned public node: raw return data plus its decoded uint/address forms. The escape hatch for any view function we did not wrap. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/call?chain=base&to=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&data=0x95d89b41&blockTag=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | contract address to call [required] | |
| data | Yes | hex calldata, even digits, max 4096 bytes [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blockTag | No | block number or latest|safe|finalized|earliest|pending (default "latest") |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| asUint | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| asString | No | |
| blockTag | No | |
| reverted | No | |
| asAddress | No | |
| chainLabel | No | |
| returnData | No | |
| returnSize | No | |
| returnedNoData | No |
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 safety profile is covered. The description adds valuable behavioral context beyond annotations: it returns raw data plus decoded uint/address forms, costs $0.001 USDC per call, and is pinned to one public node. It does not mention rate limits or failure modes, but the added cost and return-format context justify 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 compact and front-loaded: it states the core operation, the escape-hatch role, the cost, supported chains, and even a byte-identical REST example in three sentences. Every sentence earns its place, and the most important selection-relevant info (escape hatch, cost, chains) appears early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (raw calldata, multiple chains, cost, output schema present), the description covers the essential selection and invocation context: what it does, when to use it, what it costs, and which chains it supports. The output schema exists, so return values need not be described. Minor gaps like rate limits or node behavior are not critical for a read-only, idempotent 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%, so the schema already documents all four parameters. The description adds context about calldata being hex and the max size (4096 bytes) which is also in the schema, and it names the chains. It doesn't add much beyond the schema, but the 'raw return data plus decoded forms' hint helps an agent understand what the data parameter produces. 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: 'eth_call with your own calldata against one pinned public node.' It clearly distinguishes itself as 'the escape hatch for any view function we did not wrap,' which differentiates it from the many chain_* sibling tools that wrap specific view functions. The title 'Read-only contract call' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames this as the fallback for any view function not wrapped by a dedicated tool, which tells an agent when to use it versus the many chain_* siblings. It also lists supported chains and the exact cost, giving clear context for selection. The byte-identical REST equivalence further clarifies the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_client_versionWhich client answers this chainARead-onlyIdempotentInspect
web3_clientVersion for the node that served the call — the build string is how you tell reth from erigon from a proxy that is silently serving a different chain. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/client-version?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| answeredBy | No | host that replied |
| chainLabel | No | |
| clientVersion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior. The description adds useful behavioral information: per-call cost, supported chain list, and byte-identical equivalence to a REST endpoint. No contradiction 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?
Four short sentences, each purposeful: purpose and rationale, cost, supported chains, and REST equivalence. No filler or redundant detail.
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 tool with an output schema and clear annotations, the description covers purpose, cost, supported chains, and REST equivalence. 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?
The schema already fully describes the single chain parameter with the same chain list. The description repeats the supported chains and shows the REST equivalent but adds minimal semantic value 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?
States explicitly that it returns web3_clientVersion for the node that served the call and explains the build string distinguishes reth, erigon, and proxies. This is a specific verb+resource and clearly sets it apart from the many chain_* 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 clear context: use this to identify which client/implementation actually served the call, especially to detect a proxy serving a different chain. It also lists supported chains and cost, but does not explicitly name alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_codeIs this address a contract?ARead-onlyIdempotentInspect
eth_getCode size check: bytecode length plus whether the address is a contract at all — the two-second answer to 'did I just send funds to an EOA'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/code?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| chainLabel | No | |
| codePrefix | No | |
| isContract | No | |
| bytecodeSize | No | bytes of deployed code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond those hints by specifying the eth_getCode size-check mechanism, per-call cost, supported chains, and REST equivalence, without contradicting any 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?
The description is compact and front-loads the core purpose before cost and chain support. The byte-identical REST reference is mildly extra but useful and does not bloat the 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 simple two-parameter, read-only tool with an output schema, the description covers the essential context: what it checks, when to use it, cost, and supported chains. It does not describe alternatives or edge cases, but those are not critical given the schema and 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%, so the baseline is 3. The description largely reiterates what the schema already provides (chain keys and address format) with the example URL, adding little new meaning beyond an illustrative concrete 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 clearly states the tool's function: an eth_getCode size check that reports bytecode length and whether an address is a contract, aimed at answering 'did I just send funds to an EOA'. This is specific and actionable, but it does not explicitly differentiate itself from closely named siblings like chain_code_at or chain_contract_check.
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 a clear use case: 'the two-second answer to did I just send funds to an EOA'. It does not explicitly mention when not to use this tool or which sibling to prefer, so it falls 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.
chain_code_atWas this a contract at that block?ARead-onlyIdempotentInspect
eth_getCode at a historical block, compared against today: bytecode present then, size at both points, and whether the code changed since. The check for 'what did this address look like when I traded'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/code-at?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| block | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| chainLabel | No | |
| codePrefix | No | |
| blockNumber | No | |
| bytecodeSize | No | |
| changedSince | No | |
| isContractNow | No | |
| existedAtBlock | No | |
| latestBytecodeSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld, and non-destructive. The description adds valuable non-obvious behavior: the $0.001 USDC cost per call, supported chains, comparison-to-today semantics, and the byte-identical REST endpoint. This goes beyond what annotations alone provide.
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: function first, then use case, cost, chains, and REST mapping. Every sentence earns its place, and there is no redundancy with the structured 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?
Given an output schema exists and annotations fully cover the safety profile, the description supplies everything needed for correct selection and invocation: purpose, cost, supported chains, parameter format via example, and exact REST behavior. No critical practical detail appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the historical-block meaning and provides a concrete example query, but it does not add meaningful per-parameter semantics beyond what 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?
The description states a precise function: historical eth_getCode compared against today, and explicitly lists the outputs (bytecode present then, size at both points, change flag). This clearly distinguishes it from sibling tools like chain_code (current code) or chain_contract_diff.
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 a concrete use case: 'what did this address look like when I traded', which tells an agent when this historical comparison is appropriate. It does not name sibling alternatives or state when not to use it, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_contract_checkContract fingerprint before you interactARead-onlyIdempotentInspect
Bytecode size plus every supported-interface answer in one call — the pre-flight that tells an agent whether a 'token' address is a contract at all and which standards it claims. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/contract-check?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | contract to fingerprint [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| supports | No | |
| chainLabel | No | |
| codePrefix | No | |
| isContract | No | |
| bytecodeSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds per-call cost of $0.001 USDC, the supported chain set, and byte-identical equivalence to a REST GET endpoint with a worked example. It does not describe behavior for non-contract addresses, but the output schema exists and there is no contradiction with 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?
Three sentences, front-loaded with the core value proposition before cost, chains, and REST equivalence. No filler; the endpoint example is compact and informative rather than redundant. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Between the output schema, the annotations, and the description's cost/chain/endpoint details, nothing needed to call the tool correctly is missing. It would be marginally improved by naming exactly which interface standards are covered, but the phrase 'supported-interface answer' and the output schema cover that territory.
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%: chain already lists all supported keys and address is described as 'contract to fingerprint'. The description's only extra parameter signal is the example URL showing chain=base and a 0x-prefixed address, which does not substantially change how an agent would populate the fields. Baseline of 3 is appropriate when the schema already carries the parameter documentation.
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 concrete deliverable — bytecode size plus supported-interface answers — and frames it as a pre-flight check for whether an address is a contract and which standards it claims. This differentiates it from sibling tools like chain_bytecode_fingerprint, chain_bytecode_capabilities, and chain_token_meta by emphasizing a combined one-call fingerprint. The verb 'check' is generic, but the resource and outcome are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to reach for it: before interacting with a token address, as a pre-flight. The 'one call' framing and the cost/chain details give clear context for use. It does not name alternatives or exclusion criteria, leaving the agent to infer the boundary against chain_bytecode_fingerprint and chain_bytecode_capabilities, but the guidance is still strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_contract_diffSame contract, two addresses?ARead-onlyIdempotentInspect
Bytecode fingerprints of two addresses compared: size, SHA-256 and prefix/suffix equality — the question behind 'is this new token a redeploy of the one that ruggened last week'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/contract-diff?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&other=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| other | Yes | second address to compare against [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| a | No | |
| b | No | |
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| sameSize | No | |
| chainLabel | No | |
| bothHaveCode | No | |
| identicalBytecode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, non-destructive, idempotent, and open-world. The description adds useful behavioral detail beyond that: the exact comparison method (size, SHA-256, prefix/suffix equality), the cost of $0.001 USDC per call, supported chains, and that it is byte-identical to a specific GET endpoint.
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 states the core behavior first, adds a memorable use case, then lists cost, chains, and endpoint equivalence. Every sentence adds relevant decision or invocation information without unnecessary 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 simple three-parameter read-only tool with a full input schema and output schema, the description covers what it does, why it is useful, cost, supported chains, and an exact REST equivalent. No critical information for invoking the tool 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 structured schema already documents chain, address, and other. The description reinforces that the two addresses are compared bytecode-level and provides a concrete example URL, but it adds little substantive parameter meaning 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 uses a specific verb and resource: comparing bytecode fingerprints (size, SHA-256, and prefix/suffix equality) of two addresses. It also grounds the purpose in a concrete question—detecting whether a new token is a redeploy of a previously rugged one—making it clear and distinct from related chain_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear intended use case: checking if a contract at one address is a redeploy of another known contract. It does not explicitly name alternatives or exclusion criteria, but the context is strong enough to guide an agent toward this tool for contract-diff comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_contract_ownerWho controls this contractARead-onlyIdempotentInspect
owner() decoded, plus whether the same address answers owner() as a storage read — the single field that decides who can pause, mint or upgrade the thing you are about to interact with. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/contract-owner?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| hasCode | No | |
| readable | No | |
| chainLabel | No | |
| bytecodeSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive. The description adds beyond them: cost per call, supported chains, and the fact that it compares a function call with a storage read. No contradictions 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?
Three sentences, all essential: what it returns, why it matters, then cost/chains/API equivalence. Front-loaded with the core behavior and 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?
The tool has an output schema sufficient for return values, annotations cover the safety profile, and the description supplies operational details (cost, chains, byte-identical endpoint). 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 coverage is 100% and both parameters are already described. The description repeats the chain list but adds no meaning beyond the schema, so it meets the baseline 3 without extra compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool decodes owner() and checks whether the same address answers as a storage read, then explains why that matters (who can pause, mint, upgrade). This is specific and easily distinguished from sibling chain_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context by telling the agent the owner field decides who can pause/mint/upgrade, which signals when to use it. However, it does not explicitly name alternatives or define when not to use it, 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.
chain_fee_dataFull EIP-1559 fee quoteARead-onlyIdempotentInspect
gasPrice, base fee, priority fee and the all-in cost of a 21000-gwei native transfer in wei and native units — what sending costs right now, on one chain. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/fee-data?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| baseFeeGwei | No | |
| blockNumber | No | |
| gasPriceGwei | No | |
| nativeSymbol | No | |
| maxPriorityFeeGwei | No | |
| nativeTransferCost | No |
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 safety profile is covered. The description adds valuable behavioral context beyond annotations: the exact fee components returned, the 21000-gwei transfer assumption, the per-call cost, and the byte-identical equivalence to a specific REST endpoint. It also discloses the chain list. The only minor gap is not describing the output schema structure, but an output schema exists, so that burden is reduced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines the output and scope, the second gives the cost, the third lists chains and the REST equivalence. The most decision-relevant information (what it returns, cost, chains) is front-loaded. No filler or repetition of schema content.
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 a full output schema, the description is complete. It tells the agent what the tool returns, which chains are valid, what the call costs, and that it matches a known REST endpoint. The annotations cover safety, and the output schema covers return structure. Nothing an agent needs to decide whether to call this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'chain' is already described in the schema with the allowed values. The description adds value by listing the supported chains again in prose and by clarifying that the quote is for 'one chain' at a time. With only one parameter and full schema coverage, the description doesn't need to do much more; the baseline 3 is exceeded slightly because the description reinforces the chain-key semantics and the per-chain scope.
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 ('get' implied via 'what sending costs right now'), a clear resource (EIP-1559 fee quote), and enumerates the exact fields returned (gasPrice, base fee, priority fee, all-in cost of a 21000-gwei transfer in wei and native units). It also names the supported chains, which distinguishes it from generic fee tools. The title 'Full EIP-1559 fee quote' reinforces the resource. This is clearly differentiated from siblings like chain_fee_history and gas_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need current EIP-1559 fee components and the all-in cost of a standard transfer on a specific chain. It names the supported chains and notes the cost per call ($0.001 USDC), which is a practical usage consideration. However, it doesn't explicitly state when NOT to use it or name alternatives like chain_fee_history or gas_prices, so it misses the explicit exclusion/alternative guidance that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_fee_historyBase-fee and priority-fee trendARead-onlyIdempotentInspect
eth_feeHistory over a bounded window: base fee at every block plus the 25/50/75 priority-fee percentiles. Whether gas is RISING is not answerable from one instantaneous quote, which is what /chain/fee-data gives. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/fee-history?chain=base&blocks=20.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blocks | No | window size in blocks (bounded) (default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| head | No | |
| note | No | |
| chain | No | |
| label | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| trendPct | No | |
| chainLabel | No | |
| baseFeeGwei | No | |
| oldestBlock | No | |
| gasUsedRatio | No | |
| blocksCovered | No | |
| priorityFeeGwei | No | |
| perBlockBaseFeeGwei | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds the cost of $0.001 USDC per call and notes byte-identical equivalence to a specific REST endpoint, which are behavioral traits beyond the annotations. It does not cover rate limits or pagination, but for a read-only tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence adds value: functionality, limitation, cost, supported chains, and REST equivalence. It is front-loaded with the primary purpose, and the structure is logical. It could be trimmed slightly but remains efficient and informative.
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 existence of an output schema and annotations covering safety, the description provides sufficient context: purpose, when to use vs. alternative, cost, chain support, and a concrete REST equivalent. No critical information is missing for an agent to correctly invoke this 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 both chain and blocks parameters, each with clear descriptions. The description does not add any parameter-specific details beyond what the schema already provides, such as syntax or format. With full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves eth_feeHistory over a bounded window, detailing the exact data (base fee plus 25/50/75 priority-fee percentiles). It also differentiates from the sibling chain_fee_data by explicitly stating that a single instantaneous quote cannot answer whether gas is rising, making its purpose unambiguous and distinct.
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 contrasts with /chain/fee-data (instantaneous quote) and explains that this tool is needed to assess fee trends over multiple blocks. It also lists supported chains and a REST equivalent, but it does not name other potential alternatives like chain_gas_estimate or gas_prices, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_gas_estimateEstimate gas for a callARead-onlyIdempotentInspect
eth_estimateGas for a transfer or contract call you describe — the exact simulation a wallet runs before signing, without needing a wallet. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/gas-estimate?chain=base&to=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&from=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&data=0x95d89b41&value=0.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | contract address to call [required] | |
| data | No | hex calldata (default "0x") | |
| from | No | simulation caller address | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| value | No | native value in wei (decimal) (default 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| estimable | No | |
| chainLabel | No | |
| atSenderGas | No | |
| gasEstimate | No | |
| gasPriceGwei | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it read-only and idempotent, so no contradiction. The description adds pricing information and the exact HTTP endpoint for cross-referencing, but does not clarify that it performs a simulation without state changes or that the result is a gas estimate in wei. It adds some value beyond annotations but could be more explicit about the non-persistent nature.
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-loads the core purpose, followed by pricing, chains, and an example. It is efficient with no fluff, though the example URL is lengthy and might be unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and an output schema, the description covers the main use case but lacks details on edge cases (e.g., what if 'from' is omitted, how the estimate is interpreted, or whether it supports token transfers beyond native value). It is adequate for basic usage but not comprehensive for complex contract interactions.
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 each parameter. The description adds context that the 'to' parameter is a contract address and that 'data' is hex calldata, but this is also in the schema. It does not clarify the default for 'from' (e.g., zero address) or the format of the returned estimate, so the description adds limited extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: estimating gas for a transfer or contract call, with specific reference to eth_estimateGas. It distinguishes itself from siblings like chain_call and chain_fee_data by focusing on gas estimation for a call the agent describes, without needing a wallet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides enough context for when to use it: when you need to estimate gas for a specific transaction before signing. It also lists supported chains and mentions pricing, but does not explicitly say when NOT to use it or suggest alternatives like chain_fee_data for general fee info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_headsLive head across chainsARead-onlyIdempotentInspect
Latest block, its age in seconds, base fee and block fullness for up to 4 chains in one paid call — the fastest answer to 'which of these chains is actually caught up right now'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/heads?chains=base,ethereum.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No | comma list, up to 4: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche (default ["base"]) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | one entry per chain |
| chain | No | |
| stale | No | |
| caveat | No | |
| chains | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| observedAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description is free to add non-safety traits. It discloses the cost ($0.001 USDC per call) and the byte-identical endpoint equivalence, both valuable for the agent. No contradictions with annotations; no side effects need mentioning since it's read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The core output is front-loaded ('Latest block... block fullness'), followed by the use case, cost, supported chains, and API equivalence. Every clause contributes value, making it highly efficient for an agent to parse.
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 an output schema, the description covers what it returns, cost, supported chains, and exact API mapping. It doesn't mention error handling or rate limits, but those are minor for such a simple call. The presence of an output schema covers return 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?
The input schema already provides 100% coverage of the 'chains' parameter (comma list, up to 4, allowed values, default). The description merely repeats this list and limit without adding new meaning like formatting examples or edge-case behavior. Baseline 3 is appropriate given high schema 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?
The description precisely states the resource ('Latest block, its age in seconds, base fee and block fullness') and scope ('for up to 4 chains'), making it distinct from sibling tools like chain_block or chain_fee_data. It even frames the use case ('fastest answer to which chain is caught up'), so an agent can immediately tell this is a multi-chain head-status aggregator.
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 situational trigger ('fastest answer to which of these chains is actually caught up right now') and mentions the paid nature, but does not explicitly name alternatives or state when NOT to use it. The specific use case effectively separates it from other chain_* tools, though a direct comparison would strengthen it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_logsEvent logs for an address or topicARead-onlyIdempotentInspect
eth_getLogs over a bounded window (max 1000 blocks) with an address and/or first topic — transfers and events without running an indexer. Refuses an unfiltered scan. Walks the window in chunks because a free node refuses a big one on response size, and reports any range no node would serve instead of failing a settled call. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/logs?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef&fromBlock=5000&toBlock=5999.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| topic0 | No | first event topic, 0x + 64 hex | |
| address | No | contract that emitted the events | |
| toBlock | No | last block number (default: current head); range capped at 1000 blocks | |
| fromBlock | Yes | first block number to scan (inclusive) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| range | No | |
| stale | No | |
| caveat | No | |
| chunks | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| nodeCalls | No | |
| truncated | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses chunked window walking, response-size-related refusals, reporting ranges no node would serve instead of failing a settled call, per-call cost, and supported chains. This gives the agent a detailed expectation of execution behavior and error handling.
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 dense sentences plus a concrete REST example with no filler. The core operation is front-loaded before cost, chains, and the example, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Between the annotations, schema, output schema, and this description, an agent knows parameters, filters, block cap, chain support, cost, and failure behavior. The description does not need to explain return values because an 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 coverage is 100%, so the schema already documents all five parameters. The description adds value by clarifying the 1000-block cap, the address/topic filtering requirement, and the toBlock default behavior, which goes beyond baseline but stops short of per-parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'eth_getLogs over a bounded window (max 1000 blocks) with an address and/or first topic — transfers and events without running an indexer', giving a definite verb, resource, and access mechanism. This clearly separates it from sibling chain block/transaction tools, and the title reinforces the address/topic focus.
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 intended filter conditions (address and/or topic), the block-window constraint, supported chains, and warns that unfiltered scans are refused, so an agent knows when it fits a request. It does not explicitly name a sibling alternative, but the context is clear enough for bounded log queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_multicallUp to 10 contract reads, one paymentARead-onlyIdempotentInspect
Batched eth_call: ten (target, calldata) pairs settled once, each answered independently so one reverting view cannot fail the rest. A tenth of the per-call cost of doing them one at a time. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/multicall?chain=base&calls=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913:0x95d89b41,0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913:0x18160ddd&blockTag=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | up to 10 pairs, formatted 0xTo:0xCalldata,comma separated [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blockTag | No | block number or latest|safe|finalized|earliest|pending (default "latest") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| answered | No | |
| blockTag | No | |
| requested | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses partial-failure semantics ('one reverting view cannot fail the rest'), per-call pricing, supported chains, and byte-identical REST equivalence. This is exactly the behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but efficient: core operation first, then failure semantics, cost, supported chains, and a concrete example. 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?
For a read-only batch tool with full schema coverage, rich annotations, and an output schema, the description covers selection, invocation format, cost, and edge-case behavior. Nothing essential 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 a concrete URL example showing exact call formatting (0xTo:0xCalldata, comma-separated) and blockTag usage, which reinforces the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: batched eth_call over up to ten (target, calldata) pairs. The phrase 'each answered independently' and the title's 'contract reads' distinguish it from single-call siblings like chain_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use it: multiple contract reads, with a cost advantage ('A tenth of the per-call cost of doing them one at a time'). It does not explicitly name chain_call or state when not to use it, but the batching and pricing make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_network_idChain ID and network ID agree?ARead-onlyIdempotentInspect
eth_chainId versus net_version for one chain. A mismatch is how a wallet ends up signing Base transactions for Mainnet, so this is a two-call safety check, not trivia. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/network-id?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| agree | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| netVersion | No | |
| expectedChainId | No | |
| matchesOurConfig | No |
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 safety profile is covered. The description adds valuable behavior beyond annotations: it performs two internal calls, costs $0.001 USDC, and explains the real-world consequence of a mismatch. This enriches the behavioral model without contradicting 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 – three sentences that front-load the core purpose, then add cost and chain list. No filler or redundant phrases. It could be slightly tighter (e.g., merging chain list with schema) but is well-structured and easy to scan.
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 an output schema, the description covers the essential context: what it does, cost, supported chains, and an endpoint reference. It doesn't explain the output structure, but that's already provided by the output schema. No critical missing detail for an agent 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% – the single parameter 'chain' is fully described with an explicit list of accepted values. The description repeats that list and adds the example endpoint URL, but does not introduce new syntactic meaning. Since the schema already carries full parameter semantics, a baseline of 3 is appropriate; slight credit for the endpoint mapping, but not enough for a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: comparing eth_chainId and net_version for a given chain. It explains the purpose (safety check against signing on the wrong network) and distinguishes it from other chain_* tools by focusing on ID agreement rather than balances, blocks, or calls. The verb 'check' and resource 'chain ID vs network ID' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context for when to use it ('two-call safety check'), notes the cost, and lists supported chains. It doesn't explicitly name alternatives or say when not to use it, but there are no direct siblings (e.g., no other tool checks chain ID agreement), so the guidance is adequate. The endpoint equivalence adds helpful practical context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_approvedWho may move this one NFTARead-onlyIdempotentInspect
getApproved(tokenId) — the single-operator approval on one id. Non-zero means someone other than the owner can transfer that exact token without owning it. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-approved?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | NFT contract address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| tokenId | No | |
| approved | No | |
| readable | No | |
| chainLabel | No | |
| hasApproval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context beyond those: the $0.001 USDC cost per call, the supported chains, and byte-identical equivalence to a REST GET endpoint. No contradiction 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 compact and front-loaded: purpose, result interpretation, cost, supported chains, and REST equivalence each earn their place. There is no filler or repetition of schema details.
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 single-approval lookup with full schema coverage and an output schema, the description covers the essential context: what the result means, cost, chains, and REST parity. The only minor gap is not explicitly routing the agent away from chain_nft_approved_for_all, but the 'single-operator' phrasing largely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the tokenId parameter through getApproved(tokenId) and provides a concrete example URL, but it does not add substantial semantic meaning beyond what 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?
The description names the exact operation — getApproved(tokenId) — and the resource: the single-operator approval for one specific NFT id. It also distinguishes itself from the sibling chain_nft_approved_for_all by emphasizing 'single-operator' and 'one id', so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: to check whether a single non-owner operator is approved to transfer one exact token. It explains the meaning of a non-zero result, but it does not explicitly state when not to use it or name alternatives such as chain_nft_approved_for_all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_approved_for_allCan this operator move a whole wallet?ARead-onlyIdempotentInspect
isApprovedForAll(owner, operator) — the setApprovalForAll permission behind most NFT drain headlines, answered per pair in one paid call. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-approved-for-all?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&operator=0x0000000000000000000000000000000000000000.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| token | Yes | NFT contract address [required] | |
| operator | Yes | delegate/operator address being tested [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| approved | No | |
| operator | No | |
| readable | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the cost ($0.001 USDC per call), the supported chains, and the byte-identical REST endpoint. It also explains the security relevance (NFT drain headlines), which helps the agent understand the semantic meaning of the result. No contradiction 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 compact and front-loaded with the core function name and security context. The cost and chains are listed efficiently. The byte-identical REST endpoint example is a bit long and arguably redundant, but it provides a concrete reference. Overall, every sentence earns its place, though the endpoint example 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?
The tool has an output schema, so return values are covered elsewhere. The description covers the purpose, cost, chains, and the exact function. It doesn't mention pagination or edge cases, but for a simple boolean check that's acceptable. The only gap is not explicitly stating when to prefer this over chain_nft_approved, but the function name and 'per pair' make it clear enough.
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 four parameters (chain, token, owner, operator). The description adds the function signature isApprovedForAll(owner, operator) and clarifies operator as 'delegate/operator address being tested' in the schema. The description doesn't add much beyond the schema, but the schema is complete. 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 clearly states the tool checks isApprovedForAll(owner, operator), the setApprovalForAll permission behind NFT drain headlines, per pair. It names the exact function and the resource (NFT approval state), and the title reinforces the question. It distinguishes itself from siblings like chain_nft_approved (single token approval) by specifying the setApprovalForAll permission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it answers the setApprovalForAll permission per pair, and mentions chains supported. It doesn't explicitly say when to use this vs chain_nft_approved or chain_approvals_scan, but the phrase 'per pair' and the function name imply the use case. It also notes it's a paid call, which is a usage consideration. Missing explicit exclusions or alternatives, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_balanceERC-721 tokens held by an addressARead-onlyIdempotentInspect
balanceOf(owner) on an NFT contract — how many ids one wallet holds, without indexing every transfer. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-balance?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| token | Yes | NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| raw | No | |
| note | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| balance | No | |
| chainId | No | |
| overflow | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description's burden is reduced. It adds valuable details not in annotations: the $0.001 USDC cost per call and the supported chains. These enrich the agent's understanding of cost and applicability without contradicting any 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?
The description is two sentences long, front-loads the core function, and packs in cost and chain support without fluff. The example URL is somewhat lengthy but serves as a concrete reference. Every sentence adds value, though the example could be trimmed without losing essential info.
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 that an output schema exists (return format is presumably handled there), the description adequately covers the tool's purpose, cost, supported chains, and the nature of the query. For a simple balance check, no critical usage details are missing. The only minor gap is the lack of explicit guidance on when to use this versus sibling NFT tools, but that's covered under usage guidelines.
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 covers all three parameters with descriptions, so the baseline is 3. The description adds the list of valid chain values (base, ethereum, arbitrum, bsc, polygon, optimism, avalanche) that the schema lacks (no enum), and provides a concrete example URL illustrating parameter usage. This meaningfully enhances parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it performs balanceOf(owner) on an NFT contract and returns the count of token IDs held by a wallet. Explicitly differentiates from other NFT tools by noting it avoids indexing every transfer, and the phrase 'how many ids one wallet holds' is precise. The tool name 'chain_nft_balance' is reinforced with concrete semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that it's a balance query and mentions efficiency ('without indexing every transfer'), but does not explicitly name alternative tools or state when to prefer this over siblings like chain_nft_owner or chain_nft_approved. The absence of explicit exclusions or alternative routing leaves some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_metaNFT collection name and standardsARead-onlyIdempotentInspect
name/symbol plus which token standards the contract actually claims (ERC-165, ERC-721, ERC-721Metadata, ERC-1155) via supportsInterface. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-meta?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| chainId | No | |
| supports | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds significant value by stating a per-call cost, listing supported chains, and explaining the mechanism (via supportsInterface). It also mentions it's byte-identical to a specific GET endpoint, which adds operational detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, yet packs in purpose, cost, supported chains, and an exact endpoint reference. Every sentence contributes, and the key information is front-loaded. There is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with only two parameters and an output schema, the description covers the essential aspects: what it returns, cost, chains, and an exact API mapping. It also distinguishes from siblings by describing its specific function. Nothing critical is missing for an agent to decide whether and how to call 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?
The input schema already describes both parameters (chain and token) with 100% coverage. The description adds a concrete example endpoint with a specific token address, which could help agents understand the expected format, but it doesn't add semantic meaning beyond what the schema provides. Thus a 3 is appropriate given the high schema 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?
The description clearly states the tool returns the NFT contract's name, symbol, and the token standards it claims via supportsInterface, specifically listing ERC-165, ERC-721, ERC-721Metadata, and ERC-1155. This distinguishes it from sibling tools like chain_nft_balance or chain_nft_owner, which address different aspects of NFTs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context: it lists supported chains and the cost per call, and gives an exact byte-identical API endpoint. It doesn't explicitly say when to prefer this over alternative tools, but the purpose (metadata and standards) is clear enough to guide selection. It doesn't mention exclusions or alternatives, so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_ownerERC-721 owner of a token idARead-onlyIdempotentInspect
ownerOf(tokenId) resolved for one NFT — proof of who holds a specific id right now, from the contract itself. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-owner?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | NFT contract address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| found | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| tokenId | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable context beyond annotations: it mentions the cost ($0.001 USDC per call), the supported chains, and the byte-identical REST endpoint. It does not discuss error behavior (e.g., if the token doesn't exist), but for a simple read tool this is a minor omission. 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 three concise sentences, each serving a purpose: the first states what the tool does, the second gives the cost, and the third lists chains and the exact endpoint. It is front-loaded with the core purpose and contains no filler or redundant text. This is an exemplar of 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?
Given that the tool has an output schema (not shown but present) and annotations cover safety, the description is fairly complete. It includes the cost, supported chains, and the exact REST endpoint for reference. It doesn't mention potential error cases (e.g., invalid token ID, non-existent NFT) or any rate limits, but for a simple ownership query this is a minor gap. The agent has enough information to call it correctly and understand 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 schema describes all three parameters (chain, token, tokenId) with 100% coverage, so the description doesn't need to add much. The description includes an example URL that implicitly shows the parameter format (chain, token address, tokenId) and the allowed chain values. However, it doesn't add new semantics beyond the schema—it just reinforces what the schema already states. 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 explicitly states 'ownerOf(tokenId) resolved for one NFT — proof of who holds a specific id right now, from the contract itself.' This clearly identifies the operation (resolving owner), the resource (a single NFT token id), and differentiates it from sibling tools like chain_nft_balance or chain_nft_owner_at by emphasizing 'right now' and 'from the contract itself.' The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context such as cost, supported chains, and an exact endpoint reference, but it does not explicitly say when to use this tool over alternatives like chain_nft_owner_at (likely historical ownership) or chain_nft_balance (count of NFTs). The phrase 'right now' implies current state, but there is no direct 'use this for X, use that for Y' guidance. This leaves some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nft_owner_atWho owned an NFT at a blockARead-onlyIdempotentInspect
ownerOf(id) read at a chosen block and again at the head: previous holder, current holder, and whether it moved — the ownership history a sale-attribution or stolen-collection check needs. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-owner-at?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | older block number or tag to compare the current owner against [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| moved | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| tokenId | No | |
| ownerNow | No | |
| readable | No | |
| blockThen | No | |
| ownerThen | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, but the description adds valuable context beyond that: the per-call cost ($0.001 USDC), supported chains, the dual-block read behavior, and the nature of the result (previous/current/moved). It also discloses that the behavior is byte-identical to a specific GET endpoint, which implies no side effects. No contradiction 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 dense and front-loaded with the core function and use case. The second sentence packs cost, chains, and an exact endpoint example. The endpoint example is useful for grounding but adds length; still, it is not wasteful. Overall it earns a high score for efficiency, though the example could be shortened 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?
An output schema exists, so the description is not required to detail return values, yet it still does (previous/current/moved). It covers cost, chain availability, and the dual-read behavior. The inclusion of the exact REST equivalence ensures an agent can predict the result precisely. Nothing needed to invoke the tool 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%, so the baseline is 3. The description's mention of 'block' as 'older block number or tag to compare the current owner against' largely mirrors the schema's own parameter description. It adds little beyond restating the parameters, though the overall description clarifies the intended comparison. No extra semantic meaning beyond the schema is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific technical operation ('ownerOf(id) read at a chosen block and again at the head') and clearly states the outputs: previous holder, current holder, and whether it moved. This unambiguously differentiates it from sibling chain_nft_owner, which presumably returns only the current owner. The inclusion of a concrete REST endpoint equivalence further reinforces what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'the ownership history a sale-attribution or stolen-collection check needs.' It also notes the cost, chains, and exact endpoint, which helps an agent decide when to call it. However, it does not explicitly mention alternatives or state when *not* to use it, 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.
chain_nft_token_uriERC-721 tokenURI for one idARead-onlyIdempotentInspect
The metadata pointer a wallet will follow for a specific id, plus whether it is on-chain JSON or an off-host scheme. The string is returned as text — this endpoint never resolves it. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nft-token-uri?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokenId=1.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | NFT contract address [required] | |
| tokenId | Yes | token id (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| host | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| length | No | |
| reason | No | |
| scheme | No | |
| source | No | |
| chainId | No | |
| tokenId | No | |
| tokenUri | No | |
| chainLabel | No | |
| fetchedByUs | No | |
| isOnChainJson | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, idempotentHint, and destructiveHint, but the description adds critical behavior: the endpoint never resolves the URI, returns the string as text, and costs $0.001 USDC per call. This goes well beyond the annotations and gives the agent essential operational knowledge.
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 tight and information-dense: each sentence delivers a distinct fact (return semantics, non-resolution, cost, chain support, endpoint equivalence). No fluff, and the key behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given schema coverage of 100%, an output schema is present, and annotations cover safety/idempotency, the description supplies all remaining essentials: exact output semantics, cost, supported chains, and a byte-identical reference call. An agent can invoke this correctly without further research.
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 by providing a concrete example URL (chain=base&token=0x...&tokenId=1) that clarifies expected formats for all three parameters, and it enumerates valid chain keys in the description, reinforcing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the metadata pointer (tokenURI) for a specific ERC-721 id and whether it is on-chain JSON or off-host. This distinguishes it from siblings like chain_1155_uri (ERC-1155) and chain_nft_meta by the explicit 'metadata pointer' scope and the title's ERC-721 designation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied—'the metadata pointer a wallet will follow for a specific id'—and the cost and chain list add practical context. However, it does not explicitly differentiate from alternatives like chain_1155_uri or chain_nft_meta, nor state when not to use it. The 'Byte-identical' note compares to an HTTP endpoint, not a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_nonceTransaction count (nonce)ARead-onlyIdempotentInspect
eth_getTransactionCount at any block tag — what an agent needs before it builds a transaction, and how a bot detects a stuck or reused nonce. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/nonce?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&blockTag=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] | |
| blockTag | No | block number or latest|safe|finalized|earliest|pending (default "latest") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| nonce | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| blockTag | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the $0.001 USDC cost, supported chain list, and byte-identical REST endpoint equivalence. No contradictions found.
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 information-dense: it states the core function, the use case, cost, supported chains, and REST equivalence in four tight sentences. No filler or repetition; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage, full annotations, and an output schema, the description covers everything an agent needs: what the tool does, when to use it, cost implications, supported chains, and an equivalent REST endpoint. 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?
Schema description coverage is 100%, so all three parameters (chain, address, blockTag) are fully documented in the schema. The description adds no extra parameter semantics beyond what the schema already states; it lists chains but the schema already enumerates them in the chain description. 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 clearly identifies the tool as eth_getTransactionCount at any block tag, with a specific purpose for transaction building and nonce detection. However, it does not distinguish itself from the sibling tool chain_tx_count, which likely provides the same underlying count; without an explicit differentiator, an agent might not know which one to pick.
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 usage contexts: what an agent needs before building a transaction and how a bot detects a stuck/reused nonce. It does not mention when not to use it or names alternatives (like chain_tx_count), but the clear context is enough to route most agents correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_paused_checkIs this contract paused right nowARead-onlyIdempotentInspect
paused() with the revert and no-data cases kept apart from a false — 'this token has no pause switch' and 'this token is not paused' are different facts to trade on. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/paused-check?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| raw | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| paused | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| readable | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, open-world, and non-destructive. The description adds valuable behavioral detail beyond those hints: the tri-state semantics of revert vs. no-data vs. false, the exact cost of $0.001 USDC per call, supported chains, and byte-identical equivalence to a REST endpoint. This gives the agent a clear model of what the call will and will not tell 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 description is compact and front-loaded with the most important semantic distinction, followed by cost, supported chains, and an exact equivalent endpoint. Every sentence earns its place, and there is no filler or repetition of schema content.
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 a full input schema and output schema, the description is complete. It covers purpose, semantic nuance, cost, chain support, and an exact endpoint equivalent. An agent has everything needed to select and invoke the tool correctly, and the output schema handles return-value expectations.
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 both parameters and their formats. The description repeats the chain list and provides an example address in the endpoint, but adds no new semantic meaning beyond the schema. Baseline 3 is appropriate because the description does not need to compensate for missing parameter documentation.
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 title and description clearly identify the operation: checking whether a contract is paused via paused(). The description goes further by distinguishing three possible outcomes (no pause switch, not paused, reverted), which makes the tool's purpose precise. It does not explicitly differentiate from sibling tools, but no sibling appears to offer the same paused-check semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to know whether a token/contract is paused and care about distinguishing 'no pause switch' from 'not paused'. It does not explicitly state when to prefer this over alternatives such as chain_call or chain_contract_check, nor does it mention any exclusions. The cost and chain list provide practical context but not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_permit_readyDoes this token support gasless permit()ARead-onlyIdempotentInspect
DOMAIN_SEPARATOR() plus the owner's current nonce and whether permit() is in the code — the three inputs a signed-approval relayer needs before it can move funds without the holder paying gas. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/permit-ready?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | address whose permit nonce to read [required] | |
| token | Yes | token / NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| nonce | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| permitReady | No | |
| implementation | No | |
| domainSeparator | No | |
| permitSelectorIn | No | |
| hasPermitSelector | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful context beyond that: the $0.001 USDC cost, supported chains, and the byte-identical REST endpoint. This gives the agent practical operational knowledge not present in 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?
Three dense sentences deliver the core output, use case, cost, chains, and an exact endpoint example. There is no filler or repetition of schema content. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description provides everything else an agent needs: cost, supported chains, and a canonical example. No critical operational detail 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 each parameter has a clear description. The tool description adds a concrete example URL and chain list, but does not materially expand on the schema's parameter meanings. Baseline 3 is appropriate since the schema carries the parameter documentation 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?
The description clearly identifies the tool's output: domain separator, owner nonce, and permit() code presence. It frames these as the three inputs a relayer needs, which distinguishes this tool from generic chain_nonce or chain_code tools. The title reinforces the specific gasless-permit question.
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 a clear use case: a signed-approval relayer checking whether it can move funds without the holder paying gas. It does not explicitly state when not to use this tool or name alternatives, but the context is specific enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_proxy_checkIs it a proxy, and what is behind itARead-onlyIdempotentInspect
The three EIP-1967 slots (implementation, admin, beacon) read next to implementation(): a proxy hides the real code, so bytecode-size checks alone understate what an upgrade can change. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/proxy-check?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| stale | No | |
| beacon | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| hasCode | No | |
| isProxy | No | |
| chainLabel | No | |
| proxyAdmin | No | |
| bytecodeSize | No | |
| eip1967Slots | No | |
| slotMatchesCall | No | |
| implementationFromCall | No | |
| implementationFromSlot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds value beyond annotations by disclosing the cost per call ($0.001 USDC), supported chains, and that it is byte-identical to a specific GET endpoint. It also explains the internal logic (reading EIP-1967 slots next to implementation()), which is useful. No contradiction 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 about three sentences and front-loads the core purpose (EIP-1967 slots) before practical details. It is efficient with no redundant filler, though the 'byte-identical to GET' sentence could be considered extra but is informative. Overall, it is appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, annotations covering safety, an output schema present, and 100% parameter coverage, the description is complete enough. It covers cost, chains, and the rationale for use. It does not detail return format, but that is handled by the output schema. Minor gaps like error handling are not critical for this 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 both parameters, so the baseline is 3. The description adds a concrete example with a real chain and address (base and 0x8335...), which clarifies usage. It also repeats the chain list, reinforcing valid values. This extra context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks if an address is a proxy by reading EIP-1967 slots and identifies what is behind it (implementation). It distinguishes itself from sibling bytecode-checking tools by explaining that bytecode-size checks alone understate upgrade impact. The verb 'read' and resource 'EIP-1967 slots' make the operation specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains why this tool is needed (bytecode-size checks understate what an upgrade can change), implying it should be used when proxy status matters. It lists supported chains and cost, providing practical context. However, it does not explicitly name alternatives or state when not to use it, though the rationale gives clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_receiptReceipt, gas used and confirmationsARead-onlyIdempotentInspect
Status, gasUsed, effective gas price, contract created, log count and live confirmations for one hash — whether a transaction actually landed and what it cost. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/receipt?chain=base&hash=0x55bd09129b86846556030b6036d48c75865b1f8e73ee6f7df60a22a56f3cd0d4.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | transaction hash, 0x + 64 hex [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| ts | No | |
| from | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| status | No | 1 = success |
| chainId | No | |
| costWei | No | |
| gasUsed | No | |
| logCount | No | |
| chainLabel | No | |
| blockNumber | No | |
| confirmations | No | |
| contractAddress | No | |
| transactionHash | No | |
| logsBloomPresent | No | |
| cumulativeGasUsed | No | |
| effectiveGasPriceGwei | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/idempotent/non-destructive behavior, and the description adds cost ($0.001 USDC per call), live confirmations, and exact returned fields such as contract-created and log count. It also gives a byte-identical endpoint reference, making the behavior transparent.
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-loads the core result fields and purpose in the first sentence. The cost and chain enumeration are useful, though the chain list duplicates the schema and the byte-identical example is extra detail.
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 two-parameter lookup with an output schema, the description covers purpose, cost, supported chains, and required input format. Nothing essential appears 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?
Schema coverage is 100% and both required params are described in the schema (chain key list, 0x+64-hex format), so the description adds little beyond the schema. The expanded example URL is a useful illustration but not new semantic content.
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 deliverable — status, gasUsed, effective gas price, contract created, log count, and live confirmations — for a single hash, and explicitly frames it as answering whether a transaction landed and what it cost. This is easily distinguished from generic chain_tx or chain_tx_status 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 states the tool is for one hash and for confirming landing/cost, so an agent can infer when to use it. It does not name alternatives or exclusion conditions (e.g., when to prefer chain_tx_status or chain_block_receipts), so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_storageRaw storage slotARead-onlyIdempotentInspect
eth_getStorageAt for one slot of one account — verify a contract's own bookkeeping (owner slot, mapping entry) instead of trusting a view function. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/storage?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&slot=0x0&blockTag=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | storage slot (hex, up to 32 bytes) [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| address | Yes | target address, 0x + 40 hex [required] | |
| blockTag | No | block number or latest|safe|finalized|earliest|pending (default "latest") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| slot | No | |
| chain | No | |
| stale | No | |
| value | No | 32-byte word |
| asUint | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| blockTag | No | |
| asAddress | No | |
| chainLabel | No |
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 safety is covered. The description adds valuable pricing information ($0.001 USDC per call) and enumerates supported chains, which are not in annotations. The API reference is redundant but harmless. With annotations covering the safety profile, this is above baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with purpose and use case. The third sentence listing chains and an API reference is somewhat extraneous—chain list already appears in the schema—but it's not verbose. The description is efficient overall, though it could be trimmed 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?
With an output schema present, return values are defined elsewhere. The description covers purpose, cost, supported chains, and gives a concrete example of intended use. It doesn't discuss error handling or edge cases, but for a simple read operation with a comprehensive schema, this is adequate. A note about blockTag default is already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds a use-case hint (owner slot, mapping entry) that could help agents understand slot semantics, but it does not explain how to derive slot values or add meaning beyond the schema. Baseline 3 is appropriate when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'eth_getStorageAt for one slot of one account', a specific verb and resource, and immediately clarifies its niche by contrasting with view functions ('instead of trusting a view function'). It clearly distinguishes from sibling tools like chain_storage_range (multiple slots) and chain_storage_diff, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you need to verify raw storage rather than a view function. It does not explicitly name alternatives like chain_call or chain_storage_range, but the phrase 'instead of trusting a view function' gives context. It lacks an explicit 'when not to use' but the intent is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_storage_diffDid one storage slot change?ARead-onlyIdempotentInspect
The same slot read at two blocks: previous, current, and whether they differ — the primitive behind 'what did this contract's state actually move between those two dates'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/storage-diff?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&slot=0x0&blockA=latest&blockB=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | storage slot (hex, up to 32 bytes) [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| blockA | No | older block (number or latest|safe|finalized|earliest) (default "safe") | |
| blockB | No | newer block (number or tag) (default "latest") | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| slot | No | |
| chain | No | |
| stale | No | |
| blocks | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| valueA | No | |
| valueB | No | |
| address | No | |
| asUintA | No | |
| asUintB | No | |
| chainId | No | |
| changed | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond that: a $0.001 USDC per-call cost, supported chains, and a byte-identical REST endpoint. Nothing here contradicts 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?
Four concise sentences front-load the core purpose, then add cost, chain support, and endpoint equivalence. No filler or redundant restatement of 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 an output schema present, return values are covered. The remaining operational context—purpose, pricing, chain list, and exact endpoint—is fully provided, and annotations cover the safety profile. An agent can select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the previous/current labels and an example URL showing blockA and blockB, but it does not materially extend the parameter meaning already present 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?
The description states a precise operation: reading the same storage slot at two blocks and reporting previous, current, and whether they differ. This clearly distinguishes it from single-slot readers like chain_storage and range readers like chain_storage_range, and the phrase primitive behind the state-move question reinforces the intent.
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 clear usage context: this is the tool to answer whether a specific contract storage slot moved between two blocks or points in time. It does not explicitly name alternatives or when-not-to-use scenarios, but the two-block slot-diff framing makes the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_storage_rangeA run of storage slotsARead-onlyIdempotentInspect
Up to 16 consecutive 32-byte words from any starting slot — walk a struct or the array behind a mapping instead of trusting one view function to explain itself. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/storage-range?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&fromSlot=0x0&count=8&blockTag=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| count | No | how many items to read (bounded) (default 8) | |
| address | Yes | contract whose storage is read [required] | |
| blockTag | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| fromSlot | No | first storage slot (hex, up to 32 bytes) (default "0x0") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| blockTag | No | |
| fromSlot | No | |
| populated | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the 16-word bound, the $0.001 USDC cost per call, the supported chains, and the byte-identical REST endpoint. It doesn't describe pagination or error behavior, but the bound and cost are the key behavioral traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. The core capability and use case are front-loaded, followed by cost and chain list, then the REST equivalent. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only storage-range tool: it states the bound, cost, supported chains, and REST equivalent. The output schema exists, so return values are covered. The only minor gap is not explicitly stating what happens when count exceeds 16, but the 'up to 16' phrasing implies the bound.
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 5 parameters. The description adds the 'up to 16' bound and the '32-byte words' unit, which clarifies count semantics, but doesn't add much beyond that. Baseline 3 is appropriate since 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?
The description clearly states the tool reads up to 16 consecutive 32-byte storage words from any starting slot, with a concrete use case (walking a struct or mapping array). It distinguishes itself from chain_storage and chain_storage_diff by emphasizing the range/sequence aspect and the byte-identical REST endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need to walk a struct or array behind a mapping rather than trust a view function) and provides a concrete REST equivalent. It doesn't explicitly name sibling alternatives like chain_storage or chain_storage_diff, but the use-case framing gives clear context. The cost disclosure also helps an agent decide whether to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_supply_atToken supply at a past blockARead-onlyIdempotentInspect
totalSupply read at any block and diffed against now, formatted with the token's own decimals — how much of a supply was minted since a date, without an indexer. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/supply-at?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| block | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| chainId | No | |
| decimals | No | |
| deltaRaw | No | |
| changePct | No | |
| direction | No | |
| latestRaw | No | |
| atBlockRaw | No | |
| chainLabel | No | |
| blockNumber | No | |
| deltaFormatted | No | |
| decimalsAssumed | No | |
| latestFormatted | No | |
| atBlockFormatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the per-call cost ($0.001 USDC), supported chains, decimal formatting behavior, the diff-against-current-supply semantics, and the no-indexer implementation trait. This is substantial behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: the first sentence explains behavior, the second covers cost/chains, and the third gives a byte-identical API reference. It is front-loaded with the most decision-relevant information and contains 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?
Given the rich annotations, complete schema coverage, and existing output schema, the description covers everything an agent needs: operation, cost, chains, block handling, formatting, and API equivalence. No critical information for invoking 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%, so the schema already documents chain, token, and block semantics including defaults. The description adds color about decimals and shows an exact endpoint example, but provides no parameter-level meaning beyond what the schema already carries.
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 and resource: totalSupply read at a block and diffed against current supply, formatted with the token's decimals. It also explains the practical outcome — how much supply was minted since a date — and clearly distinguishes this from balance/meta/transfer sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames the intended use case ('minted since a date') and adds a useful positioning cue ('without an indexer'). It does not explicitly name alternatives or exclusion conditions, but the context is specific enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_sync_statusIs this node caught up?ARead-onlyIdempotentInspect
eth_syncing plus the head: a public node that is quietly 300 blocks behind answers every other question with stale data, and nothing else in a response tells you that. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/sync-status?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| head | No | |
| note | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| syncing | No | |
| lagBlocks | No | |
| safeBlock | No | |
| chainLabel | No | |
| currentBlock | No | |
| highestBlock | No | |
| finalizedBlock | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, idempotent, and non-destructive. The description adds valuable behavioral context: it costs $0.001 USDC, supports seven chains, is byte-identical to a REST endpoint, and returns syncing status plus head information. This meaningfully extends beyond the structured 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-loads the most important insight — why sync status matters. Each sentence earns its place: purpose, cost, supported chains, and REST equivalence. The phrasing 'eth_syncing plus the head' is slightly jargon-heavy, but it is not 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?
With a single well-documented parameter, an output schema, and strong annotations, the description provides enough additional context: the reason to call the tool, pricing, chain support, and an equivalent REST call. It is sufficiently complete for an agent to select and 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?
The input schema already documents the chain parameter with all supported values and marks it required, so schema coverage is 100%. The description restates the supported chains and includes an example REST-style path, but adds little new parameter-level meaning beyond that 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?
The description communicates what the tool reports — sync status plus the head block — and frames it as a way to detect a node that is behind. The title reinforces this. It does not explicitly name a sibling alternative, but its function is clearly distinct from the many chain_* data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence gives a concrete usage context: use this when stale node data might contaminate other responses, since nothing else in a typical response reveals this. It stops short of explicitly naming when not to use it or pointing to an alternative, but the guidance is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_token_balanceERC-20 balance with decimalsARead-onlyIdempotentInspect
balanceOf plus the token's own decimals, formatted — a human-readable USDC/token balance, not a raw 18-digit integer that needs a calculator. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/token-balance?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| token | Yes | token / NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| raw | No | |
| note | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| chainId | No | |
| decimals | No | |
| formatted | No | |
| chainLabel | No | |
| decimalsAssumed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond those: the cost ($0.001 per call), the formatting behavior (human-readable), and the supported chains. It does not contradict annotations and enhances the agent's understanding of side effects (none) and operational constraints.
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 mostly concise and front-loaded: it states the purpose first, then cost, chains, and an example. The example URL is somewhat long and could be trimmed, but it serves as a concrete reference. Overall, it is efficient and structured without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to detail return values. It covers cost, supported chains, and formatting behavior, which are essential for an agent to invoke correctly. It omits nothing critical for a simple balance lookup, though it doesn't mention edge cases like invalid addresses or unsupported tokens, which are likely handled by error responses.
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% for all three parameters (chain, token, owner), each with a clear description. The description does not add extra parameter-level semantics beyond what the schema provides; the example URL with concrete addresses is illustrative but not explanatory. Thus, 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 clearly states the tool returns a formatted, human-readable ERC-20 token balance, explicitly contrasting it with a raw integer that needs conversion. It names the exact operation (balanceOf plus decimals) and the resource (token), and the phrasing 'not a raw 18-digit integer' effectively distinguishes it from raw balance endpoints. Though it doesn't name a specific sibling, the purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical context: cost per call and supported chains, which help an agent decide feasibility. However, it does not explicitly state when to use this tool over alternatives (e.g., chain_balance for native tokens or chain_token_balances for multiple tokens). The usage context is implied by the title and description but lacks explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_token_balancesOne token, many holdersARead-onlyIdempotentInspect
balanceOf for up to 20 wallets on the same ERC-20, with decimals and symbol resolved once — the holder snapshot a distribution or listing check needs, in one settlement. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/token-balances?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owners=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0xa0b86991C6218A36cDD3b2C3d5E0F5b8D2f0A11C.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| owners | Yes | comma list of up to 20 holder addresses [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| sumRaw | No | |
| symbol | No | |
| chainId | No | |
| decimals | No | |
| requested | No | |
| chainLabel | No | |
| sumFormatted | No | |
| readableCount | No | |
| decimalsAssumed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds cost ($0.001 USDC), supported chains, and the optimization of resolving decimals/symbol once, plus byte-identical REST equivalence. No 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?
Front-loaded with the core purpose and use case. The example URL is verbose but earns its place by specifying exact byte-identical REST semantics. 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 output schema and annotations present, the description provides the remaining context: cost, chains, and the single-settlement batch behavior. It's sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all three params, so baseline is 3. The description adds value by clarifying token is ERC-20 (schema says 'token / NFT contract address'), reinforcing the 20-wallet cap, and providing a concrete example URL with real addresses.
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 ('balanceOf') and resource ('up to 20 wallets on the same ERC-20'), and clarifies the use case ('holder snapshot a distribution or listing check needs'). Distinguishes from siblings like chain_token_balance (single wallet) and chain_balances (native) by emphasizing multi-wallet same-token scope.
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 clear context: use when you need balances for up to 20 wallets on one ERC-20 token, with decimals/symbol resolved once. It implies a multi-holder scenario but does not explicitly name alternatives or exclusions, so it stops 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.
chain_token_metaToken name, symbol, decimals, supplyARead-onlyIdempotentInspect
The four ERC-20 view calls a listing needs, in one paid call, each tolerant of a token that does not implement it. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/token-meta?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| chainId | No | |
| decimals | No | |
| chainLabel | No | |
| isContract | No | |
| totalSupply | No | |
| totalSupplyFormatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the call read-only, idempotent, and non-destructive. The description adds genuinely useful behavioral context beyond those annotations: each sub-call tolerates a token that does not implement it (no revert), the call costs $0.001 USDC, and the output is byte-identical to a specific REST endpoint. There is no contradiction with the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and efficient: purpose in one clause, cost in the next, supported chains, then endpoint equivalence. There is no filler, although the byte-identical example URL is fairly long; it still serves as an unambiguous reference. The structure front-loads the core purpose before the cost and chains details.
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?
Because an output schema exists, the description does not need to explain return values, and it covers the essential decision factors: what the call aggregates, how much it costs, which chains are supported, and that it tolerates missing token methods. The only notable gap is the lack of explicit guidance about choosing between this and time/block-specific variants, but overall it is complete for a read-only 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?
The input schema already documents both parameters with 100% coverage, including the list of valid chain keys and the token address requirement. The description only repeats the chain list and adds no new meaning or format details for the parameters. Baseline 3 is appropriate since 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?
The description identifies the tool as aggregating 'the four ERC-20 view calls a listing needs,' and the title confirms those are name, symbol, decimals, and supply. This clearly conveys the resource and output, and the ERC-20 qualifier distinguishes it from NFT metadata and balance tools. However, it lacks an explicit verb like 'returns' and does not distinguish itself from the closely named sibling chain_token_meta_at.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides one usage context ('a listing needs'), specifies cost, and lists supported chains, which helps an agent understand when it is appropriate. It never explicitly states when to prefer this over siblings such as chain_token_meta_at or chain_token_balance, nor does it give when-not-to-use guidance. The usage cue is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_token_meta_atToken name, symbol, supply at a blockARead-onlyIdempotentInspect
The ERC-20 listing fields read at a past block tag or height, formatted with the decimals the contract itself reported — how a supply looked on a date, not how it looks now. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/token-meta-at?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | block number or tag to read the listing fields at [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| chain | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| chainId | No | |
| blockTag | No | |
| decimals | No | |
| chainLabel | No | |
| totalSupply | No | |
| totalSupplyRaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world reads, so the safety burden is lifted; the description still adds real value by disclosing the $0.001 USDC per-call cost, the supported chain set, and the byte-identical REST endpoint mapping. It does not discuss failure modes or rate limits, keeping it at a solid 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?
Front-loads the historical framing and the distinguishing contrast in the first sentence, then layers cost, chains, and the endpoint equivalence. It is efficient overall, though the full example URL in the final sentence is heavier than strictly needed.
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 read tool with an output schema already defined, the description covers the essentials an agent needs: what is read, at which point in time, across which chains, at what cost, and the REST equivalence. Nothing material about 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 all three required params (chain, token, block) are already documented in the schema, which sets the baseline at 3. The description reinforces that block means a past block tag or height and hints that decimals come from the contract, but adds no syntax or format 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 a specific verb (read), a specific resource (ERC-20 name/symbol/supply listing fields), and a scope modifier (at a past block tag or height). The phrase 'how a supply looked on a date, not how it looks now' cleanly separates it from the current-state siblings like chain_token_meta and chain_supply_at.
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 clear context for when this tool is the right one (historical point-in-time reads) by contrasting with the 'now' view, and lists supported chains plus the per-call cost so the agent can judge eligibility. It stops short of naming concrete sibling alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_transfers_scanRecent ERC-20 transfersARead-onlyIdempotentInspect
Transfer events for one token over a short window, decoded from/to/amount with the token's decimals applied — the outflow check a monitoring bot wants first, without running an indexer. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/transfers-scan?chain=base&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&blocks=20.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| token | Yes | token / NFT contract address [required] | |
| blocks | No | window size in blocks (bounded) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| range | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| sumRaw | No | |
| chainId | No | |
| decimals | No | |
| truncated | No | |
| chainLabel | No | |
| sumFormatted | No | |
| decimalsAssumed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds value beyond annotations by disclosing cost ($0.001 per call), supported chains, and the decoding behavior (from/to/amount with decimals). It also gives an exact endpoint equivalent, which is useful. No contradictions 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 compact and information-dense. Each sentence serves a purpose: behavior, use case/cost, supported chains, and endpoint equivalence. The chain list is slightly verbose but necessary. It is front-loaded with the core purpose, and no filler 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?
With an output schema present and annotations covering safety/idempotency, the description does not need to explain return values or side effects. It covers purpose, usage scenario, cost, chains, and an example invocation. It is complete for a read-only, single-token scan tool; nothing critical 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% – both required parameters (chain, token) and optional blocks are described in the schema. The description adds no additional parameter-level meaning; it reiterates the chain list and mentions 'short window' but does not elaborate on blocks semantics. 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: 'Transfer events for one token over a short window, decoded from/to/amount with the token's decimals applied.' This is clear and differentiates from generic chain_logs or chain_tx_events by narrowing scope to one token and short window. It does not explicitly name a sibling tool, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage scenario ('the outflow check a monitoring bot wants first') and a reason to prefer it over an indexer ('without running an indexer'). It also lists supported chains, which helps select the tool. However, it does not explicitly state when not to use it or mention alternatives, 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.
chain_tvlDeFi TVL ranked per chain (paid)ARead-onlyIdempotentInspect
Value locked in USD per chain, ranked. TVL is a protocol-reported metric, not a risk measure. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the description does not need to repeat those. It adds genuinely useful context beyond the annotations: the $0.001 USDC cost via x402 and the protocol-reported nature of TVL as a data-quality caveat.
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 deliver the core behavior first, then the data caveat and cost. There is no filler, and the caveat and pricing information are both decision-relevant for an agent deciding whether to call 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?
For a simple read-only tool with one optional parameter and no output schema, the description covers what will be returned, the caveat, and the cost. It is not fully complete because it leaves the limit parameter semantically unexplained and does not distinguish the tool from the closely related market_llama_chain_tvl_history sibling.
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 only parameter, limit, has 0% schema description coverage and the tool description never mentions it or its effect. An agent can guess that limit caps the number of ranked chains from the parameter name and constraints, but the description itself adds no semantic meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('Value locked in USD per chain') and the output ordering ('ranked'), so the tool's core purpose is unambiguous. It does not explicitly differentiate itself from the similar sibling market_llama_chain_tvl_history, so it does not fully earn top marks for sibling distinction.
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 case is implied: an agent would call this when it needs current DeFi TVL ranked across chains. The warning that TVL is not a risk measure provides a partial exclusion. However, no alternative tools are named and no explicit when-to-use versus when-not-to-use conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_txTransaction by hashARead-onlyIdempotentInspect
eth_getTransactionByHash decoded to the fields a caller branches on: from, to, value, nonce, gas, calldata length and inclusion block. Reports found:false rather than inventing a zero. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/tx?chain=base&hash=0x55bd09129b86846556030b6036d48c75865b1f8e73ee6f7df60a22a56f3cd0d4.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | transaction hash, 0x + 64 hex [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| pending | No | |
| chainLabel | No | |
| transaction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable non-obvious behavior: 'Reports found:false rather than inventing a zero' (honesty about missing data), the cost of $0.001 USDC per call, the supported chain list, and byte-identity to a REST endpoint. These details significantly exceed what annotations provide, giving the agent critical operational knowledge.
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 states the core function first, then immediately the returned fields, followed by honest behavior, cost, supported chains, and a REST equivalent. Every sentence adds distinct value with no redundancy. It is efficient for an agent to parse.
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 tool with two well-documented parameters and an output schema, the description covers all essential aspects: what it does, what it returns, how it handles missing data, cost, and supported chains. The behavior for missing transactions ('found:false') and the pricing model are critical for agent decision-making and are included. Nothing critical is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description repeats the chain list from the schema and does not add new parameter-specific semantics beyond what is already documented. It does mention 'calldata length' but that is an output field, not a parameter. With full schema coverage, 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 clearly states the tool fetches a transaction by hash via eth_getTransactionByHash, and explicitly lists the decoded fields (from, to, value, nonce, gas, calldata length, inclusion block). This distinguishes it from siblings like chain_receipt (receipt data) or chain_tx_status (status checks), even though it doesn't name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying the fields it returns, which suggests 'use this when you need transaction details for branching logic.' However, it does not explicitly mention when not to use it or point to alternatives (e.g., chain_receipt for receipts). The phrase 'decoded to the fields a caller branches on' provides context but lacks explicit exclusion or cross-referencing to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_tx_at_indexOne transaction by block and indexARead-onlyIdempotentInspect
eth_getTransactionByBlockNumberAndIndex — pick the Nth transaction of a block without transferring the whole block, which is how you sample a block instead of downloading it. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/tx-at-index?chain=base&block=latest&index=0.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| index | Yes | transaction index inside the block (decimal) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| found | No | |
| index | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| chainLabel | No | |
| transaction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and idempotent, and the description adds meaningful behavioral context: the per-call cost, the list of supported chains, and byte-identical equivalence to a REST endpoint. This goes beyond what annotations alone provide without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver purpose, use case, cost, supported chains, and REST equivalence with no filler. The core behavioral guidance is front-loaded before secondary details.
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 lookup tool with a full input schema, an output schema, and safety annotations, the description covers the essential operational details: what it does, when to use it, what it costs, and which chains it supports. Nothing critical is missing for an agent to select and 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 three parameters. The description only reinforces the parameter shapes through an example URL, adding no substantial 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?
The description clearly states the tool picks the Nth transaction of a block without transferring the whole block, making its purpose specific and distinct from block-level or transaction-by-hash siblings. The RPC method name and explicit block sampling framing reinforce the exact resource and operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this is the way to sample a block instead of downloading it, which gives clear context for when to use it. It does not explicitly name sibling alternatives or exclusion conditions, but the sampling-vs-downloading contrast is sufficient guidance for the common use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_tx_countHow many transactions in a blockARead-onlyIdempotentInspect
eth_getBlockTransactionCountByNumber for one block tag or height — the cheapest load/throughput reading of a chain that never has to move a full block header over the wire. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/tx-count?chain=base&block=latest.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | block number or latest|safe|finalized|earliest|pending (default "latest") | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| blockTag | No | |
| chainLabel | No |
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 safety profile is covered. The description adds valuable behavioral context: it is the cheapest load/throughput reading, costs $0.001 USDC per call, never moves a full block header over the wire, and is byte-identical to a REST endpoint. This goes beyond the annotations and helps an agent understand cost and performance implications. It doesn't mention rate limits or error cases, but the added cost/performance context justifies 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 compact and front-loaded: it states the core operation first, then cost, chains, and REST equivalence. Every sentence earns its place, and there is no fluff. The structure is ideal for an agent scanning for purpose and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 1 required, output schema present), the description is nearly complete. It covers purpose, cost, supported chains, and equivalence to a REST endpoint. The only minor gap is that it doesn't describe the return value format, but the output schema exists and the description needn't explain return values. It also doesn't mention error conditions, but for a simple read-only count tool, this is acceptable.
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 both parameters (chain and block) with their allowed values and defaults. The description adds the supported chain list and the default block tag, but these are also in the schema. The description doesn't add significant new meaning beyond the schema, so the 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: 'eth_getBlockTransactionCountByNumber for one block tag or height' — it clearly identifies what the tool does (counts transactions in a block) and distinguishes it from sibling tools like chain_block_txids or chain_tx_at_index. The title reinforces the purpose, and the description adds the RPC method name, making the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is the 'cheapest load/throughput reading of a chain' and mentions supported chains and the equivalent REST endpoint. It doesn't explicitly say when NOT to use it or name an alternative tool, but the cost/performance framing implies when it is appropriate. Sibling names like chain_block_txids and chain_tx_at_index exist, but the description doesn't explicitly contrast with them, 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.
chain_tx_eventsEvery event one transaction emittedARead-onlyIdempotentInspect
The receipt's logs decoded to address, topic0, indexed values and data size — what a transaction actually did, straight from the node, which is the only honest answer when eth_getLogs by transaction hash is refused. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/tx-events?chain=base&hash=0x55bd09129b86846556030b6036d48c75865b1f8e73ee6f7df60a22a56f3cd0d4.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | transaction hash, 0x + 64 hex [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| hash | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| status | No | |
| chainId | No | |
| truncated | No | |
| chainLabel | No | |
| blockNumber | No |
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, so the description only needs to add context, which it does. It adds the per-call cost ($0.001 USDC), data provenance ('straight from the node'), and byte-identical equivalence to a REST endpoint. No contradiction exists between the description and 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 one dense, run-on paragraph that packs in output format, use case, cost, chain list, and a full example URL. Some information, like the chain list and endpoint example, duplicates what the schema or other parts of the description already convey. It is compact rather than cleanly structured or 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?
For a simple, read-only, two-parameter tool with an output schema, the description covers the purpose, the use condition, cost, supported chains, and a worked example. It does not explicitly describe behavior for invalid hashes or empty logs, but nothing essential for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both required parameters with 100% coverage, so the baseline is 3. The description adds value by providing a byte-identical example URL with concrete chain=base and hash=0x... values, reinforcing the exact format expected. This is useful but still supplemental to a schema that is already complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool decodes a receipt's logs into address, topic0, indexed values, and data size, so an agent can tell it is an event-decoding tool for a single transaction. It also distinguishes itself as the 'only honest answer when eth_getLogs by transaction hash is refused,' though it does not explicitly name a sibling alternative. The verb is implied ('decoded to') rather than explicit like 'returns' or 'gets,' which prevents a perfect 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 gives a concrete use case: this is the tool to call when eth_getLogs by transaction hash is refused. It also mentions the exact supported chains and per-call cost, which are practical prerequisites. However, it does not name alternative tools such as chain_receipt or chain_logs, nor does it state when not to use this tool, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_tx_statusDid this transaction landARead-onlyIdempotentInspect
One call for the pair every bot needs after sending: the transaction plus its receipt, with confirmations, block, status, gas used and revert reason together — instead of two paid reads and a race. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/tx-status?chain=base&hash=0x55bd09129b86846556030b6036d48c75865b1f8e73ee6f7df60a22a56f3cd0d4.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | transaction hash, 0x + 64 hex [required] | |
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| ts | No | |
| from | No | |
| hash | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| failed | No | |
| reason | No | |
| source | No | |
| status | No | |
| chainId | No | |
| gasUsed | No | |
| pending | No | |
| logCount | No | |
| valueWei | No | |
| chainLabel | No | |
| blockNumber | No | |
| revertReason | No | |
| confirmations | No | |
| contractAddress | No | |
| effectiveGasPriceGwei | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond that: the $0.001 USDC cost per call, the supported chains, and that it is byte-identical to a specific GET endpoint. This is meaningful behavioral disclosure without contradicting 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 front-loaded with the core value proposition, then adds cost, chain support, and an exact endpoint equivalence. It is slightly dense but each sentence earns its place and there is 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?
For a simple two-parameter read tool with a full output schema and safety annotations, the description is complete. It covers purpose, cost, supported chains, and exact API equivalence, so an agent has everything needed to select and 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 coverage is 100%, so the schema already documents both required parameters. The description does not add much parameter-level meaning beyond the example hash in the byte-identical URL, which mostly duplicates the schema's format guidance.
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 returns a transaction plus its receipt in one call, with confirmations, block, status, gas used, and revert reason. It explicitly contrasts this with 'two paid reads and a race,' distinguishing it from separate tx and receipt tools like chain_tx and chain_receipt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use this after sending a transaction when you need both the transaction and its receipt together. It implies the alternative is making two separate reads, though it does not name sibling tools explicitly or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_wallet_approvalsWhat one spender can still moveARead-onlyIdempotentInspect
allowance(owner, spender) across up to 10 tokens for one wallet — the standing-approval audit that answers 'if this address gets phished tonight, what leaves'. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/wallet-approvals?chain=base&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&spender=0x0000000000000000000000000000000000000000&tokens=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x4200000000000000000000000000000000000006.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| tokens | Yes | comma list of up to 10 ERC-20/ERC-721 contract addresses [required] | |
| spender | Yes | allowance spender address [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| spender | No | |
| requested | No | |
| chainLabel | No | |
| openApprovals | No | |
| unrestrictedApprovals | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond the annotations: cost per call ($0.001 USDC), supported chains, and byte-identical equivalence to a GET endpoint. Annotations already cover read-only, idempotent, and non-destructive traits, so the description's additions are meaningful but not exhaustive (no rate limits or failure modes).
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, then cost, chains, and a wire-format example. The URL is verbose but serves as a concrete parameter illustration; otherwise, the text is dense and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description adequately covers chains, cost, token budget, and why an agent would invoke this tool. Minor omissions like error handling or rate limits are not critical 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?
Schema coverage is 100%, so the baseline is 3. The description adds a concrete example URL and clarifies the 'up to 10 tokens' ceiling, but these add marginal meaning over the schema's existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact operation ('allowance(owner, spender) across up to 10 tokens for one wallet') and frames it as a standing-approval audit. This differentiates it from narrower siblings like chain_allowance or chain_nft_approved, and the security-oriented phrasing ('if this address gets phished tonight, what leaves') makes the intent unmistakable.
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 a concrete use case as a security audit for standing approvals, which strongly implies when to call it. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_wallet_nftsOne wallet, many collectionsARead-onlyIdempotentInspect
ERC-721 balanceOf for one address across up to 10 collections with each collection's name and symbol resolved once — the 'what NFTs does this wallet actually hold' check without an indexer. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/wallet-nfts?chain=base&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokens=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x4200000000000000000000000000000000000006.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| tokens | Yes | up to 10 ERC-721 contract addresses [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| requested | No | |
| totalHeld | No | |
| chainLabel | No | |
| collectionsWithHoldings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive profile. The description adds meaningful extra behavior: the $0.001 USDC cost, the supported chain list, the once-per-collection name/symbol resolution, and byte-identical equivalence to a GET endpoint. This goes well beyond what annotations alone provide.
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 somewhat long but each segment earns its place: purpose, cost, chains, and endpoint equivalence. The embedded example URL is heavy but serves as a concrete parameter illustration rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value documentation is not required. The description covers cost, supported chains, endpoint equivalence, and the key behavioral constraint, leaving no critical decision-making context missing for an agent deciding whether to invoke this 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 met. The description adds value by clarifying that tokens are ERC-721 contract addresses, reinforcing the 10-collection cap, and providing a concrete URL example showing comma-separated token addresses for the tokens string.
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 operation (ERC-721 balanceOf) over a precise resource (one address across up to 10 collections) and states the use case: 'what NFTs does this wallet actually hold'. It also distinguishes itself from single-collection NFT balance tools by emphasizing multi-collection scope and name/symbol resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without an indexer' and the wallet-holdings use case give a clear context for when this tool is appropriate. However, it does not explicitly name alternative sibling tools or say when not to use it, leaving some comparison to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_wallet_stateWallet snapshot across chainsARead-onlyIdempotentInspect
Balance, nonce and contract/EOA flag for one address on up to 4 chains in a single paid call — the one-shot 'what does this wallet actually hold' check. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/wallet-state?chains=base,ethereum&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No | comma list, up to 4: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche (default ["base"]) | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| stale | No | |
| caveat | No | |
| chains | No | |
| reason | No | |
| source | No | |
| address | No | |
| chainId | No | |
| chainLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly, idempotent, openWorld, and non-destructive behavior. The description adds meaningful behavioral context beyond that: it is a 'paid call' with a specific cost of $0.001 USDC per call, and it is 'byte-identical to GET /chain/wallet-state' with an example URLtons. These details help an agent reason about side effects and exact output behavior without contradicting 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 two well-structured sentences with the main purpose front-loaded followed by cost and chain list. The second sentence is slightly heavy due to the embedded full REST URL, but every piece of information is useful (cost, chains, and HTTP equivalence). It is appropriately sized and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 1 required), rich annotations, and existence of an output schema, the description covers all necessary context: purpose, supported chains, cost, multi-chain behavior, and the exact REST-equivalent call. There are no missing pieces that would prevent an agent from invoking 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 description does not add significant parameter semantics beyond the schema. It does show an example URL with chains and address values, which reinforces usage but is not necessary since the schema already documents them. The baseline of 3 is appropriate because the schema carries the parameter documentation 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?
The description uses a specific verb+resource: 'Balance, nonce and contract/EOA flag for one address on up to 4 chains'. It clearly identifies what is returned and the scope (one address, multiple chains), distinguishing it from single-chain sibling tools like chain_balance or chain_nonce. The phrase 'one-shot what does this wallet actually hold check' further clarifies the intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by stating this is a 'one-shot wallet snapshot' and emphasizes the ability to check 'up to 4 chains in a single paid call', signaling when the multi-chain convenience is valuable. It does not name alternatives or provide exclusion criteria, so it is not a 5, but the usage context is explicit enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_wallet_tokensOne wallet, many ERC-20sARead-onlyIdempotentInspect
balanceOf for one address across up to 10 tokens on one chain, each formatted with its own decimals and symbol — the holding snapshot a portfolio bot wants in a single settlement instead of ten. Costs $0.001 USDC per call. Chains: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche. Byte-identical to GET /chain/wallet-tokens?chain=base&owner=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&tokens=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x4200000000000000000000000000000000000006.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key: base, ethereum, arbitrum, bsc, polygon, optimism, avalanche [required] | |
| owner | Yes | holder address [required] | |
| tokens | Yes | comma list of up to 10 ERC-20/ERC-721 contract addresses [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| chain | No | |
| owner | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| chainId | No | |
| requested | No | |
| chainLabel | No | |
| tokensReadable | No | |
| totalRowsWithBalance | No |
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 valuable behavioral context: the $0.001 USDC cost per call and that it is byte-identical to a specific GET endpoint, which conveys exact behavior and response equivalence. No contradiction 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?
Two sentences carry high information density with no filler. The primary purpose is front-loaded, followed by cost, chain list, and an exact endpoint equivalence. Every element earns its place, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 required params, output schema present, annotations cover safety), the description is complete. It covers purpose, scope (up to 10 tokens, one chain), supported chains, cost, and exact API mapping. No critical information is missing for an agent 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% for the three parameters, each with descriptive text (chain list, holder address, comma list of up to 10 token addresses). The description adds little beyond the schema—it mentions formatting with decimals and symbol for each token, but that's implicit in the output. Baseline 3 is appropriate since the schema handles 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 clearly states the tool performs balanceOf for one address across up to 10 tokens on a single chain, with per-token decimals and symbol formatting. This specific verb+resource distinguishes it from siblings like chain_token_balance (single token) and implies batch behavior, so an agent can readily separate it from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames the use case as 'the holding snapshot a portfolio bot wants in a single settlement instead of ten', which suggests when to use it (multi-token balance query on one chain). It doesn't name alternative tools or explicitly say when not to use it, but the context is clear and it lists supported chains, giving enough guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demo_auditFree demo of the audit (fixed sample, no payment)ARead-onlyIdempotentInspect
Runs the scanner on a small built-in bad-bot sample and returns the findings. Free; no x402 payment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| demo | Yes | |
| findings | Yes | |
| signalCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful context beyond those: it uses a built-in sample, requires no payment, and returns findings. This complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core behavior first and the free/no-payment detail second. There is no wasted wording, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a rich annotation set, and an output schema present, the description covers everything an agent needs: what the tool does, that it uses a fixed sample, and that it is free. Nothing essential 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 and an empty input schema, so there are no parameter semantics to document. The description reinforces that no input is needed by referring to a built-in sample, which is sufficient.
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: it runs the scanner on a small built-in bad-bot sample and returns findings. It clearly distinguishes itself from the sibling audit_bot_code by being a free, fixed-sample demo rather than a real audit.
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 clearly conveys when to use the tool: when you want a free, no-payment demonstration on a fixed sample. It does not explicitly name alternatives or exclusions, but the 'demo' framing and 'no x402 payment' make the intended usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gas_pricesLive gas and base fee in gwei (paid)ARead-onlyIdempotentInspect
Gas price, base fee and block height for Base and Arbitrum from public RPC — what a transaction costs before you send it. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds genuinely useful context beyond annotations: data comes from public RPCs and each call costs $0.001 USDC via x402, which materially affects invocation decisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler. The output data and supported chains are front-loaded, followed by the usage context and cost disclosure.
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 tool with no output schema, the description covers the key return fields, source, chain scope, and cost. The main omission is default behavior for omitted parameters, but this is minor given the schema's clear enum.
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 description names the supported chains, which maps to the `chains` array enum, but it does not explain default behavior when the parameter is omitted or whether one or both chains can be requested. With 0% schema description coverage, this is only partial compensation.
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 exactly what is returned (gas price, base fee, block height) and for which chains (Base and Arbitrum), which makes it immediately distinct from generic chain fee tools. The purpose is concrete and actionable.
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 a clear use case ('what a transaction costs before you send it') that tells an agent when to consult this tool. It does not explicitly name alternatives or exclusion criteria, so it stops short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_priceToken spot price + liquidity (paid, Base or Solana)ARead-onlyIdempotentInspect
Live DEX spot price, liquidity, FDV, market cap and 24h volume for any token by contract address — EVM (Base/etc.) or Solana mint. Highest-liquidity pair. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Token contract address: EVM (0x…, 42 hex) or Solana base58 mint (32-44 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds valuable behavioral details beyond annotations: the per-call cost of $0.001 USDC via x402 and the fact that it selects the highest-liquidity pair. This is useful context for an agent deciding whether to invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both information-dense: the first enumerates the returned metrics and accepted address formats, the second states the cost and payment method. No filler or 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 tool with no output schema, the description is quite complete: it lists the returned values, chain coverage, address formats, and pricing. It could be slightly stronger by clarifying the quote currency for price/volume, but nothing essential for invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single address parameter, including EVM and Solana formats. The description mostly restates this information without adding substantially new parameter 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?
The description clearly states the tool's function: it returns live DEX spot price, liquidity, FDV, market cap, and 24h volume for a token by contract address, on EVM or Solana. This is specific and informative, but it does not explicitly differentiate itself from sibling tools like market_jup_token_prices or market_llama_price_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: when you need live DEX token metrics by contract address across EVM or Solana. However, there is no explicit guidance on when not to use this tool or which alternatives might be cheaper/better suited for similar requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_bfex_candlesBitfinex OHLC candlesARead-onlyIdempotentInspect
Candles for a Bitfinex spot pair at the timeframes its v2 API serves, oldest first, with base volume per bucket. Costs $0.001 USDC per call. Byte-identical to GET /market/bfex-candles?pair=BTCUSD&timeframe=1m&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Bitfinex currency pair without the venue's leading t: BTCUSD, ETHUSD, ADAUSD [required] | |
| limit | No | candles (max 300) (default 48) | |
| timeframe | No | Bitfinex candle timeframe (default "1m") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| pair | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| timeframe | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds genuinely useful behavioral context: oldest-first ordering, inclusion of base volume, a per-call cost of $0.001 USDC, and byte-identical equivalence to a specific REST endpoint. This greatly exceeds the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry all the essential information without repetition. The core scope and ordering are front-loaded, and the cost and byte-identical endpoint note are high-value additions with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value details are already covered. The description adds selection scope, ordering, volume semantics, cost, and endpoint equivalence. It is only mildly incomplete because accepted timeframe values are not explicitly listed, leaving that detail to external v2 API knowledge.
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 applies. The description's query example reinforces how pair, timeframe, and limit combine, but it does not add new parameter meaning beyond the schema. The main gap is that accepted timeframe values are not enumerated; the description only points to the v2 API.
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: Bitfinex spot pair OHLC candles at v2 API timeframes, ordered oldest first, with base volume per bucket. The venue and endpoint name clearly distinguish it from sibling candle tools for other exchanges, and the title reinforces the resource type.
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 makes the use case explicit — Bitfinex spot pair candles — which is sufficient to route an agent to this tool over other venue-specific candle tools. It does not explicitly name alternatives or state when not to use it, so it stops 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.
market_bfex_pairsBitfinex listed pairsARead-onlyIdempotentInspect
The pair ids Bitfinex itself publishes for its spot exchange, optionally filtered by a substring — the lookup that stops a bot guessing a market that does not exist. Costs $0.001 USDC per call. Byte-identical to GET /market/bfex-pairs?contains=USD&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ids to return (max 300) (default 100) | |
| contains | No | case-insensitive substring filter on the pair id (default null) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| pairs | No | |
| stale | No | |
| total | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| matched | No |
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 meaningful extras: the $0.001 USDC cost per call and the byte-identical HTTP equivalent, which helps an agent understand exact behavior and side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences: the first states the core purpose, the second gives the motivating use case, and the third adds cost and an exact endpoint equivalent. 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 simple, optional-parameter lookup with an output schema and rich annotations, the description is complete. It covers what the tool returns, how filtering works, the use case, cost, and the underlying HTTP contract, leaving no practical gap 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 input schema already describes both parameters with 100% coverage, establishing a baseline of 3. The description adds value by explaining 'contains' as a case-insensitive substring filter on the pair id and by showing the HTTP query form 'contains=USD&limit=20', which reinforces 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 action and resource: it returns the pair ids Bitfinex publishes for its spot exchange, optionally filtered by substring. It clearly distinguishes this from sibling market_bfex_candles and market_bfex_ticker by focusing on the list of tradeable pair ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'the lookup that stops a bot guessing a market that does not exist' gives a clear use case: validate pair existence before trading. It does not explicitly name alternatives or exclusions, so it falls short of a full 5, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_bfex_tickerBitfinex spot tickerARead-onlyIdempotentInspect
Top of book, last, 24h change in price and percent, and 24h volume/high/low for one Bitfinex spot pair. Costs $0.001 USDC per call. Byte-identical to GET /market/bfex-ticker?pair=BTCUSD.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Bitfinex currency pair without the venue's leading t: BTCUSD, ETHUSD, ADAUSD [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| ask | No | |
| bid | No | |
| last | No | |
| note | No | |
| pair | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| low24h | No | |
| reason | No | |
| source | No | |
| askSize | No | |
| bidSize | No | |
| high24h | No | |
| change24h | No | |
| volume24h | No | |
| changePct24h | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable context beyond annotations: a $0.001 USDC per-call cost and byte-identical equivalence to the REST endpoint, plus top-of-book 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?
Two focused sentences front-load the returned data and then state cost and endpoint equivalence. No filler or redundancy; every clause adds 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 one-parameter read-only tool with a rich output schema, the description covers the data content, cost, exact endpoint behavior, and spot-pair scope. Nothing needed 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?
The single pair parameter has 100% schema description coverage, including examples and requirement. The description's endpoint example merely restates the pair query and adds no new formatting or semantic details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the resource: top-of-book and 24-hour statistics for one Bitfinex spot pair. It distinguishes this from sibling tools by naming Bitfinex, spot, and single-pair scope, unlike market_bfex_candles or market_bfex_pairs.
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 states the exact use context: retrieving a ticker for one Bitfinex spot pair, and gives the REST-equivalent URL. It does not explicitly enumerate when not to use it or compare alternatives, but the venue, market type, and single-pair scope make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_block_projectionsBitcoin next-block fee projectionsARead-onlyIdempotentInspect
Per-block projection for the mempool's next ~8 blocks: size, transaction count, total fees, median fee and the fee-rate range that would make it. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-block-projections?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | projected blocks to return (the venue publishes about 8) (default 8) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| blocks | No | |
| caveat | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar is lower. The description adds valuable context: the per-call cost, the approximate horizon (~8 blocks), the specific fields returned, and byte-identity to a known REST endpoint. No contradiction 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?
Two tight sentences deliver the core purpose, return contents, cost, and endpoint equivalence without filler. The most important information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations, and only one optional parameter, the description covers the essential operational details: what is returned, the cost, and the exact REST equivalent. Nothing critical is missing for an agent 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 coverage is 100%, and the single 'limit' parameter is already described in the schema. The description adds the '~8 blocks' context and the REST endpoint's limit=20, but does not materially expand on the parameter's meaning or formatting beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (per-block projections for the mempool's next ~8 blocks) and enumerates the returned fields (size, transaction count, total fees, median fee, fee-rate range). It does not explicitly contrast itself with sibling tools like market_btc_fee_estimates, but the specific scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a usage-relevant cost warning and notes byte-identity to a REST endpoint, but it provides no guidance on when to choose this tool over alternatives such as market_btc_fee_estimates or market_btc_recent_blocks. No when-to-use or when-not-to-use context is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_chain_tipBitcoin chain tipARead-onlyIdempotentInspect
The current Bitcoin block height as mempool.space sees it, plus the best tip hash — the two-second liveness check for anything Bitcoin-facing. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-chain-tip?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| height | No | |
| reason | No | |
| source | No | |
| tipHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, and idempotent safety, so the description only needs to add non-obvious traits. It adds the per-call cost ($0.001 USDC), the mempool.space source, and byte-identical equivalence to the REST endpoint. This is useful beyond the annotations, though it omits potential rate-limit or freshness details.
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 two sentences and front-loads the core output and use case. The second sentence adds cost and endpoint equivalence without padding. No words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value details are already covered. The description covers purpose, source, cost, and liveness use case, which is everything needed for a zero-parameter read-only tool. It is complete 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 tool has zero parameters and an empty input schema, so there are no parameter semantics to document. Per the rubric, a zero-parameter tool gets a baseline of 4. The description makes no parameter claims, which 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 exactly what the tool returns: the current Bitcoin block height and the best tip hash, with source attribution to mempool.space. It also characterizes the tool as a 'two-second liveness check,' clearly distinguishing it from the many market_btc_* siblings. This is a specific verb/resource definition that an agent can act on 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 explicitly frames the tool as a liveness check for Bitcoin-facing operations, giving a clear when-to-use context. It does not name sibling alternatives or exclusions, so it stops at clear context without full when-not guidance. Cost and API equivalence further help an agent decide to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_difficulty_adjustmentBitcoin difficulty retargetARead-onlyIdempotentInspect
Where the next difficulty adjustment stands: percent progress, projected change, remaining blocks and time, the next retarget height and the average block time behind it. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-difficulty-adjustment?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| timeAvgSec | No | |
| expectedBlocks | No | |
| previousTimeMs | No | |
| progressPercent | No | |
| remainingBlocks | No | |
| remainingTimeMs | No | |
| difficultyChange | No | |
| previousRetarget | No | |
| adjustedTimeAvgSec | No | |
| nextRetargetHeight | No | |
| estimatedRetargetMs | No |
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 correctly does not repeat those. It adds value by disclosing the per-call cost ($0.001 USDC) and noting it is byte-identical to a specific endpoint. No contradictions 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 two sentences, front-loaded with the core purpose. The first sentence lists the data fields, which is informative but slightly list-heavy; the second adds cost and endpoint equivalence. It is efficient without being terse, earning a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description need not detail return values. It covers what the tool returns (via field list), cost, and endpoint identity. For a zero-parameter read-only tool, this is complete enough, though it could optionally mention that it reflects current state or that the data updates over time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty (100% coverage). The baseline for no parameters is 4, and the description does not need to explain parameter semantics. It appropriately omits parameter 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 clearly states the tool's purpose: reporting where the next Bitcoin difficulty adjustment stands, and enumerates the specific data fields it returns (percent progress, projected change, remaining blocks/time, retarget height, average block time). This is specific and distinct from sibling tools like market_btc_network_stats or market_btc_block_projections.
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 implied by the tool's specificity—it is clearly the go-to for difficulty adjustment data. However, it does not explicitly mention when to use it over alternatives or provide exclusions, such as 'for hashrate data use market_btc_mining_hashrate' or 'for block timing use market_btc_chain_tip'. The guidance is implicit, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_fee_estimatesBitcoin fee estimatesARead-onlyIdempotentInspect
The recommended sat-per-vbyte fee targets for the next blocks: fastest, half-hour, one-hour, economy and minimum. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-fee-estimates?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| hourFee | No | |
| economyFee | No | |
| fastestFee | No | |
| minimumFee | No | |
| halfHourFee | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful behavioral context beyond annotations: the $0.001 USDC cost per call and the byte-identical relationship to the GET endpoint, which sets response expectations.
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 deliver the data output, pricing, and endpoint equivalence with no filler. The most important information (what the tool returns) is front-loaded. The trailing '?' is a minor typo but does not hurt usefulness.
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 parameterless, read-only tool with annotations and an output schema already provided, the description covers everything an agent needs to select and invoke it: output semantics, cost, and exact endpoint contract. Nothing meaningful 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?
There are zero parameters and the schema description coverage is 100%, so there is no parameter documentation burden on the description. The description still adds value by naming the returned fee categories, which helps the agent interpret the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as Bitcoin fee estimates and enumerates the exact fee targets returned (fastest, half-hour, one-hour, economy, minimum), which makes the tool's purpose obvious. It lacks an explicit verb like 'returns' and does not name sibling tools, but the endpoint reference and fee-target list are enough to set it apart from related market_btc_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The cost and endpoint identity are useful operational prerequisites, and the description implies this is the tool for Bitcoin fee estimates. However, it gives no explicit guidance on when to choose this over sibling tools such as market_btc_spot_prices or chain_fee_data, nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_mining_hashrateBitcoin hashrate and difficulty seriesARead-onlyIdempotentInspect
Network hashrate points and the difficulty-adjustment series over a bounded window, with the current hashrate and difficulty the explorer reports. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-mining-hashrate?window=1m&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | points per series to return (max 400) (default 60) | |
| window | No | history window (only the values measured) (default "1m") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| window | No | |
| hashrates | No | |
| difficulty | No | |
| hashratePoints | No | |
| difficultyPoints | No | |
| currentDifficulty | No | |
| currentHashrateHs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds a monetary cost per call ($0.001 USDC) and states the tool is byte-identical to a specific GET endpoint, which informs caching and reproducibility. This is valuable beyond structured 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?
Three short sentences, each carrying essential information: data scope, cost, and endpoint equivalence. No filler or redundancy. Structure front-loads the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation, the description is adequate for a read-only series tool. It covers purpose, cost, and endpoint mapping. Minor omissions like the meaning of 'bounded window' or 'difficulty-adjustment series' are not material given the targeted 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 coverage is 100%, so the schema already documents limit and window with defaults and max values. The description adds a concrete example via the byte-identical endpoint expression ('?window=1m&limit=20'), reinforcing defaults, but adds no new 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?
The description states a specific resource: 'Network hashrate points and the difficulty-adjustment series' and clarifies that it returns current hashrate and difficulty from the explorer. This distinguishes it from sibling market tools that cover other Bitcoin metrics (e.g., fee estimates, spot prices). Though no sibling is named, the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the data returned (hashrate/difficulty) but does not explicitly state when to prefer this over sibling tools like market_btc_difficulty_adjustment. No exclusions or alternatives are mentioned. The 'bounded window' and endpoint equivalence provide some context, but an agent must infer the intended use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_network_statsBitcoin network statisticsARead-onlyIdempotentInspect
One shot at the network's aggregate state: price, hash rate, difficulty, next retarget height, blocks and transactions in the last day, coins mined, fees collected and total supply. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-network-stats?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| nTx | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| blocksSize | No | |
| difficulty | No | |
| hashRateGh | No | |
| timestampMs | No | |
| btcMinedSats | No | |
| nBlocksMined | No | |
| nBlocksTotal | No | |
| totalBtcSats | No | |
| totalBtcSent | No | |
| totalFeesSats | No | |
| marketPriceUsd | No | |
| tradeVolumeBtc | No | |
| tradeVolumeUsd | No | |
| estimatedBtcSent | No | |
| nextRetargetHeight | No | |
| estimatedTxVolumeUsd | No | |
| minutesBetweenBlocks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive hints, so the description does not need to repeat those. It adds meaningful behavioral context: the cost per call, the byte-identical claim to a GET endpoint, and the word 'One shot' implying no pagination or filtering. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the purpose ('One shot at the network's aggregate state') then lists the exact fields, then adds the cost and endpoint equivalence. Every element earns its place, with no filler or repetition. Ideal length for a no-parameter 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 has no parameters and an output schema exists (though not fully shown), so the description does not need to detail return structure. It covers what the tool returns (by listing fields), the cost, and the endpoint equivalence. The only minor omission is that it does not describe any caveats such as rate limits or possible empty responses, but for a simple stats tool this is negligible. The description is sufficiently complete for safe 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?
There are zero parameters, so the schema requires no explanation. The description does not attempt to document any parameters because none exist. A baseline of 4 is appropriate given that parameter semantics are moot; the description correctly omits any detail that would be irrelevant.
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 is explicit: 'One shot at the network's aggregate state' and then enumerates the exact data points (price, hash rate, difficulty, etc.). This clearly distinguishes it from sibling tools like market_btc_spot_prices or market_btc_mining_hashrate, which focus on single metrics. The tool's scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implicitly guides usage by framing the tool as a single-shot aggregate snapshot, and it adds a critical usage constraint: a per-call cost of $0.001 USDC, which agents should weigh when deciding to call. It does not explicitly name alternatives or exclusion criteria, but the list of fields makes it obvious that this is for broad overviews rather than targeted queries. The absence of explicit when-not-to-use is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_recent_blocksLatest Bitcoin blocksARead-onlyIdempotentInspect
The blocks a Bitcoin explorer has just indexed: height, hash, time, difficulty, transaction count, size and weight, with the mined fees and pool name when the explorer attaches them. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-recent-blocks?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | blocks to return (the endpoint publishes about 15) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| blocks | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| tipHeight | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: the $0.001 USDC cost, the byte-identical equivalence to a specific GET endpoint, and the conditional presence of fees and pool name depending on explorer attachment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core return fields are front-loaded, followed by cost and endpoint equivalence. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with an output schema and safety annotations, the description is nearly complete. It covers cost, source, fields, and endpoint equivalence. It does not explain when to prefer this over siblings, but that gap is already accounted for in usage_guidelines.
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 'limit' parameter is already described with default and endpoint behavior. The description adds no further parameter semantics beyond the endpoint example with limit=20, which may even slightly conflict with the schema's default of 10. 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 clearly identifies the resource as recently indexed Bitcoin blocks and enumerates the fields returned, which distinguishes it from sibling tools like market_btc_chain_tip or market_btc_network_stats. It lacks an explicit verb like 'list' or 'fetch', but the meaning is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this tool when you need the latest Bitcoin blocks indexed by the explorer. It does not explicitly contrast with alternatives or state when not to use it, but the byte-identical endpoint mapping and cost note provide some practical context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_spot_pricesBitcoin spot price in fiatARead-onlyIdempotentInspect
The reference BTC price in USD plus six other fiat currencies with the quote timestamp — as a Bitcoin-native explorer publishes it, not as a venue tape. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-spot-prices?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| aud | No | |
| cad | No | |
| chf | No | |
| eur | No | |
| gbp | No | |
| jpy | No | |
| usd | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| timeSec | No |
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 behavioral context beyond that: the per-call cost, the data source type (Bitcoin-native explorer vs. venue), and an exact endpoint equivalence ('Byte-identical to GET /market/btc-spot-prices?'). This is useful and 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?
Three sentences with no waste: the first front-loads the primary purpose and currency scope, the second gives a critical cost fact, and the third provides an exact API mapping. Every sentence earns its place, and the structure is highly 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?
With an output schema present, return-value details need not be in the description. The description covers purpose, cost, source distinction, and endpoint mapping. It does not enumerate the six fiat currencies, but that is likely in the output schema; omitting them is a minor gap rather than a completeness failure.
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 schema coverage is inherently complete. The description correctly omits parameter details since none exist, meeting the baseline for 0-param tools. No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-plus-resource: 'reference BTC price in USD plus six other fiat currencies with the quote timestamp.' It also explicitly contrasts with 'venue tape,' distinguishing it from exchange spot tickers. This makes the tool's purpose immediately clear and separable from siblings like market_kraken_ticker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the data source ('as a Bitcoin-native explorer publishes it') and contrasts it with a venue tape, but it does not name alternative tools or give explicit when-to-use/when-not-to-use guidance. The cost mention ($0.001 USDC per call) adds a practical consideration, but selection guidance remains inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_btc_usd_price_historyBitcoin USD price historyARead-onlyIdempotentInspect
Daily BTC/USD closes back to the earliest point the explorer keeps, downsampled to a bounded number of points — a long-run price series without a key. Costs $0.001 USDC per call. Byte-identical to GET /market/btc-usd-price-history?timespan=6months&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | points to return (newest first slice, max 500) (default 120) | |
| timespan | No | history window (1month is rejected upstream and is therefore not offered) (default "6months") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| unit | No | |
| count | No | |
| found | No | |
| stale | No | |
| total | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| values | No | |
| timespan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds meaningful behavioral context: the $0.001 USDC cost, byte-identical equivalence to a specific GET endpoint, and downsampling to a bounded number of points. No contradiction 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 two tight sentences with no filler: it front-loads the core purpose, then adds cost and exact endpoint equivalence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, full parameter descriptions, and safety annotations, the description supplies the remaining operational facts an agent needs: cost, exact endpoint equivalence, and data-shaping behavior. Nothing essential 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?
Both parameters are fully documented in the schema, including limit defaults/max and timespan defaults plus the rejected 1month value. The description's mention of downsampling adds context, but the schema already carries the parameter semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (daily BTC/USD closes) and the operation (return a downsampled long-run price history back to the earliest point the explorer keeps). It is specific and understandable, though it does not explicitly contrast itself with sibling market_btc_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance: this is for long-run daily price closes, not spot or intraday data. It does not explicitly name alternatives or say when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_best_quoteCoinbase best bid and askARead-onlyIdempotentInspect
Level-1 book for a Coinbase product: the single best bid, the single best ask, their sizes and the book sequence number. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-best-quote?product=BTC-USD.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| time | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| spread | No | |
| askSize | No | |
| bestAsk | No | |
| bestBid | No | |
| bidSize | No | |
| product | No | |
| sequence | No | |
| auctionMode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds a cost per call ($0.001 USDC) and states byte-identical behavior to a specific GET endpoint, providing extra behavioral context 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?
Two concise sentences, front-loaded with the core purpose, followed by cost and exact endpoint equivalence. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema, the description is quite complete: it explains the data points, cost, and exact REST mirror. It could mention error behavior or scope limitations, but given the schema and annotations, little 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 schema description covers the only parameter (product) with explicit format and examples, achieving 100% coverage. The tool description adds no further parameter detail, so the 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 clearly states it returns a Level-1 book (best bid, best ask, sizes, sequence) for a specific Coinbase product, naming the exact HTTP endpoint it mirrors. This distinguishes it from siblings like market_kucoin_best_quote and market_cbex_ticker.
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 explains the tool's function and cost but does not explicitly say when to use it versus alternatives (e.g., market_cbex_ticker for more comprehensive data). The mention of cost and byte-identical REST equivalence gives context, but no direct 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.
market_cbex_candlesCoinbase OHLC candlesARead-onlyIdempotentInspect
Candles from Coinbase Exchange for the granularities its API serves (1m to 1d), oldest first, with volume per bucket. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-candles?product=BTC-USD&granularity=60&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | candles to return (max 350, the venue's own page size) (default 48) | |
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] | |
| granularity | No | candle width in seconds (default "60") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| product | No | |
| granularity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable context: the cost ($0.001 USDC per call), the exact equivalence to a specific GET endpoint, and the ordering/volume details. These go beyond the annotations and help the agent anticipate behavior, though rate limits or error handling are not mentioned.
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 two sentences with zero redundancy. The core purpose is front-loaded, followed by cost and API equivalence. Every word earns its place, making it easy for an agent to parse quickly.
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 that the tool has an output schema, return format is covered. The description communicates cost, supported granularities, ordering, and volume, which are the key operational details for a read-only, idempotent call. It lacks mention of authentication or rate limits, but these are likely inferred from the venue and annotations. Overall, it's complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptive text for all three parameters (limit, product, granularity), so the baseline is 3. The description adds the granularity range ('1m to 1d') which clarifies allowed values beyond the schema's vague 'candle width in seconds', but it does not meaningfully explain the 'limit' format or other nuances. Thus, it offers only a slight enhancement 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?
The description clearly states that the tool returns candles from Coinbase Exchange, specifying the granularity range (1m to 1d), ordering (oldest first), and inclusion of volume per bucket. It distinguishes itself from other exchange-specific candle tools by naming the venue, and the title adds 'OHLC' clarity. This is a specific verb+resource definition.
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 notes the supported granularities and the cost per call, which imply when this tool is appropriate (e.g., for Coinbase data with standard granularities). However, it does not explicitly compare against alternative candle tools (like market_kraken_ohlc or market_okx_candles) or state when not to use it. The 'byte-identical' reference gives a sense of exactness but no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_clockCoinbase exchange clockARead-onlyIdempotentInspect
The venue's own server time plus the offset against this server — the check that stops a signed order being rejected for clock drift. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-clock?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| iso | No | |
| note | No | |
| epoch | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| skewMs | No | |
| source | No | |
| roundTripMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive nature. The description adds meaningful behavioral information beyond annotations: it costs $0.001 USDC per call, which is important for cost-aware agents. It also clarifies that it returns server time plus offset, which is useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, information-dense sentences cover function, usage rationale, cost, and endpoint equivalence. There is no filler or repetition, and the most important behavioral detail (clock-drift purpose) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only clock endpoint with a detailed output schema, the description is complete. It explains what the tool returns, why it matters, the cost, and even an alternate endpoint representation. An agent has everything it needs to invoke and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100%, so the schema already fully documents the input surface. The description adds no parameter-specific detail, but with 0 params the baseline is 4 and nothing more is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific resource (Coinbase exchange clock) and the exact value it provides: the venue's server time plus offset against this server, used to prevent clock-drift order rejection. This distinguishes it from the many other market_* sibling tools, especially the other market_cbex_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the practical context for use: it is the check that stops a signed order being rejected for clock drift, implying it should be called before signing orders. It does not explicitly name alternatives or when not to use it, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_product_specCoinbase product specificationARead-onlyIdempotentInspect
The venue's own rules for one product: tick and lot size, minimum order, whether it is margin/post-only/limit-only, and whether trading is enabled. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-product-spec?product=BTC-USD.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| ts | No | |
| base | No | |
| note | No | |
| found | No | |
| quote | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| status | No | |
| display | No | |
| postOnly | No | |
| limitOnly | No | |
| cancelOnly | No | |
| auctionMode | No | |
| fxStablecoin | No | |
| baseIncrement | No | |
| marginEnabled | No | |
| statusMessage | No | |
| maxSlippagePct | No | |
| minMarketFunds | No | |
| quoteIncrement | No | |
| highBidLimitPct | No | |
| tradingDisabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and open-world behavior. The description adds the per-call cost ($0.001 USDC) and byte-identical equivalence to a REST endpoint, which are valuable behavioral details not present in the annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: it front-loads what the tool returns, then states cost and exact API equivalence. Every sentence adds 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 a 100% documented parameter, an output schema, and rich annotations, the description covers the tool's purpose, contents, cost, and exactness. An agent has enough to select and 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% and the single "product" parameter has a clear description. The description minimally reinforces that the parameter selects a single product and mentions a BTC-USD example in the endpoint, but it does not add substantial 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 clearly identifies the resource as "the venue's own rules for one product" and enumerates the exact contents (tick/lot size, minimum order, order type restrictions, trading enabled). This distinguishes it from market data siblings like market_cbex_ticker or market_cbex_candles because it is about product configuration, not current market state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: an agent should call this when it needs the product specification for a Coinbase product. However, it does not provide explicit when-to-use versus alternatives, exclusions, or pointers to related tools such as market_cbex_ticker or other exchange spec tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_statsCoinbase 24h and 30d statsARead-onlyIdempotentInspect
Open, high, low, last and both the 24h and 30-day traded volume for a Coinbase product — what a session actually cost and moved. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-stats?product=BTC-USD.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| low | No | |
| high | No | |
| last | No | |
| note | No | |
| open | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| product | No | |
| volume24h | No | |
| volume30d | No | |
| change24hPct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, the description adds valuable behavioral context: it explicitly states the cost per call ($0.001 USDC) and confirms byte-identical response to a specific GET endpoint. These are not covered by annotations and help the agent anticipate side effects (billing) and verify output compatibility. No contradiction 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?
Two sentences with zero wasted words. The output contents are front-loaded, then the cost and endpoint follow. Essential information is packed efficiently without redundancy. This is an exemplar of concise, structured documentation.
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 (one parameter, point-in-time stats) and has an output schema (as indicated by context signals), so the description does not need to explain return structure. It covers the key non-obvious aspects: cost, endpoint mapping, and the data payload. It does not touch on potential errors or product availability, but those are likely covered by schema or are not critical. Overall, it's complete enough for an agent 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?
The schema already provides full documentation for the single 'product' parameter, including a description and required flag (100% coverage). The description adds minimal extra meaning—it does not elaborate on the product format beyond what the schema says, though the endpoint example implicitly reinforces it. Given high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the resource (Coinbase product stats) and the exact data returned (OHLC, 24h and 30d volume). It distinguishes itself from siblings like market_cbex_ticker or market_cbex_candles by listing its specific fields, and even provides the canonical HTTP endpoint. This leaves no ambiguity about what the tool does.
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 does not provide any guidance on when to use this tool versus the many similar Coinbase market tools (ticker, candles, best_quote). It does not mention alternatives or exclusions. The only context is the cost disclosure, but no explicit usage scenario is given. An agent must infer when this tool is appropriate, which is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_tickerCoinbase Exchange tickerARead-onlyIdempotentInspect
Last trade, top of book, 24h volume and the exchange's own clock for one Coinbase product. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-ticker?product=BTC-USD.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| ask | No | |
| bid | No | |
| note | No | |
| size | No | |
| time | No | |
| found | No | |
| price | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| volume | No | |
| product | No | |
| tradeId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: the cost per call ($0.001 USDC) and the exact byte-identical API endpoint. It also confirms the inclusion of the exchange's own clock, which is a subtle behavioral detail. No contradiction 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 three tight sentences: core data first, cost second, API equivalence third. Every sentence adds distinct information and there is no filler. The front-loaded enumeration of returned fields makes the tool's purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one well-documented parameter, a rich output schema, and annotations covering safety and idempotency, the description provides sufficient context: the data fields, the pricing, the API mapping, and the single-product scope. There are no missing return-value explanations because the output schema exists. Nothing critical is omitted 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 input schema has 100% coverage with a detailed description of the product parameter, including examples and required flag. The description only restates 'one Coinbase product' without adding new parameter semantics. Baseline 3 is appropriate since the schema already carries the full 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?
The description explicitly enumerates the data returned: 'Last trade, top of book, 24h volume and the exchange's own clock', and scopes it to 'one Coinbase product'. This clearly distinguishes it from sibling tools like market_cbex_best_quote (which returns only best quote) or market_cbex_clock (which returns only the clock). The API equivalence further pins down its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the enumerated data fields and product scope, but it does not explicitly state when to prefer this tool over alternatives such as market_cbex_trades or market_cbex_stats. There is no when-not guidance or naming of sibling tools that cover different use cases. The API endpoint reference is informative but not a routing guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_cbex_tradesCoinbase recent tradesARead-onlyIdempotentInspect
Public fill feed for a Coinbase product: price, size, side, timestamp and trade id, newest first. Costs $0.001 USDC per call. Byte-identical to GET /market/cbex-trades?product=BTC-USD&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | trades to return (max 200) (default 25) | |
| product | Yes | Coinbase Exchange product id, BASE-QUOTE (BTC-USD, ETH-USD, SOL-USD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| trades | No | |
| product | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the description adds valuable extras: the feed is public, costs $0.001 USDC per call, returns newest-first data, and is byte-identical to a named GET endpoint. This goes well beyond the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and key returned fields, then the cost and exact endpoint equivalence. No filler or redundant restatement of 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 simple two-parameter read-only market tool with a full input schema and an output schema, this description is complete: it states what is returned, ordering, public availability, cost, and exact REST identity. An agent has everything needed to select and 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 coverage is 100%, with both product and limit already well-described. The description adds little parameter-level detail beyond the endpoint example, but it does not need to compensate because the schema already defines valid product IDs, defaults, and the limit maximum.
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: it is a public fill feed for a Coinbase product, listing price, size, side, timestamp, and trade id. The phrase 'newest first' plus the explicit REST endpoint identity clearly distinguishes it from related market_cbex_ticker/candles/stats tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case obvious: get recent public fills for a Coinbase product. It does not explicitly name alternatives or exclusion criteria, but the 'Public fill feed' wording and the byte-identical endpoint comparison give clear context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_deribit_funding_windowDeribit funding over a windowARead-onlyIdempotentInspect
The funding Deribit's own get_funding_rate_value reports as having accrued on one instrument between two timestamps — a window total, not a snapshot rate. Costs $0.001 USDC per call. Byte-identical to GET /market/deribit-funding-window?instrument=BTC-PERPETUAL&hours=20.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | look-back window in whole hours (max 720) (default 24) | |
| instrument | Yes | Deribit instrument name, CURRENCY-SUFFIX (BTC-PERPETUAL, ETH-25SEP26) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| endMs | No | |
| found | No | |
| hours | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| startMs | No | |
| instrument | No | |
| annualizedPct | No | |
| fundingOverWindow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state read-only, idempotent, non-destructive behavior, so the description doesn't need to repeat that. It adds useful context: cost per call ($0.001 USDC) and the exact endpoint mapping, which goes beyond the schema. It doesn't describe pagination or response format, but that is minor given the annotations and 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?
Two sentences: the first defines the core behavior and distinguishes from snapshots, the second states cost and endpoint mapping. No filler, and the key distinction is front-loaded. Efficient and to the 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?
Given the tool is simple (2 params, clear schema, output schema exists) and annotations cover safety, the description is sufficient for an agent to invoke correctly. It could mention that 'hours' must be an integer or the output fields, but these are minor given the strong schema coverage. The cost information is a bonus.
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 covers both parameters with descriptions (instrument format examples, hours default and max), so the description adds little beyond that. It does provide example values like BTC-PERPETUAL in the endpoint, which slightly reinforces the parameter format, but the schema already carries the majority of the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the accrued funding on a single Deribit instrument over a window, contrasting it with a snapshot rate. It names the underlying API endpoint and example parameters, making the purpose unambiguous and distinct from sibling tools like market_deribit_index or market_okx_funding_rate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for windowed funding totals rather than snapshot rates, and mentions cost per call, which helps with selection. It doesn't explicitly name alternative tools for snapshot funding or when to use them, but the context is clear enough for an agent to choose this tool for windowed queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_deribit_indexDeribit index priceARead-onlyIdempotentInspect
Deribit's own index price for an underlying plus the estimated delivery price it settles against — the reference a funding or settlement check needs. Costs $0.001 USDC per call. Byte-identical to GET /market/deribit-index?indexName=btc_usd.
| Name | Required | Description | Default |
|---|---|---|---|
| indexName | No | Deribit index name (only the ones measured) (default "btc_usd") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| indexName | No | |
| indexPrice | No | |
| estimatedDeliveryPrice | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds valuable behavioral details beyond that: a per-call cost of $0.001 USDC and byte-identical equivalence to a specific REST endpoint. These are not in annotations and meaningfully inform usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, and the core purpose is front-loaded. The cost and endpoint equivalence are added efficiently without repetition. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter), has an output schema, and annotations cover safety. The description supplies purpose, cost, and an exact endpoint reference, leaving nothing essential missing for an agent 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?
The input schema already documents the single optional parameter indexName with its description and default value, and schema coverage is 100%. The description does not add further parameter-level detail (e.g., allowed values or format), so it does not exceed the 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 clearly states the tool returns Deribit's own index price plus the estimated delivery price it settles against, and frames it as the reference for funding/settlement checks. This distinguishes it from sibling tools like market_deribit_funding_window (funding rates) and market_deribit_volatility_index (volatility). The verb is implicit but the resource and scope are precise.
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 concrete use case (funding/settlement checks) and notes it is the authoritative index price. However, it does not explicitly say when not to use it or name alternative tools for similar data, so it falls short of an explicit exclusion. The context is clear enough for an agent to infer suitability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_deribit_instrumentsDeribit instrument listARead-onlyIdempotentInspect
The contract rules Deribit publishes per instrument: tick size, contract size, min trade amount, max leverage, fee rates, state and expiry — perpetuals only or the whole listed futures set. Costs $0.001 USDC per call. Byte-identical to GET /market/deribit-instruments?currency=BTC&family=perpetual&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | instruments to return (max 50) (default 12) | |
| family | No | just -PERPETUAL, or every listed future including dated ones (default "perpetual") | |
| currency | No | currency to list instruments for (default "BTC") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| family | No | |
| listed | No | |
| reason | No | |
| source | No | |
| currency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive; the description adds a per-call cost of $0.001 USDC and the fact that the response is byte-identical to a specific Deribit GET endpoint. This is useful operational context beyond the annotations. No contradictions 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?
Three short sentences, each carrying distinct information: what the data is, what it costs, and what endpoint it matches. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, an idempotent/read-only annotation set, and all three optional parameters documented in the schema, the description covers the remaining operational details: cost, endpoint identity, and scope flexibility. Nothing an agent needs to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters with constraints and defaults (100% coverage), so a baseline of 3 applies. The description adds a concrete byte-identical query string example, clarifying how the parameters combine, and reinforces the family choice with 'perpetuals only or the whole listed futures set'. This lifts it slightly above 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 the exact payload ('tick size, contract size, min trade amount, max leverage, fee rates, state and expiry') and scope ('perpetuals only or the whole listed futures set'), and anchors to a GET endpoint. It clearly distinguishes from other market_* siblings by exchange and data type. The absence of an explicit verb is compensated by the 'GET' endpoint reference.
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 clear context: it returns Deribit instrument contract rules and lets the agent choose between perpetuals and all listed futures via the family parameter. It does not explicitly name alternatives or exclusion conditions, but the scope and endpoint identity are enough to select this tool over other exchange-specific instrument specs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_deribit_volatility_indexDeribit daily volatility indexARead-onlyIdempotentInspect
Historical daily candles of Deribit's DVOL-style volatility index for an underlying — the implied-vol level options are priced off, as OHLC per day. Costs $0.001 USDC per call. Byte-identical to GET /market/deribit-volatility-index?currency=BTC&days=20.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | days of history (max 365) (default 30) | |
| currency | No | underlying whose volatility index Deribit publishes (default "BTC") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| days | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| currency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile. The description adds genuinely useful behavioral context beyond that: a per-call cost of $0.001 USDC and byte-identical equivalence to a specific REST endpoint. No contradiction 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?
Two tight sentences with no filler: the first fronts the resource and data format, the second adds cost and API equivalence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-param, read-only tool with a full output schema and documented annotations, the description is complete. It covers purpose, data shape, cost, and endpoint equivalence; nothing essential 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?
Param schema coverage is 100%, and both params are already well documented with defaults and constraints. The description adds little beyond restating 'underlying' and showing the currency/days example in the endpoint URL, so it does not materially expand on 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 ('Deribit's DVOL-style volatility index') and the exact data shape ('Historical daily candles ... as OHLC per day'). It distinguishes itself from siblings like market_deribit_index by emphasizing historical candle data rather than a current spot/level reading.
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 makes the intended use clear for anyone seeking historical daily OHLC volatility-index data, but it does not explicitly say when to choose this tool over alternatives like market_deribit_index or market_deribit_funding_window. No exclusions, prerequisites, or alternative-routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_dex_boosted_tokensBoosted DEX tokensARead-onlyIdempotentInspect
The tokens currently promoted on DexScreener, with the chain, token address, the description and links the submitter provided and the boost amount and timing — what is being pushed, not what has liquidity. Costs $0.001 USDC per call. Byte-identical to GET /market/dex-boosted-tokens?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | entries to return (max 30) (default 15) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, and non-destructive behavior. The description adds meaningful context beyond annotations by disclosing the $0.001 USDC cost, the byte-identical REST endpoint, and the promoted-token semantics. No contradiction exists.
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 information-dense: it states the resource, returned fields, the key distinction, cost, and endpoint equivalence in a few clauses. Every element earns its place, and the main semantic is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list endpoint with one optional parameter and an output schema, the description is complete. It tells the agent what data is returned, what the call costs, and that it mirrors a specific REST 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 for the single `limit` parameter is 100%, so the schema fully explains the parameter. The description only references `limit=20` in the endpoint example, adding no extra parameter meaning, which keeps this at the 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?
The description clearly identifies the resource as tokens currently promoted on DexScreener and enumerates the fields returned (chain, address, description, links, boost amount and timing). It also distinguishes this from 'what has liquidity,' which helps an agent separate it from liquidity-focused DEX tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is for promoted tokens, not liquidity-backed tokens, and it notes the cost per call. It does not explicitly name sibling alternatives or state when not to use it, but the 'pushed, not liquidity' contrast is enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_dex_pair_detailOne DEX pool in fullARead-onlyIdempotentInspect
Everything DexScreener publishes for a single pool: the pair's chain, dex and label, price in USD and native, liquidity split, volume and buy/sell counts per window, and 5m/1h/6h/24h price change. Costs $0.001 USDC per call. Byte-identical to GET /market/dex-pair-detail?chain=base&pair=0x5D0bC342178C8Fe2c2f9A9fcC9D52555C99936db.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | pool / pair address on that chain [required] | |
| chain | Yes | DexScreener chain id (base, ethereum, solana, …) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| fdv | No | |
| url | No | |
| note | No | |
| pair | No | |
| txns | No | |
| chain | No | |
| dexId | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| labels | No | |
| reason | No | |
| source | No | |
| volume | No | |
| chainId | No | |
| priceUsd | No | |
| baseToken | No | |
| marketCap | No | |
| quoteToken | No | |
| pairAddress | No | |
| priceChange | No | |
| priceNative | No | |
| liquidityUsd | No | |
| liquidityBase | No | |
| liquidityQuote | No | |
| pairCreatedAtMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond these annotations: the per-call cost of $0.001 USDC and the fact that the response is byte-identical to a specific GET endpoint, which helps an agent reason about cost and reproducibility. No contradictions 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?
Three sentences with no filler: a compact field list, a cost warning, and an endpoint reference. The information is front-loaded and every sentence adds useful context, though the first sentence is a long enumeration that could have been tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with an output schema and clear annotations, the description is nearly complete. It covers purpose, cost, and even gives an exact example call. It does not mention potential errors or chain availability, but these are minor given the output schema and simple input requirements.
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 already have clear descriptions ('pool / pair address' and 'DexScreener chain id'). The tool description does not add parameter-specific meaning beyond what the schema provides, so the 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 clearly identifies the tool as returning full DexScreener data for a single DEX pool and enumerates the specific fields (price, liquidity, volume, buy/sell counts, price changes). Stating 'single pool' distinguishes it from sibling list/search tools like market_dex_token_pairs without needing to open their 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?
The description implies the tool is for retrieving detailed data about one known pool, but it does not explicitly state when to choose this over alternatives such as market_dex_token_pairs or market_dex_boosted_tokens. Context is present but exclusions and alternative routing are left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_dex_token_pairsEvery pool holding a tokenARead-onlyIdempotentInspect
All DEX pools DexScreener knows for one token address across chains, each with price, liquidity, 24h volume, trade counts, price change, FDV and market cap. Costs $0.001 USDC per call. Byte-identical to GET /market/dex-token-pairs?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | pools to return, most liquid first (max 30) (default 10) | |
| address | Yes | token address, EVM 0x.. or Solana base58 mint [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| pools | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful context beyond that: the per-call cost of $0.001 USDC, that results span chains, and that the response is byte-identical to a GET endpoint. This is useful behavioral disclosure without contradicting 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 two sentences with no filler. The core function is front-loaded, and the second sentence packs two high-value facts (cost and exact endpoint equivalence) into one line. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are already covered. The description sufficiently covers purpose, scope, cost, endpoint behavior, and the address requirement. An agent has enough context to call this tool correctly without further research.
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 baseline is 3. The description adds mild context by saying 'one token address across chains' and showing an example URL, but it does not explain parameter semantics beyond what the schema already provides for 'address' and 'limit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise resource and scope: 'All DEX pools DexScreener knows for one token address across chains' and enumerates the returned fields (price, liquidity, volume, FDV, etc.). This clearly distinguishes it from siblings like market_dex_pair_detail (single pair detail) and get_token_price (simple price 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?
The description gives clear context for when to call it: when you need the complete multi-chain pool set for a single token address. It also notes the $0.001 cost and the exact byte-identical endpoint, which helps the agent decide whether this is the right tool. It does not explicitly name alternatives or exclusions, so it stops 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.
market_fear_greed_indexCrypto fear and greed indexARead-onlyIdempotentInspect
The alternative.me fear-and-greed reading: index value, its label and the seconds until the next update, for today or a whole history back to 365 days. Costs $0.001 USDC per call. Byte-identical to GET /market/fear-greed-index?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | daily readings to return, newest first (max 365) (default 1) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| latestValue | No | |
| timeUntilUpdateSec | No | |
| latestClassification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint). The description adds genuine context beyond annotations: the cost per call, the returned fields, the historical range, and byte-identical behavior to a REST endpoint. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core behavior is front-loaded, followed by cost and endpoint equivalence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and only one optional parameter, the description is complete: it covers scope, cost, response contents, and endpoint equivalence. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single 'limit' parameter. The description does not add parameter-level semantics beyond the schema, which fits the baseline of 3 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?
The description states a specific verb and resource: it returns the alternative.me fear-and-greed reading, including index value, label, and seconds until next update. It also clarifies the temporal scope (today or history back to 365 days), which differentiates it from the many exchange-data siblings in the market_* group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a fear-and-greed index reading is needed) and notes the $0.001 USDC cost, but it does not name alternative tools or state explicit exclusions. Since no sibling covers the same data source, the omission is minor, but the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_gate_candlesGate OHLC candlesARead-onlyIdempotentInspect
OHLCV per bucket from Gate with the quote volume and the window-closed flag, oldest first. Costs $0.001 USDC per call. Byte-identical to GET /market/gate-candles?pair=BTC_USDT&interval=5m&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Gate currency_pair, BASE_QUOTE [required] | |
| limit | No | candles (max 1000) (default 48) | |
| interval | No | Gate candle interval (only the values its API accepted when measured) (default "5m") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| interval | No | |
| currency_pair | No |
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 behavioral context beyond that: cost per call, ordering (oldest first), included fields (quote volume, window-closed flag), and byte-identical endpoint equivalence, which helps the agent predict output and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core result, then cost, then exact API equivalence. Every sentence serves a distinct purpose with no fluff 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?
Given an output schema exists, the description does not need to explain return value details. It covers the essential call context: what the tool returns, ordering, cost, and an exact endpoint reference. It omits potential rate-limit warnings, but these are not required given the annotations and schema richness.
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 fully documents pair, limit, and interval. The description adds only an example URL with concrete values (pair=BTC_USDT&interval=5m&limit=20), which is illustrative but does not add new semantic meaning beyond what the schema already states.
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: returns OHLCV buckets from Gate with quote volume and window-closed flag, ordered oldest first. It clearly distinguishes from sibling tools like market_gate_depth, market_gate_ticker, and market_gate_trades by naming the exact data modality and exchange.
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 usage context is implied through the tool name and description: use it to get candle data from Gate. It does not explicitly name alternative tools or provide when-not-to-use guidance, though the exact endpoint example and cost information give practical usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_gate_depthGate order bookARead-onlyIdempotentInspect
Resting bids and asks from Gate for one pair, with the venue's own sequence fields and the derived top-of-book spread. Costs $0.001 USDC per call. Byte-identical to GET /market/gate-depth?pair=BTC_USDT&levels=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Gate currency_pair, BASE_QUOTE [required] | |
| levels | No | levels per side (max 50) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asks | No | |
| bids | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| bestAsk | No | |
| bestBid | No | |
| updateMs | No | |
| spreadPct | No | |
| currency_pair | No |
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 safety profile is covered. The description adds valuable behavioral context: the cost ($0.001 USDC per call), the byte-identical equivalence to a REST endpoint, and the derived top-of-book spread. It doesn't mention pagination or rate limits, but for a read-only depth snapshot this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The core function is front-loaded, the cost is stated, and the byte-identical endpoint reference is a compact way to give implementers a precise contract. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only order book tool with an output schema, annotations, and 100% schema coverage, the description is nearly complete. It covers what the tool returns (bids, asks, sequence fields, spread), the cost, and the exact endpoint equivalence. The only minor gap is not describing the output schema's structure, but the output schema itself handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds the 'levels per side' default and max via the schema, and the description's 'one pair' clarifies the pair parameter's scope. However, the description doesn't add much beyond the schema: it doesn't explain the format of levels or how the spread is derived. 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 ('Resting bids and asks'), a resource ('from Gate for one pair'), and the venue's own sequence fields plus derived top-of-book spread. It clearly distinguishes this from sibling tools like market_gate_ticker and market_gate_trades, and the byte-identical note ties it to a specific endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need resting order book depth for a Gate pair, with sequence fields and spread. It doesn't explicitly name alternatives or exclusions, but the byte-identical endpoint reference and the venue-specific naming make the context clear. A small gap: no explicit 'use market_gate_ticker for last price' style guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_gate_pair_specGate pair specificationARead-onlyIdempotentInspect
How Gate defines a currency pair: base and quote, the flat fee percent, order-size floors and caps, precision and whether it is tradable. Costs $0.001 USDC per call. Byte-identical to GET /market/gate-pair-spec?pair=BTC_USDT.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Gate currency_pair, BASE_QUOTE [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| ts | No | |
| fee | No | |
| base | No | |
| note | No | |
| type | No | |
| found | No | |
| quote | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| st_tag | No | |
| up_rate | No | |
| slippage | No | |
| base_name | No | |
| down_rate | No | |
| quote_name | No | |
| trade_quotes | No | |
| trade_status | No | |
| max_base_amount | No | |
| min_base_amount | No | |
| price_precision | No | |
| amount_precision | No | |
| max_quote_amount | No | |
| min_quote_amount | No | |
| market_order_max_money | No | |
| market_order_max_stock | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds two valuable behavioral facts: the cost per call ($0.001 USDC) and that the output is byte-identical to a specific REST endpoint. This goes beyond the annotations and provides actionable context about side effects and equivalence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, starting with the core purpose ('How Gate defines a currency pair') followed by a list of included fields. The cost and equivalence note are added as a separate sentence, keeping the main intent clear. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description doesn't need to explain return values. The tool is simple (one parameter), and the description covers purpose, cost, and equivalence. Annotations handle the read-only/idempotent behavior. The only gap is the lack of usage guidance, which is already scored separately, but for completeness it's adequate.
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 parameter 'pair' has a clear description ('Gate currency_pair, BASE_QUOTE [required]'). The description does not add extra meaning about how to format the pair or any nuances beyond what the schema already provides. Since the schema is complete, the description does not need to compensate, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it explains how Gate defines a currency pair, listing specific fields like base/quote, fee percent, floors/caps, precision, and tradability. This is a specific verb+resource combination and distinguishes it from generic market data tools. However, it doesn't explicitly differentiate from other exchange pair-spec tools (e.g., market_kraken_pair_spec), so it lacks explicit sibling differentiation.
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 no guidance on when to use this tool versus alternatives. It mentions the tool is byte-identical to a GET endpoint but does not state when a caller should choose this over other market_* tools. There is no explicit 'use this when...' or 'instead of...' language, leaving usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_gate_tickerGate spot tickerARead-onlyIdempotentInspect
Last, best bid and ask with size, 24h percent change and both base and quote volume for one Gate currency pair. Costs $0.001 USDC per call. Byte-identical to GET /market/gate-ticker?pair=BTC_USDT.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Gate currency_pair, BASE_QUOTE [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| last | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| low_24h | No | |
| high_24h | No | |
| lowest_ask | No | |
| base_volume | No | |
| highest_bid | No | |
| lowest_size | No | |
| highest_size | No | |
| quote_volume | No | |
| currency_pair | No | |
| change_percentage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true, idempotentHint true, and destructiveHint false. The description adds meaningful behavior beyond annotations: it discloses a per-call cost ('Costs $0.001 USDC per call') and specifies byte-identical behavior to a REST endpoint, providing concrete execution expectations without contradicting 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?
Two sentences with no filler: the first sentence front-loads the data fields and scope, the second adds cost and endpoint equivalence. Every word contributes useful information, and the structure is immediately 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?
For a single-parameter, read-only ticker tool with an output schema and rich annotations, the description is complete: it specifies the market, data fields, pair format example, cost, and exact REST equivalence. Nothing critical is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema describes 'pair' as 'Gate currency_pair, BASE_QUOTE [required]'. The description reinforces this by scoping to 'one Gate currency pair' and providing a concrete example format via the endpoint 'pair=BTC_USDT', which adds clarity beyond the bare schema text.
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 explicitly states the resource ('Gate currency pair'), the specific data returned ('Last, best bid and ask with size, 24h percent change and both base and quote volume'), and the scope ('one Gate currency pair'). This clearly distinguishes it from sibling tools like market_gate_candles, market_gate_depth, and market_gate_trades by enumerating ticker-specific fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as market_kraken_ticker or market_gate_depth. The description covers what the tool returns but does not state selection criteria, exclusions, or mention other tools, leaving the agent to infer usage from the name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_gate_tradesGate recent tradesARead-onlyIdempotentInspect
Gate's public fill feed for one pair: side, price, base amount, millisecond timestamp and trade id. Costs $0.001 USDC per call. Byte-identical to GET /market/gate-trades?pair=BTC_USDT&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Gate currency_pair, BASE_QUOTE [required] | |
| limit | No | trades (max 100) (default 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| trades | No | |
| currency_pair | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds the significant $0.001 USDC per-call cost and the byte-identical REST endpoint equivalence. This is useful behavioral context beyond the annotations, though it does not discuss rate limits or 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?
Three compact sentences: the first states purpose and returned fields, the second surfaces the cost, and the third gives endpoint equivalence. Every sentence earns its place and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter market feed with an output schema and readOnly/idempotent annotations, the description covers purpose, output contents, cost, and endpoint behavior. Nothing essential to correctly invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both pair and limit documented in the input schema. The description's example URL reinforces the BASE_QUOTE format and limit=20, but does not add new parameter semantics beyond what the schema already states.
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 (Gate's public fill feed), scopes it to one trading pair, and enumerates the returned fields (side, price, base amount, millisecond timestamp, trade id). This distinguishes it from sibling market_gate_candles, market_gate_depth, and market_gate_ticker without needing to inspect their 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?
The description clearly implies trade-level market data use, but it does not explicitly state when to choose this tool over the sibling Gate market tools or mention exclusions. The public feed wording provides context, yet an agent is left to infer alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_github_repo_healthGitHub repository healthARead-onlyIdempotentInspect
Keyless read of the public GitHub API for one repository: archived, forked, how long since the last push, open issue count, stars, license, topics — plus the flags an integrator actually acts on (archived, no license, unmaintained window). Does not read the source, the dependency tree, or anything private, and does not clone or build. Costs $0.001 USDC per call. Byte-identical to GET /market/github-repo-health?owner=modelcontextprotocol&repo=registry.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | repository name [required] | |
| owner | Yes | repository owner or org [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| fork | No | |
| note | No | |
| risk | No | |
| flags | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| sizeKb | No | |
| source | No | |
| topics | No | |
| archived | No | |
| fullName | No | |
| pushedAt | No | |
| createdAt | No | |
| openIssues | No | |
| stargazers | No | |
| licenseSpdx | No | |
| defaultBranch | No | |
| lastPushAgeDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds value beyond that: it discloses cost ($0.001 USDC per call), that access is keyless, and the precise read boundaries. It does not cover rate limits, which keeps 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 output fields, the scoping exclusions, and the cost are all front-loaded and dense. The trailing 'Byte-identical to GET /market/...' sentence is useful for integrators but slightly redundant with the rest; overall it remains efficient with 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?
An output schema exists, so return-value detail is not required and the description appropriately focuses on scope, cost, and boundaries. Combined with full annotation coverage and complete schema documentation, an agent has what it needs, though a note on rate limits or auth prerequisites would round it 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 description coverage is 100% for the two parameters (owner, repo), so the schema already documents their meaning. The description embeds an example URL carrying owner/repo values but adds no syntax or constraint 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 and resource ('Keyless read of the public GitHub API for one repository') and enumerates the exact fields returned (archived, forked, last push, open issues, stars, license, topics) plus the actionable flags. An agent can tell this apart from sibling market_* tools 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 scopes the tool well ('Does not read the source, the dependency tree, or anything private, and does not clone or build'), which implies when it applies. However, it never names an alternative tool or an explicit when-to-use/when-not condition, so usage is only implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_hl_asset_contextHyperliquid per-asset contextARead-onlyIdempotentInspect
The live risk frame Hyperliquid publishes per perp: funding, open interest, mark and oracle price, premium and 24h notional volume. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-asset-context?coin=BTC.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Hyperliquid coin symbol as its meta lists it (BTC, ETH, HYPE, kPEPE) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| coin | No | |
| note | No | |
| found | No | |
| midPx | No | |
| stale | No | |
| caveat | No | |
| markPx | No | |
| reason | No | |
| source | No | |
| funding | No | |
| premium | No | |
| oraclePx | No | |
| dayNtlVlm | No | |
| impactPxs | No | |
| prevDayPx | No | |
| dayBaseVlm | No | |
| openInterest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety profile (readOnly, idempotent, non-destructive). The description adds two valuable behavioral details: the monetary cost of $0.001 USDC per call and the fact that it is byte-identical to a specific HTTP endpoint. These go beyond annotations and inform the agent about side effects (cost) and implementation fidelity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences achieve maximum information density: the first states the data contents, the second covers cost and endpoint equivalence. No fluff or redundancy; the most important functional info appears 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?
For a read-only, single-parameter tool with an output schema and rich annotations, the description is reasonably complete. It covers data content, cost, and endpoint mapping. It does not mention rate limits, data freshness, or error behavior, but these are not critical given the simplicity and the presence of an 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 schema already fully documents the only parameter 'coin' with a clear description and required flag (100% coverage). The description does not add any additional semantic detail about the parameter beyond what the schema 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 names the exact resource ('live risk frame Hyperliquid publishes per perp') and enumerates the specific fields it returns (funding, open interest, mark/oracle price, premium, 24h notional volume). This is a precise verb+resource statement that clearly differentiates it from other Hyperliquid market tools like market_hl_mid_price or market_hl_funding_history, which target narrower data slices.
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 does not explicitly state when to use this tool versus any of the other Hyperliquid siblings (e.g., market_hl_candles, market_hl_order_book, market_hl_perp_specs). It only describes the data contents without giving selection criteria or excluding alternatives, so an agent has no direct guidance on routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_hl_candlesHyperliquid OHLC candlesARead-onlyIdempotentInspect
candleSnapshot for one Hyperliquid perp: open, high, low, close, volume and order count per bucket, oldest first, bounded to the window each interval can carry. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-candles?coin=BTC&interval=1m&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Hyperliquid coin symbol as its meta lists it (BTC, ETH, HYPE, kPEPE) [required] | |
| limit | No | candles (max 500) (default 48) | |
| interval | No | candle interval (default "1m") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| coin | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, openWorldHint, non-destructive). The description adds meaningful behavioral details: cost per call ($0.001 USDC), ordering (oldest first), and the bounding 'to the window each interval can carry'. These go beyond annotation defaults without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core return data and ordering. The cost and API equivalence notes are relevant and concise. No redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return details are covered by structure. The description adds cost, ordering, and window-bounding—enough for an agent to correctly invoke and interpret results. No missing prerequisites or error conditions are critical for a read-only, idempotent tool of this 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% with descriptions for coin, limit, and interval. The description adds some nuance ('bounded to the window each interval can carry') that clarifies how limit interacts with interval, but it largely relies on the schema for parameter meanings. This meets the baseline for well-documented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('candleSnapshot for one Hyperliquid perp') and lists the exact fields returned (open, high, low, close, volume, order count) plus ordering ('oldest first'). It clearly distinguishes this from other exchange candle tools by naming Hyperliquid, and the byte-identical reference to a specific REST endpoint leaves no ambiguity.
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 clearly indicates this is for Hyperliquid perpetuals, giving context for when to use it among many market_* siblings. It does not explicitly name alternative tools or state when not to use it, but the 'for one Hyperliquid perp' phrase provides enough context to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_hl_funding_historyHyperliquid funding historyARead-onlyIdempotentInspect
Every funding print Hyperliquid has for a perp coin since a look-back point: rate, premium component and the settlement timestamp. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-funding-history?coin=BTC&hours=20.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Hyperliquid coin symbol as its meta lists it (BTC, ETH, HYPE, kPEPE) [required] | |
| hours | No | look-back in whole hours (max 720) (default 72) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| coin | No | |
| note | No | |
| count | No | |
| found | No | |
| hours | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| latestRate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable context beyond that: the $0.001 USDC per-call cost and the byte-identical equivalence to a REST endpoint. This gives the agent practical operational knowledge not present in the 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?
Three sentences with no filler: the data content is front-loaded, followed by cost, then REST equivalence. Every sentence adds operational value, and the structure is easy to scan.
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 a rich output schema, complete parameter descriptions, and safety annotations, the description covers purpose, cost, and endpoint equivalence. Nothing critical is missing for an agent to select and invoke this simple read-only 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 fully documents both coin and hours parameters. The description adds no parameter-specific meaning beyond referring to a look-back point, which is already captured by the hours parameter description. 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 clearly states the tool returns every Hyperliquid funding print for a perp coin, including rate, premium component, and settlement timestamp. It names the exact exchange, asset type, and data fields, distinguishing it from other funding-related sibling tools like market_okx_funding_rate and market_deribit_funding_window.
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 makes it clear this is the Hyperliquid-specific funding history tool, so an agent can infer when to use it. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_hl_mid_priceHyperliquid mid priceARead-onlyIdempotentInspect
The venue's own mid for one or more Hyperliquid perp coins, straight from allMids — the reference price a funding or liquidation check starts from. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-mid-price?coins=BTC,ETH.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | No | comma list of up to 12 Hyperliquid coin symbols (default BTC,ETH,HYPE) (default ["BTC","ETH","HYPE"]) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| mids | No | |
| note | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| matched | No | |
| requested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive hints. The description adds valuable behavioral context: the cost per call ($0.001 USDC) and the fact that it is byte-identical to a REST endpoint. It 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?
Two sentences with no fluff. The main purpose is front-loaded, and the cost and byte-identical note are placed as secondary details. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple one-parameter tool with a rich output schema and comprehensive annotations, the description is complete. It covers purpose, source, cost, and use case without missing anything an agent needs 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% for the single 'coins' parameter, including default values. The description does not add meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the venue's own mid price for Hyperliquid perp coins, sourced from allMids. It explicitly positions it as the reference price for funding or liquidation checks, which distinguishes it from sibling tools like market_hl_order_book or market_hl_ticker.
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 a concrete use case (funding/liquidation reference) but does not explicitly mention alternatives or when not to use it. It implies a quick read-only price lookup, which is sufficient context given the tool's simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_hl_order_bookHyperliquid L2 bookARead-onlyIdempotentInspect
Hyperliquid's l2Book for one perp: the resting bid and ask levels with price, size and opaque-order count, plus the book time. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-order-book?coin=BTC.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Hyperliquid coin symbol as its meta lists it (BTC, ETH, HYPE, kPEPE) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asks | No | |
| bids | No | |
| coin | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| bestAsk | No | |
| bestBid | No |
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 safety profile is covered. The description adds valuable non-obvious behaviors: the $0.001 USDC per-call cost, the byte-identical relationship to a GET endpoint, and the fact that the order count is opaque. No contradictions 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?
Three lean sentences: first describes the output content, second states cost, third anchors the tool to its REST equivalent. Each sentence carries independent value and the most identifying information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only snapshot tool with a full input schema, rich annotations, and an output schema present, the description covers all non-obvious context: data contents, per-call cost, and exact REST identity. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the lone 'coin' parameter is documented with examples (BTC, ETH, HYPE, kPEPE) and a note that it follows Hyperliquid meta naming. The description's 'for one perp' slightly reinforces the parameter's role but adds no meaning beyond what the schema already provides, so a 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 resource (Hyperliquid's l2Book for one perp), the exact fields (resting bid/ask levels with price, size, opaque-order count, and book time), and names the equivalent REST endpoint. This clearly distinguishes it from sibling market_hl_* tools (mid_price, candles, asset_context) and from other exchanges' depth tools (market_gate_depth, market_kraken_depth).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need Hyperliquid's L2 depth snapshot for a single perp) and disambiguates scope with 'one perp', but it never explicitly names alternatives or states exclusions, such as 'for a single mid price use market_hl_mid_price'. The usage context is evident but 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_hl_perp_specsHyperliquid perp specificationsARead-onlyIdempotentInspect
Per-coin contract rules from Hyperliquid's own meta: size decimals, maximum leverage and the margin table id, for the whole listed universe or filtered by substring. Costs $0.001 USDC per call. Byte-identical to GET /market/hl-perp-specs?contains=PEPE&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | coins to return (max 100) (default 25) | |
| contains | No | case-insensitive substring filter on the coin name (default null) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| universe | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior. The description adds valuable non-obvious traits: a $0.001 USDC cost per call, the upstream source ('Hyperliquid's own meta'), and byte-identical equivalence to a specific REST endpoint. These go beyond the structured 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?
Three sentences, each earning its place: core purpose/data, cost, and endpoint equivalence. Front-loaded with the essential 'per-coin contract rules' and data fields before cost/source details.
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 only two optional string parameters, an output schema, and read-only/idempotent annotations, the description covers everything an agent needs: data contents, filtering option, cost, and a byte-identical reference endpoint. No critical behavioral or input context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents `limit` and `contains` with defaults, constraints, and case-insensitivity. The description reinforces substring filtering and shows a sample endpoint usage, but adds no materially new 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?
Description states a specific resource ('Per-coin contract rules from Hyperliquid's own meta') and enumerates exact data fields: size decimals, maximum leverage, and margin table id. It also clearly defines the scope ('whole listed universe or filtered by substring'), which distinguishes it from sibling market_hl_* tools like market_hl_mid_price or market_hl_order_book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use it when you need per-coin Hyperliquid perpetual contract rules, either for all listed coins or filtered by coin name substring. It doesn't explicitly name alternatives or exclusions, but its precise scope makes the appropriate use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_jup_new_tokensNewest Solana tokensARead-onlyIdempotentInspect
The most recently listed tokens on Jupiter's token API: mint, name, supply, market cap, liquidity, launch pool and the audit flags Jupiter attaches — a launch feed, not a recommendation. Costs $0.001 USDC per call. Byte-identical to GET /market/jup-new-tokens?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | tokens to return (max 30) (default 15) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds valuable behavioral context: the cost per call ($0.001 USDC) and that it is byte-identical to a specific REST endpoint, plus the presence of audit flags. No contradiction 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?
Two sentences: the first concisely lists the resource and fields, the second adds cost and endpoint reference. Information is front-loaded, and there is no filler or 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 an output schema present and annotations covering safety, the description provides all necessary context: scope, cost, endpoint equivalence, and the nature of the data. An agent has everything needed to decide when and how to call this 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?
The only parameter, 'limit', is fully documented in the schema with type, max, and default. The description does not add further semantic details, and since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing the most recent tokens from Jupiter's token API, enumerating specific fields (mint, name, supply, market cap, liquidity, launch pool, audit flags) and explicitly stating it is a launch feed, not a recommendation. This distinguishes it from siblings like market_jup_token_prices and market_jup_token_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 states the tool provides a launch feed and not a recommendation, implying its use for monitoring new listings rather than for investment decisions. Though it does not explicitly name alternatives, the clear context and the 'not a recommendation' disclaimer provide sufficient guidance on when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_jup_token_pricesJupiter USD prices by mintARead-onlyIdempotentInspect
Current USD price, 24h change, liquidity, decimals and the block the quote came from for up to 20 Solana mints, in one call — with an explicit list of which mints returned nothing. Costs $0.001 USDC per call. Byte-identical to GET /market/jup-token-prices?mints=So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.
| Name | Required | Description | Default |
|---|---|---|---|
| mints | Yes | comma list of up to 20 Solana token mints [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| priced | No | |
| prices | No | |
| reason | No | |
| source | No | |
| notPriced | No | |
| requested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond that: the exact fields returned, the explicit missing-mint list, the per-call cost, and byte-identical equivalence to a REST endpoint. No contradictions 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 a single dense sentence that front-loads the returned fields and batch scope, then adds cost and endpoint equivalence. Every clause carries useful information, 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 one-parameter tool with a rich output schema and strong annotations, the description covers all essential operational details: what is returned, the batch limit, missing-mint behavior, cost, and REST equivalence. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already well described as a comma-separated list of up to 20 Solana token mints. The description reinforces this with concrete example mints, but does not add substantial new 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 names the exact resource (Jupiter USD prices by Solana mint), the specific data returned (price, 24h change, liquidity, decimals, quote block), and the batching scope (up to 20 mints). It clearly distinguishes itself from single-token price tools by emphasizing the batch call and explicit missing-mint reporting.
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 makes the usage context clear: use this when you need current USD prices and related fields for up to 20 Solana mints in one call. It does not explicitly name alternatives or exclusion criteria, but the batch-oriented framing and cost disclosure imply 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.
market_jup_token_searchJupiter token searchARead-onlyIdempotentInspect
Solana tokens matching a name or symbol query, with market cap, FDV, liquidity, holder count, price-change and volume statistics and Jupiter's own audit flags. Costs $0.001 USDC per call. Byte-identical to GET /market/jup-token-search?query=bonk&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | tokens to return (max 20) (default 8) | |
| query | Yes | token name, symbol or mint prefix to search for [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| query | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No |
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 valuable behavioral context: the per-call cost of $0.001 USDC and the inclusion of Jupiter's audit flags, which are not inferred from annotations. It also confirms the operation is a search, consistent with annotations. No 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 description is two sentences with no fluff. It front-loads the core function, then adds cost and endpoint reference. Every sentence earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are covered. The description adds the critical cost factor and confirms the data scope. It does not mention pagination or edge cases, but for a read-only search tool with full schema coverage, this is adequate. The only minor gap is no mention of rate limits or error behavior, but that is not essential given the 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%, with both query and limit fully described in the input schema. The description does not add any details beyond the schema, such as query format nuances or limit behavior. Baseline 3 is appropriate since the schema carries the parameter 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?
The description clearly states the tool returns Solana tokens matching a name or symbol query, with market statistics and Jupiter audit flags. It uses specific verbs and a resource, making the purpose evident. However, it does not explicitly differentiate from sibling tools like search_tokens, though the Jupiter-specific scope is clear enough.
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?
There is no guidance on when to use this tool versus alternatives. The description mentions the cost and the endpoint, but does not state when to prefer this over other search or market tools. No exclusions or alternative routing is provided, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kraken_depthKraken order bookARead-onlyIdempotentInspect
Top of the Kraken book for one pair: resting bid and ask levels with size and price-count, plus the derived spread and mid. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-depth?pair=XBTUSD&count=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair as the venue spells it: XBTUSD, ETHUSD, SOLUSD [required] | |
| count | No | levels per side (max 50) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asks | No | |
| bids | No | |
| note | No | |
| pair | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| bestAsk | No | |
| bestBid | No | |
| spreadPct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: the $0.001 USDC cost per call and byte-identical equivalence to a specific REST endpoint, which helps the agent understand exact behavior and cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The core function is front-loaded, and the cost and endpoint equivalence each earn their 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 two-parameter read-only tool with a rich output schema and strong annotations, the description covers behavior, cost, and exact endpoint equivalence. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both pair and count. The description's example query reinforces the parameters but does not add significant new semantic 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?
The description states a specific verb and resource: 'Top of the Kraken book for one pair' with resting bid/ask levels, size, price-count, spread, and mid. This clearly distinguishes it from Kraken ticker, spread, and other venue depth tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is for Kraken top-of-book depth for a single pair. It does not explicitly name alternatives or exclusions, but the scope is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kraken_ohlcKraken OHLC candlesARead-onlyIdempotentInspect
OHLCV candles for one Kraken pair: open, high, low, close, volume and trade count per bucket, oldest first. Only the intervals the venue actually serves are offered. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-ohlc?pair=XBTUSD&interval=15&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair as the venue spells it: XBTUSD, ETHUSD, SOLUSD [required] | |
| limit | No | how many candles (max 720) (default 48) | |
| interval | No | candle width in minutes (360 is rejected by Kraken; 30 and 720 are unmeasured and therefore not offered) (default "15") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| pair | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, lowering the bar. The description adds genuinely new behavioral facts: a $0.001 USDC cost per call, byte-identical response to a specific GET endpoint, venue-served interval restrictions, and oldest-first ordering. There is no contradiction with 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 three sentences with the core output front-loaded, followed by interval constraints, cost, and endpoint equivalence. Every sentence earns its place, and there is no filler or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and parameters fully described, the description covers the remaining operational essentials: interval availability, per-call cost, response ordering, and exact endpoint equivalence. No critical missing context remains for a read-only market-data 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 the schema already documents pair spelling, limit max/default, and interval constraints. The description adds output-ordering context but does not materially improve parameter understanding beyond what the schema already provides, 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 clearly identifies the resource: OHLCV candles for one Kraken pair, specifying the exact fields (open, high, low, close, volume, trade count) and the oldest-first ordering. The 'Kraken' qualifier plus 'candles' distinguishes it from sibling Kraken tools such as market_kraken_depth, market_kraken_trades, and market_kraken_ticker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for Kraken OHLCV data and notes interval restrictions, but it does not explicitly state when to prefer this over alternative market-data or candle tools. With many sibling candle tools across exchanges, explicit routing guidance would be more helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kraken_pair_specKraken pair specificationARead-onlyIdempotentInspect
How Kraken itself defines a pair: base and quote, decimal precision, order size limits, the public leverage ladder and the first two fee tiers. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-pair-spec?pair=XXBTZUSD.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair key as stored by the venue (XXBTZUSD) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| lot | No | |
| base | No | |
| note | No | |
| pair | No | |
| found | No | |
| quote | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| status | No | |
| wsname | No | |
| altname | No | |
| costMin | No | |
| orderMin | No | |
| tickSize | No | |
| baseClass | No | |
| marginCall | No | |
| marginStop | No | |
| quoteClass | No | |
| leverageBuy | No | |
| lotDecimals | No | |
| costDecimals | No | |
| leverageSell | No | |
| pairDecimals | No | |
| lotMultiplier | No | |
| longPositionLimit | No | |
| shortPositionLimit | No |
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 safety profile is covered. The description adds valuable context beyond annotations by disclosing the $0.001 USDC per-call cost and stating the result is byte-identical to a specific GET endpoint. This gives the agent concrete expectations about cost and response equivalence.
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 two sentences with no filler. The first sentence front-loads the core purpose and contents, and the second adds the two high-value practical details: cost and exact endpoint equivalence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent tool with an output schema and full schema coverage, the description is complete. It discloses cost, endpoint equivalence, and the specific contents returned. Nothing essential is missing for an agent to decide whether to call it and how 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?
The schema covers the single required parameter with a clear description and an example, so the description does not need to add much. It reinforces the parameter through the URL example pair=XXBTZUSD. This is a baseline-3 case: the schema carries the semantic load and the description adds no substantial new param 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?
The description specifies the exact resource — Kraken's own definition of a pair — and enumerates its contents: base/quote, decimal precision, order size limits, leverage ladder, and fee tiers. It also cites the matching GET endpoint, which anchors the action as a read. This clearly separates it from sibling Kraken market tools like depth, ticker, OHLC, and trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to call this tool versus alternatives such as market_kraken_depth, market_kraken_ticker, or pair-spec tools from other venues. The content list implies it is for pair metadata, but there is no explicit when-to-use or when-not-to-use instruction. The agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kraken_spreadKraken bid/ask spread historyARead-onlyIdempotentInspect
Quoted spread samples for a Kraken pair with the mean spread in basis points — how expensive it is to cross that venue right now. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-spread?pair=XBTUSD&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair as the venue spells it: XBTUSD, ETHUSD, SOLUSD [required] | |
| limit | No | spread samples (max 500) (default 60) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| pair | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| samples | No | |
| meanSpreadBps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses a per-call cost of $0.001 USDC and states it is byte-identical to a specific GET endpoint, which is non-obvious and actionable. This 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?
Three short sentences, each earning its place: what the tool returns, the cost, and the exact endpoint mapping. The core meaning is front-loaded before the cost and equivalence details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and only two parameters, the description covers the essential behavioral context: cost, endpoint identity, and what the metric means. It could add a word about the historical window implied by the title, but nothing critical 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 applies; pair and limit are already described in the input schema. The endpoint example (pair=XBTUSD&limit=20) reinforces parameter syntax but adds no substantial 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?
The description uses a specific verb and resource: 'Quoted spread samples for a Kraken pair' with the mean in basis points, telling the agent exactly what data it returns. The 'how expensive it is to cross that venue' phrase also separates it from related siblings like market_kraken_depth, market_kraken_ticker, and market_kraken_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear consumption context: this measures the cost to cross the venue now, so an agent can infer when it is relevant. It does not name alternatives or state when-not-to-use, so it stops 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.
market_kraken_tickerKraken spot tickerARead-onlyIdempotentInspect
Last trade, best bid and ask with size, 24h volume, VWAP and 24h high/low for one Kraken spot pair, straight from the venue's own tape. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-ticker?pair=XBTUSD.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair as the venue spells it: XBTUSD, ETHUSD, SOLUSD [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| ask | No | |
| bid | No | |
| last | No | |
| note | No | |
| pair | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| low24h | No | |
| reason | No | |
| source | No | |
| askSize | No | |
| bidSize | No | |
| high24h | No | |
| vwap24h | No | |
| trades24h | No | |
| volume24h | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's job is lighter. It adds valuable context beyond annotations: the $0.001 USDC per-call cost and the byte-identical equivalence to a specific REST endpoint, which informs cost and compatibility expectations. It does not mention rate limits or auth, but openWorldHint plus the cost disclosure make this adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first packs the data fields and source, the second covers cost and byte-identical endpoint. No filler, no restatement of annotations, and the critical scope ('one Kraken spot pair') is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, a complete output schema, and annotations covering safety and idempotence, the description fully covers what an agent needs to call this tool: it states the data returned, the source, the cost, and the endpoint equivalence. Nothing essential 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?
Schema description coverage is 100%, and the schema already documents the pair format with examples. The description only repeats 'one Kraken spot pair' and uses 'XBTUSD' in the endpoint string, adding no material semantics beyond the schema. Baseline 3 is appropriate because the schema carries the parameter 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?
The description names the exact resource (one Kraken spot pair) and the precise data delivered (last trade, best bid/ask with size, 24h volume, VWAP, high/low). It also states the data source ('straight from the venue's own tape') and the byte-identical endpoint, clearly distinguishing it from other market_* siblings like depth or OHLC tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by enumerating the ticker-specific fields, but it does not explicitly state when to choose this tool over alternatives (e.g., market_kraken_depth, market_kraken_ohlc). There is no when-not-to-use guidance or mention of sibling tools, so an agent must infer the use case from the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kraken_tradesKraken recent tradesARead-onlyIdempotentInspect
The last trades printed on a Kraken pair, each with price, size, side and exchange timestamp — tape activity, not a summary. Costs $0.001 USDC per call. Byte-identical to GET /market/kraken-trades?pair=XBTUSD&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Kraken pair as the venue spells it: XBTUSD, ETHUSD, SOLUSD [required] | |
| limit | No | trades to return (max 200) (default 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| pair | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| trades | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: the $0.001 USDC cost per call and byte-identical equivalence to a specific REST endpoint. No contradiction 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?
Three short sentences with no filler: purpose and return fields come first, followed by cost and endpoint equivalence. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only trade listing tool with full schema coverage, annotations, and an output schema, the description is complete. It adds cost and endpoint details that structured data does not provide, and nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both pair and limit. The description does not add parameter-specific meaning beyond the endpoint example, 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 clearly states the tool returns the last trades for a Kraken pair, including price, size, side, and exchange timestamp. It explicitly distinguishes itself from a summary ('tape activity, not a summary'), which helps separate it from ticker/OHLC 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?
The description implies when to use it: when raw trade tape activity is needed rather than a summary. However, it does not explicitly name alternative tools or state when not to use it, leaving some routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kucoin_best_quoteKuCoin best bid and askARead-onlyIdempotentInspect
KuCoin's level-1 book for a symbol in one call: inside price, both sides with size, the book sequence and the venue timestamp. Costs $0.001 USDC per call. Byte-identical to GET /market/kucoin-best-quote?symbol=BTC-USDT.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | KuCoin symbol, BASE-QUOTE in upper case (BTC-USDT, SOL-USDT) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| size | No | |
| time | No | |
| found | No | |
| price | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| bestAsk | No | |
| bestBid | No | |
| sequence | No | |
| bestAskSize | No | |
| bestBidSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/idempotent safety, and the description adds valuable beyond-annotation context: the $0.001 USDC per-call cost and the byte-identical equivalence to the REST endpoint. This gives the agent practical expectations about side effects and pricing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: what it returns, what it costs, and how it maps to the HTTP API. Each sentence earns its place, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, one-call read tool with rich annotations and an output schema, nothing essential is missing. It tells the agent the exact return contents, the cost, and the underlying REST identity, so the description is complete for selection and 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 parameter is already fully documented in the input schema. The description only repeats the symbol example in the endpoint equivalence and adds no new semantic meaning, matching the baseline for full schema 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 precise verb and resource: KuCoin's level-1 book for a symbol in one call. It enumerates exactly what is returned (inside price, both sides with size, book sequence, venue timestamp), which separates it from ticker/candles siblings even without naming them.
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?
Clear context is given: this is the single-call level-1 quote tool for KuCoin symbols, as opposed to other market data tools. It doesn't explicitly say 'use X instead for ticker/candles', so it stops short of the full when/when-not guidance that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kucoin_candlesKuCoin OHLC candlesARead-onlyIdempotentInspect
KuCoin candles with base and quote (transaction-value) volume per bucket, oldest first, across every type value the venue answered. Costs $0.001 USDC per call. Byte-identical to GET /market/kucoin-candles?symbol=BTC-USDT&type=1min&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | KuCoin candle type (default "1min") | |
| limit | No | candles (max 1500; KuCoin answers at most 1500 per call) (default 48) | |
| symbol | Yes | KuCoin symbol, BASE-QUOTE in upper case (BTC-USDT, SOL-USDT) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| type | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable behavioral context beyond that: a per-call cost of $0.001 USDC, exact byte-identical equivalence to a specific GET endpoint, and ordering/volume semantics. No contradiction 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?
Three concise sentences, each earning its place: the first states the resource and key data traits, the second discloses cost, and the third gives an exact endpoint equivalence. Information is front-loaded and there is 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 a rich output schema and annotations covering read-only/idempotent behavior, the description is largely complete. It adds cost, ordering, volume details, and endpoint equivalence. The phrase 'across every type value the venue answered' is slightly ambiguous, but not enough to prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents symbol, type, and limit. The description adds output-level semantics like base/quote volume and oldest-first ordering, but it does not add much parameter-specific 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?
The description clearly identifies the resource as KuCoin OHLC candles and specifies distinctive output traits: base and quote volume per bucket, oldest-first ordering, and coverage of every type value the venue answered. This distinguishes it from sibling candle tools such as market_okx_candles or market_gate_candles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when KuCoin candle data is needed. It does not explicitly name alternatives or exclusions, but the venue-specific wording and the byte-identical endpoint reference make the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_kucoin_tickerKuCoin 24h statsARead-onlyIdempotentInspect
KuCoin's own 24h statistics for a symbol: last, best bid/ask with size, 24h high/low, change, base and quote volume, average price and the taker/maker fee rates it applies. Costs $0.001 USDC per call. Byte-identical to GET /market/kucoin-ticker?symbol=BTC-USDT.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | KuCoin symbol, BASE-QUOTE in upper case (BTC-USDT, SOL-USDT) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| buy | No | |
| low | No | |
| vol | No | |
| high | No | |
| last | No | |
| note | No | |
| sell | No | |
| time | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| volValue | No | |
| changeRate | No | |
| changePrice | No | |
| averagePrice | No | |
| makerFeeRate | No | |
| takerFeeRate | No | |
| makerCoefficient | No | |
| takerCoefficient | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description adds meaningful behavioral context: it costs $0.001 USDC per call and is byte-identical to a specific REST endpoint. These details go beyond the structured annotations and clarify cost and exact data provenance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the main purpose, then adds cost and endpoint identity. The list of statistics is dense but useful, and there is no filler. It could be slightly shorter, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single well-documented parameter, a provided output schema, and safety annotations, the description does not need to explain return values. It adds the important cost and byte-identical endpoint details, making the tool's behavior sufficiently complete 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 symbol parameter is already fully documented with format and examples. The description adds no additional parameter-level meaning beyond calling it a symbol, but the schema is sufficient, 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 clearly identifies the resource as KuCoin's 24h statistics for a symbol and enumerates the returned fields (last, bid/ask, high/low, volume, fees). It does not use an explicit verb like 'get' or 'fetch', but the intent is unambiguous and the exchange scope distinguishes it from other market tickers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for KuCoin 24h market data by naming the data source and the fee rates, which helps differentiate it from a best-quote tool. However, it does not explicitly state when to choose this over sibling tickers like market_gate_ticker or market_kucoin_best_quote, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_llama_asset_price_historyToken price historyARead-onlyIdempotentInspect
Hourly or daily USD price points for one token reference (network:address) from DefiLlama's coin API, with the symbol and confidence it attaches to the series. Costs $0.001 USDC per call. Byte-identical to GET /market/llama-asset-price-history?ref=coingecko:bitcoin&period=1h&span=20.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | asset reference as network:identifier [required] | |
| span | No | how many points (max 720) (default 48) | |
| period | No | point spacing (default "1h") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| ref | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| period | No | |
| prices | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| decimals | No | |
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, and non-destructive behavior. The description adds valuable behavioral context beyond this: a per-call cost of $0.001 USDC, the DefiLlama API source, and byte-identical equivalence to a specific REST endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both necessary: the first front-loads the core output semantics, and the second adds cost and exact endpoint identity. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value details are already covered. The description supplies the remaining operational context an agent needs: source, pricing, ref format, period granularity, and exact endpoint equivalence. Nothing essential 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 meaning by clarifying ref as 'network:address', explaining period via 'Hourly or daily', and providing a concrete example ref (coingecko:bitcoin) through the endpoint illustration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (one token reference from DefiLlama's coin API) and the output (hourly or daily USD price points, symbol, confidence). It is easily distinguished from siblings like market_llama_price_snapshot because of the explicit 'history' framing and the exact GET endpoint mapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: the tool is for historical hourly or daily USD price series for a single token reference. However, it does not explicitly say when to prefer this over alternatives such as market_llama_price_snapshot or get_token_price, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_llama_chain_tvl_historyChain TVL historyARead-onlyIdempotentInspect
Daily total-value-locked history for one chain from DefiLlama's own series, downsampled to the window you ask for — the trend line, not a snapshot. Costs $0.001 USDC per call. Byte-identical to GET /market/llama-chain-tvl-history?chain=Ethereum&days=20.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | daily points to return (max 3650) (default 365) | |
| chain | No | chain as DefiLlama names it (only measured names) (default "Ethereum") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| days | No | |
| note | No | |
| rows | No | |
| chain | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| latestTvlUsd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safe/read-only profile is covered by annotations. The description adds valuable behavioral context: the response is downsampled to the requested window and is byte-identical to a specific GET endpoint, including cost. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what it returns, how it behaves (downsampled, trend line), and operational facts (cost, byte-identical endpoint). Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent historical-data tool with an output schema present, the description is complete. It covers the trend-line behavior, windowing, cost, and REST equivalence. Nothing needed 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% for two params, so baseline is 3. The description adds meaning by explaining that 'days' controls the downsampled window and that 'chain' uses DefiLlama naming; the cost disclosure adds operational semantics. However, the description doesn't elaborate on allowed chain names or date formatting, so it earns a 4 rather than 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?
Description states a specific verb+resource: 'Daily total-value-locked history for one chain from DefiLlama's own series, downsampled to the window you ask for — the trend line, not a snapshot.' It distinguishes itself clearly from a snapshot tool (market_llama_price_snapshot) and from chain_tvl (which is a sibling point-in-time TVL tool).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want a historical TVL trend series rather than a snapshot. It names the data source (DefiLlama's own series) and mentions cost and byte-identical REST equivalence. It doesn't explicitly exclude alternatives or state when not to use it, but the trend-vs-snapshot contrast gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_llama_price_snapshotBatch token pricesARead-onlyIdempotentInspect
Current USD price, symbol, decimals and confidence for up to 10 network:address references in one paid call — the cheapest way to mark a portfolio. Costs $0.001 USDC per call. Byte-identical to GET /market/llama-price-snapshot?refs=coingecko:bitcoin,base:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | Yes | comma list of up to 10 network:identifier refs [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| priced | No | |
| prices | No | |
| reason | No | |
| source | No | |
| notPriced | No | |
| requested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds valuable behavioral context beyond those: it is a paid call costing $0.001 USDC and is byte-identical to a specific GET endpoint, which clarifies side effects and cost expectations.
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 dense sentences, each earning its place: the first states output, limit, and use case; the second states cost; the third gives the exact REST equivalent. The most decision-relevant information is front-loaded, and there is 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 one required string parameter, full schema coverage, existing output schema, and safety annotations, the description covers everything needed for invocation: what is returned, how many refs are allowed, the cost, and the exact endpoint semantics. No critical selection or invocation information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by providing a concrete refs example (coingecko:bitcoin,base:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) and clarifying the network:identifier format and limit, which helps the agent construct valid input beyond the schema's brief description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact output fields (USD price, symbol, decimals, confidence), the resource type (network:address references), and the batch limit (up to 10). It also distinguishes itself from siblings by emphasizing 'one paid call' and 'cheapest way to mark a portfolio,' making it clearly a batch snapshot tool rather than a history or single-price tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'the cheapest way to mark a portfolio' gives a clear use case and implies it is the preferred choice for batch portfolio valuation. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to select it over the many market_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_npm_package_risknpm package supply-chain riskARead-onlyIdempotentInspect
One keyless read of the public npm registry for a package: does it ship an install-time script (the way malicious packages run code at install), is the released version deprecated, how old is the last publish, how many maintainers and dependencies, is there signed provenance, and what flags come out of those facts. Static metadata only: it does NOT execute the package, scan its source, or claim it is safe. Costs $0.001 USDC per call. Byte-identical to GET /market/npm-package-risk?name=left-pad.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | npm package name (optionally scoped) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| risk | No | |
| flags | No | |
| found | No | |
| scope | No | |
| stale | No | |
| caveat | No | |
| latest | No | |
| reason | No | |
| source | No | |
| license | No | |
| depsCount | No | |
| deprecated | No | |
| provenance | No | |
| publishedAt | No | |
| unpackedSize | No | |
| versionCount | No | |
| installScripts | No | |
| maintainerCount | No | |
| hasInstallScript | No | |
| lastPublishAgeDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world, but the description adds genuinely new behavioral facts: the $0.001 USDC cost per call, that it is a keyless read, and that it is byte-identical to GET /market/npm-package-risk. The explicit non-execution / non-scanning disclaimer clarifies the safety boundary beyond what 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?
Front-loads purpose, then bounds scope, cost, and endpoint equivalence. The opening sentence is dense with a long enumeration of returned facts, but every clause carries information an agent needs; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return formatting need not be described, and the description still previews the facts and flags returned. Combined with cost, keyless nature, and scope exclusions, 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 100% and there is a single required 'name' parameter already documented in the schema, so the baseline is 3. The description adds only a concrete example ('?name=left-pad') and a note that the value is an npm package name, without format rules beyond the schema's own guidance.
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 ('read of the public npm registry for a package') and enumerates exactly what facts it returns: install-time script presence, deprecation, last publish age, maintainers/dependencies, signed provenance, and derived flags. No sibling tool covers npm supply-chain risk, so the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when it applies and explicitly bounds it with 'Static metadata only: it does NOT execute the package, scan its source, or claim it is safe.' However, it names no alternative tool, so an agent must infer there is no competing option rather than being routed by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_npm_tree_riskDirect-dependency risk roll-up for one npm packageARead-onlyIdempotentInspect
One paid call that reads the package AND each of its direct dependencies (bounded, in published order) from the public npm registry, then rolls up what actually gets executed on install: which dependencies carry pre/postinstall scripts, which are deprecated, which ship without signed provenance, which are single-maintainer or unpublished-for-two-years. Returns the per-dependency rows, the counts, a verdict line, and an explicit list of what this cannot see. Static registry metadata only — it does not resolve a lockfile, walk the transitive tree beyond direct dependencies, download or execute any package, or compare against the name you meant to type. Costs $0.001 USDC per call. Byte-identical to GET /market/npm-tree-risk?name=left-pad.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | npm package name (optionally scoped) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| deps | No | |
| name | No | |
| note | No | |
| risk | No | |
| found | No | |
| scope | No | |
| stale | No | |
| caveat | No | |
| latest | No | |
| reason | No | |
| rollup | No | |
| source | No | |
| sources | No | |
| verdict | No | |
| cannotSee | No | |
| rootFlags | No | |
| directChecked | No | |
| failedSources | No | |
| rootDeprecated | No | |
| dependencyCount | No | |
| rootHasInstallScript | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds material context beyond them: exact price ($0.001 USDC per call), bounded traversal in published order, static-registry-only constraint, an explicit 'what this cannot see' list, and byte-identical equivalence to a GET endpoint. This is unusually complete behavioral disclosure.
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 value proposition and every sentence carries information (scope, roll-up factors, exclusions, cost, endpoint equivalence). It is longer than typical but dense rather than padded, with only minor compression possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure need not be described, and the description already states that per-dependency rows, counts, a verdict line, and an exclusion list are returned. Cost, scope boundaries, and limitations are all covered, leaving nothing an agent needs 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?
Only one parameter and schema coverage is 100%, so the schema already documents the name input. The description's 'optionally scoped' note merely restates what the schema says, adding no new syntax or format guidance.
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 (reads the package and each direct dependency) and resource (npm registry metadata) with explicit scope, then names exactly what it rolls up (install scripts, deprecation, provenance, maintainer/publish age). It is clearly distinguishable from the sibling market_npm_package_risk because it operates on direct dependencies rather than a single package.
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 clear usage context ('one paid call', static metadata only) and a strong exclusion list: no lockfile resolution, no transitive walk, no download/execute, no typo comparison. The only gap is that it never names the sibling tool to use for those excluded cases, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_okx_candlesOKX OHLC candlesARead-onlyIdempotentInspect
Mark, base and quote volume per bucket for an OKX instrument, oldest first, across the bar widths the venue serves. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-candles?instId=BTC-USDT&bar=1m&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| bar | No | OKX bar width (default "1m") | |
| limit | No | candles (max 300) (default 48) | |
| instId | Yes | OKX instrument id, BASE-QUOTE (BTC-USDT, ETH-USDT-SWAP) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| bar | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| instId | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it discloses the cost ($0.001 USDC per call), the ordering (oldest first), and the byte-identical equivalence to a specific REST endpoint. This goes beyond annotations and helps an agent understand side effects and exactness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core function, then cost and exact endpoint equivalence. Every sentence earns its place; no filler or repetition of schema details.
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 an output schema, so return values need no description. Annotations cover safety and idempotence. The description covers cost, ordering, and endpoint equivalence. The only minor gap is not listing valid bar values or explaining the default limit behavior, but the schema already provides defaults and the output schema exists. Complete enough for an agent 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 description coverage is 100%, so the schema already documents all three parameters (instId, bar, limit). The description adds the notion of 'bar widths the venue serves' and 'per bucket' but doesn't enumerate valid bar values or explain limit semantics beyond what the schema says. Baseline 3 is appropriate because the schema carries the parameter documentation 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?
The description states a specific verb ('Mark, base and quote volume per bucket') and resource ('OKX instrument'), and distinguishes itself from sibling candle tools by naming the venue (OKX) and the exact endpoint it mirrors. It is immediately clear this is the OKX-specific OHLC candle tool, not a generic market tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for OKX instruments and bar widths, and the byte-identical endpoint reference gives a precise contract. It doesn't explicitly say when to use this over market_okx_ticker or market_okx_trades, but the candle-specific language and venue naming provide clear context. No exclusions or alternatives are named, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_okx_depthOKX order bookARead-onlyIdempotentInspect
Price-level ladder from OKX for one instrument with per-level contract count, plus the derived top-of-book spread. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-depth?instId=BTC-USDT&levels=20.
| Name | Required | Description | Default |
|---|---|---|---|
| instId | Yes | OKX instrument id, BASE-QUOTE (BTC-USDT, ETH-USDT-SWAP) [required] | |
| levels | No | levels per side (max 25) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asks | No | |
| bids | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| instId | No | |
| reason | No | |
| source | No | |
| bestAsk | No | |
| bestBid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the read-only/idempotent annotations by disclosing a per-call cost ($0.001 USDC) and stating byte-identical equivalence to a specific REST endpoint. It also reveals the derived top-of-book spread, adding behavioral context that annotations alone do not 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?
Three short sentences, each carrying distinct value: what the tool returns, what it costs, and exactly how it maps to a REST call. All critical information is front-loaded 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?
For a two-parameter read-only tool with an output schema, the description covers purpose, scope, pricing, and endpoint identity. There is no significant missing information an agent would need to select or invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; both instId and levels are already documented with format and defaults. The description adds a concrete example URL with instId=BTC-USDT and levels=20, which is helpful but does not materially change 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 names a specific resource (OKX order book), a precise data shape (price-level ladder with per-level contract count and top-of-book spread), and a scope ('one instrument'). It clearly differentiates this depth tool from sibling ticker, trades, and candles tools on OKX, and from depth tools on other exchanges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear selection context: it is for OKX order-book depth for one instrument, which is enough to route an agent away from ticker, trade, and candle tools and from other exchanges' depth tools. It does not explicitly enumerate when not to use it or name alternatives, so it stops 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.
market_okx_funding_rateOKX perpetual fundingARead-onlyIdempotentInspect
Current and next funding rate for an OKX perpetual, with the settlement timestamps and the funding band the venue caps it at. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-funding-rate?instId=BTC-USDT-SWAP.
| Name | Required | Description | Default |
|---|---|---|---|
| instId | Yes | OKX perpetual swap id [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| instId | No | |
| method | No | |
| reason | No | |
| source | No | |
| premium | No | |
| instType | No | |
| settState | No | |
| formulaType | No | |
| fundingRate | No | |
| fundingTime | No | |
| impactValue | No | |
| interestRate | No | |
| maxFundingRate | No | |
| minFundingRate | No | |
| nextFundingTime | No | |
| prevFundingTime | No | |
| settFundingRate | No | |
| fundingRate8hPct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses a $0.001 USDC cost per call and states the response is byte-identical to a specific GET endpoint, which is actionable behavioral information. No contradiction 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?
Two concise sentences front-load the core data fields, then add cost and endpoint equivalence. Every sentence earns its place 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?
With one required parameter, rich annotations, and an output schema present, the description covers cost, exact API equivalence, and returned fields. Nothing essential is missing for an agent to select and 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 coverage is 100% and the single instId parameter is documented. The description adds value by embedding an example instId (BTC-USDT-SWAP) in the equivalent endpoint, illustrating the expected format.
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 (OKX perpetual funding rate) and the exact data returned: current and next rates, settlement timestamps, and funding band. It is clearly distinguishable from sibling OKX market tools like market_okx_ticker or market_okx_candles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear from the resource and data fields, and the byte-identical GET endpoint gives an agent an exact reference. It does not name alternatives or exclusion conditions, but the context is unambiguous enough to route selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_okx_instrument_specOKX instrument specificationARead-onlyIdempotentInspect
Contract rules as OKX defines them: tick and lot size, minimum size, price limits, whether it is a swap or option, and settlement date. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-instrument-spec?instId=BTC-USDT&instType=SPOT.
| Name | Required | Description | Default |
|---|---|---|---|
| instId | Yes | OKX instrument id, BASE-QUOTE (BTC-USDT, ETH-USDT-SWAP) [required] | |
| instType | No | which OKX instrument family to look in (default "SPOT") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| uly | No | |
| note | No | |
| ctVal | No | |
| found | No | |
| lever | No | |
| lotSz | No | |
| minSz | No | |
| stale | No | |
| state | No | |
| caveat | No | |
| ctMult | No | |
| ctType | No | |
| instId | No | |
| reason | No | |
| source | No | |
| tickSz | No | |
| baseCcy | No | |
| optType | No | |
| category | No | |
| ctValCcy | No | |
| instType | No | |
| maxLmtSz | No | |
| maxMktSz | No | |
| openType | No | |
| quoteCcy | No | |
| ruleType | No | |
| expTimeMs | No | |
| maxLmtAmt | No | |
| settleCcy | No | |
| instFamily | No | |
| listTimeMs | No | |
| positionLimit | No | |
| positionLimitPct | No | |
| tradeQuoteCcyList | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds genuinely useful context by disclosing the $0.001 USDC cost and stating that the response is byte-identical to the named OKX GET endpoint, which clarifies data provenance and exactness beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, leading with the resource and output contents, then adding cost and endpoint provenance. Every sentence earns its place without redundant 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 an output schema present and annotations covering side effects, the description does not need to explain return structure. It covers cost, provenance, and core output fields. The only minor gap is lack of guidance on which instType values to use for swap/option specs, but the schema and example provide a reasonable baseline.
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 instId and instType. The description adds only a concrete URL example with instId=BTC-USDT and instType=SPOT, which is helpful but does not materially expand parameter semantics or enumerate instType values for swap/option instruments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (OKX contract rules) and enumerates the returned fields: tick/lot size, minimum size, price limits, swap/option type, and settlement date. The 'Byte-identical to GET /market/okx-instrument-spec' line reinforces that it is a data retrieval operation and distinguishes it from other market_okx_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The field list implies when the tool is useful, but the description does not explicitly state when to use it versus sibling alternatives such as market_okx_ticker or market_okx_funding_rate. Cost and provenance are mentioned, but no exclusions or alternative-selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_okx_tickerOKX spot tickerARead-onlyIdempotentInspect
Last, bid, ask, 24h open/high/low and both base and quote volume for one OKX instrument. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-ticker?instId=BTC-USDT.
| Name | Required | Description | Default |
|---|---|---|---|
| instId | Yes | OKX instrument id, BASE-QUOTE (BTC-USDT, ETH-USDT-SWAP) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| last | No | |
| note | No | |
| askPx | No | |
| askSz | No | |
| bidPx | No | |
| bidSz | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| instId | No | |
| lastSz | No | |
| low24h | No | |
| reason | No | |
| source | No | |
| high24h | No | |
| open24h | No | |
| sodUtc0 | No | |
| sodUtc8 | No | |
| instType | No | |
| venueTsMs | No | |
| volume24h | No | |
| quoteVolume24h | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the description adds two genuinely non-redundant traits: the $0.001 USDC per-call cost and the byte-identical contract with the OKX REST endpoint, which lets the agent predict the exact response shape. This is real added context, though it stops short of disclosing failure modes 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?
Three short sentences, each earning its place: the data payload is front-loaded, followed by the cost disclosure and the exact endpoint contract. Zero filler or repetition of what the schema/annotations already state.
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 tool with a rich annotation set, a documented parameter schema, and an output schema present, the description is complete: the agent knows what data it receives, what it costs, what endpoint contract to expect, and how to specify instId. Nothing needed for a correct call 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 instId description is already strong (BASE-QUOTE format with BTC-USDT and ETH-USDT-SWAP examples plus [required]). The tool description adds nothing about the parameter beyond referencing 'one OKX instrument,' so the schema carries the load and 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 precisely enumerates the data payload (last, bid, ask, 24h open/high/low, both volumes) for 'one OKX instrument,' which unambiguously identifies this as a single-instrument spot ticker fetch. The OKX naming and the ticker-specific fields clearly distinguish it from sibling tools like market_okx_candles, market_okx_depth, and other exchanges' ticker tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is clear: the agent knows it gets one instrument's ticker snapshot, which implies when to call it. However, there are no explicit when-not-to-use statements or named alternatives (e.g., no guidance to use market_okx_candles for history or market_okx_depth for order book data), so routing decisions are 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_okx_tradesOKX recent tradesARead-onlyIdempotentInspect
Fill-by-fill tape from OKX with aggressor side, price, size and venue timestamp. Costs $0.001 USDC per call. Byte-identical to GET /market/okx-trades?instId=BTC-USDT&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | trades (max 100) (default 25) | |
| instId | Yes | OKX instrument id, BASE-QUOTE (BTC-USDT, ETH-USDT-SWAP) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| instId | No | |
| reason | No | |
| source | No | |
| trades | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations, including the $0.001 USDC per-call cost and the fact that the response is byte-identical to a specific REST endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: the core data content, the cost warning, and the exact endpoint equivalence. It is front-loaded with the most important identifying information and contains 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?
For a simple read-only tape tool with an output schema and fully documented parameters, the description is nearly complete. It covers cost, data fields, and endpoint identity; the only minor gap is explicit guidance on when to choose this over sibling trade tools.
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 parameters are already well-documented in the schema. The description's example endpoint reinforces the parameter values but does not add substantial new 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?
The description clearly identifies the tool as a fill-by-fill trade tape from OKX and lists the key fields returned: aggressor side, price, size, and venue timestamp. It distinguishes itself from sibling exchange trade tools by naming OKX and the specific endpoint, though it lacks an explicit verb like 'returns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving recent OKX trade fills, and the cost warning provides a practical consideration. However, it does not explicitly state when to prefer this tool over alternatives such as market_okx_candles or other exchange trade tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_poly_market_detailPolymarket market detailARead-onlyIdempotentInspect
Everything Polymarket's API records for one market id: the question and description, resolution source and resolver, outcomes and prices, the whole volume and liquidity series it reports, fees and the CLOB token ids. Costs $0.001 USDC per call. Byte-identical to GET /market/poly-market-detail?id=559681.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Polymarket numeric market id [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| ts | No | |
| note | No | |
| slug | No | |
| found | No | |
| stale | No | |
| active | No | |
| caveat | No | |
| closed | No | |
| reason | No | |
| source | No | |
| spread | No | |
| bestAsk | No | |
| bestBid | No | |
| endDate | No | |
| feeType | No | |
| umaBond | No | |
| outcomes | No | |
| question | No | |
| startDate | No | |
| umaReward | No | |
| volumeNum | No | |
| resolvedBy | No | |
| volume24hr | No | |
| conditionId | No | |
| description | No | |
| clobTokenIds | No | |
| liquidityNum | No | |
| makerBaseFee | No | |
| orderMinSize | No | |
| takerBaseFee | No | |
| outcomePrices | No | |
| lastTradePrice | No | |
| acceptingOrders | No | |
| enableOrderBook | No | |
| resolutionSource | No | |
| oneDayPriceChange | No | |
| resolutionStatuses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds value by disclosing the cost ($0.001 USDC per call) and the byte-identical mapping to a specific API endpoint, which informs agents about financial implications and implementation details beyond the annotation hints.
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 two sentences, with the first enumerating all returned fields and the second covering cost and endpoint equivalence. It is information-dense without excessive padding. The main purpose is front-loaded, and every clause contributes value, though it could be slightly 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?
For a single-parameter read-only tool with a high-coverage schema, an output schema (indicated in context), and annotations covering safety, the description is complete. It specifies the data returned, cost, and implementation mapping. It does not mention usage guidance or edge cases, but those are minor for this simple fetch 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% because the only parameter (id) has a clear description in the schema: 'Polymarket numeric market id [required]'. The description adds minimal extra meaning—only reiterating 'one market id' and giving an example id—which does not significantly enhance the schema's already adequate explanation. 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 ('records') and a precise resource ('one market id'), then enumerates the exact data fields returned (question, description, resolution source, outcomes, prices, volume/liquidity series, fees, CLOB token ids). This clearly distinguishes it from sibling list tools like market_poly_markets and market_poly_tags, which are implied to be broader in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by emphasizing 'one market id' but does not explicitly state when to prefer this over alternatives like market_poly_markets. It lacks a direct 'use this when...' or 'instead of...' statement. However, the purpose is clear enough that an agent can infer it is for detailed single-market data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_poly_marketsPolymarket active marketsARead-onlyIdempotentInspect
Open prediction markets ranked by the venue's own 24h volume or liquidity: question, outcomes with prices, volume, liquidity, spread, best bid/ask and the end date. Costs $0.001 USDC per call. Byte-identical to GET /market/poly-markets?order=volume24hr&limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | markets to return (max 20) (default 10) | |
| order | No | which venue field to rank by (default "volume24hr") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| order | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as safe. The description adds significant value beyond that by disclosing the $0.001 USDC cost, the byte-identical REST endpoint, and the exact content of the response, which makes the tool's behavior concrete and predictable.
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, each carrying non-redundant information: the purpose and returned fields, the cost, and the exact endpoint equivalence. The description is front-loaded with the most important purpose information and contains 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?
For a simple read-only list tool with two optional parameters and an output schema, the description is complete: it tells the agent what is returned, how it is ranked, what it costs, and what API it mirrors. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some color by tying 'order' to the venue's own liquidity/volume field, but it does not define allowed values or formats beyond the schema. The 'limit=20' in the endpoint example is a concrete sample rather than an override of the schema's default of 10, though it could be slightly clearer.
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 (open Polymarket prediction markets), the ranking dimension (the venue's own 24h volume or liquidity), and the returned fields. It reads as a fragment rather than an explicit verb phrase like 'List' or 'Get', and it does not explicitly name its sibling distinction, but the plural 'markets' plus the ranking context separates it from market_poly_market_detail and market_poly_tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate: retrieving active Polymarket prediction markets sorted by the venue's own volume or liquidity, with an exact GET endpoint equivalent. It does not explicitly state when not to use it or point to alternative sibling tools, so it stops 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.
market_poly_tagsPolymarket tag listARead-onlyIdempotentInspect
The topic tags Polymarket itself puts on markets, with each tag's id and slug — the vocabulary to filter or classify a prediction-market feed with. Costs $0.001 USDC per call. Byte-identical to GET /market/poly-tags?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | tags to return (max 50) (default 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: the per-call cost ($0.001 USDC) and the fact that this is byte-identical to a specific REST endpoint. Since readOnlyHint and idempotentHint already cover safety, these additions are valuable and non-redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence establishes the core purpose and content, and the second adds cost and endpoint equivalence. Information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, an output schema, and safety annotations, the description is complete. It covers purpose, content, cost, and equivalence to a known endpoint. No critical information is missing for an agent 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% for the single `limit` parameter, which is already documented as 'tags to return (max 50) (default 20)'. The description adds no additional parameter-level details, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (Polymarket topic tags) and the output (each tag's id and slug), and explains its role as a vocabulary for filtering/classifying prediction markets. However, it does not explicitly name or distinguish itself from sibling market_poly_* tools, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'the vocabulary to filter or classify a prediction-market feed with' gives a contextual reason for using the tool, but there is no explicit guidance on when to choose it over alternatives like market_poly_markets or market_poly_market_detail. No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_scout_address_profileExplorer address profileARead-onlyIdempotentInspect
What a Blockscout explorer knows about an address: native balance and USD rate, whether it is a verified contract, its name, proxy implementation, ENS name, holder/token flags and the token record when the address itself is a token. Costs $0.001 USDC per call. Byte-identical to GET /market/scout-address-profile?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | which Blockscout explorer to ask (default "base") | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| isScam | No | |
| reason | No | |
| source | No | |
| address | No | |
| hasLogs | No | |
| hasTokens | No | |
| proxyType | No | |
| balanceWei | No | |
| isContract | No | |
| isVerified | No | |
| publicTags | No | |
| reputation | No | |
| ensDomainName | No | |
| creationStatus | No | |
| creatorAddress | No | |
| exchangeRateUsd | No | |
| implementations | No | |
| hasTokenTransfers | No | |
| balanceUpdatedAtBlock | No | |
| creationTransactionHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld, and non-destructive behavior. The description adds valuable context beyond annotations by disclosing the $0.001 USDC cost per call and noting the request is byte-identical to a specific GET endpoint. This gives the agent practical operational expectations without contradicting 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 opens with a clear defining statement, then lists the returned fields, and finishes with cost and endpoint identity. Every sentence earns its place, and the most important scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with a full output schema and safety annotations, the description is complete: it states the data source, the fields returned, the cost, and the exact HTTP endpoint. 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 both chain and address already explained, so the baseline is 3. The description adds a concrete example URL showing chain=base and a sample address, which is mildly illustrative but does not materially expand on the schema-provided 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 clearly names the resource (an address profile from Blockscout) and enumerates the specific data fields returned: native balance, USD rate, verified-contract status, name, proxy implementation, ENS name, holder/token flags, and token record. This distinguishes it from sibling market_scout_token_profile and the chain_* address tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The field list implies the tool is appropriate for general address-profile lookups, but it never explicitly says when to prefer this over siblings such as chain_wallet_state, chain_balances, or market_scout_token_profile. No alternatives or exclusion criteria are mentioned, so usage guidance remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_scout_chain_statsExplorer chain statisticsARead-onlyIdempotentInspect
One explorer's view of its chain right now: addresses, blocks and transactions all-time and today, gas price tiers in gwei, average block time, market cap, coin price and network utilisation. Costs $0.001 USDC per call. Byte-identical to GET /market/scout-chain-stats?chain=base.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | which Blockscout explorer to ask (default "base") |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| note | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| totalBlocks | No | |
| coinPriceUsd | No | |
| gasUsedToday | No | |
| marketCapUsd | No | |
| gasPricesGwei | No | |
| totalAddresses | No | |
| totalTransactions | No | |
| transactionsToday | No | |
| averageBlockTimeMs | No | |
| coinPriceChangePct | No | |
| gasPricesUpdatedAt | No | |
| networkUtilizationPct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description need not repeat those. It adds useful context: a per-call cost of $0.001 USDC and byte-identical equivalence to a specific REST endpoint, which helps an agent understand side effects and fidelity. No contradiction 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 two sentences with no redundancy. The primary purpose is front-loaded, followed by cost and endpoint equivalence. Every sentence earns its place, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single optional param, output schema present, read-only), the description is nearly complete. It lists the returned metrics, notes the cost, and identifies the equivalent endpoint. Minor gap: it doesn't mention any refresh rate or that it's a point-in-time snapshot, but that is not critical 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 fully describes the single 'chain' parameter (which Blockscout explorer, default 'base'), achieving 100% coverage. The description adds no additional parameter details, so it meets the baseline of 3 for high schema coverage; it neither enriches nor hinders understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it returns a snapshot of chain statistics from an explorer, listing specific metrics (addresses, blocks, transactions, gas price tiers, average block time, market cap, coin price, network utilisation). This is a distinct purpose, well differentiated from siblings like chain_block_stats or market_scout_address_profile, and the 'one explorer's view' phrasing clarifies scope.
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 conveys a clear context for use (overall chain statistics) but does not explicitly state when to use it versus alternatives, nor does it mention when not to use it. It implies a high-level summary, but there are no explicit comparisons or exclusions relative to the many chain_* and market_* sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_scout_token_profileExplorer token profileARead-onlyIdempotentInspect
The explorer's own record for one ERC-20/721 token: name, symbol, type, decimals, holder count, total supply, circulating market cap, 24h volume and the USD exchange rate it quotes. Costs $0.001 USDC per call. Byte-identical to GET /market/scout-token-profile?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | which Blockscout explorer to ask (default "base") | |
| address | Yes | target address, 0x + 40 hex [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| name | No | |
| note | No | |
| type | No | |
| chain | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| symbol | No | |
| address | No | |
| holders | No | |
| iconUrl | No | |
| decimals | No | |
| volume24h | No | |
| reputation | No | |
| totalSupply | No | |
| exchangeRateUsd | No | |
| circulatingMarketCap | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to repeat safety semantics. It adds value by disclosing the $0.001 USDC charge per call and stating that the response is byte-identical to a specific GET endpoint, which is useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The purpose is front-loaded, followed by cost and endpoint identity. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema, complete parameter documentation, and rich annotations, the description only needed to add cost and endpoint semantics, which it does. Nothing essential for calling this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage, including the default chain and required address format. The description's endpoint example illustrates both parameters in context, but it does not add substantial semantic 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?
The description states a specific resource ('the explorer's own record for one ERC-20/721 token') and enumerates exactly what fields are returned. It clearly distinguishes itself from sibling tools like market_scout_address_profile or chain_token_meta by focusing on a token profile with market metrics and an exchange rate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for a single ERC-20/721 token profile and includes cost and an exact endpoint equivalence. It does not explicitly name alternatives or exclusion conditions, but the use case is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_token_verdictPlain-language risk verdict on one Base tokenARead-onlyIdempotentInspect
One call, several reads assembled into a verdict: the deepest DEX pool (liquidity, 24h volume, buy AND sell counts, FDV, pool age), what the deployed bytecode can actually be asked to do (mint, pause, blacklist, fee changes, max-wallet caps, whether ownership was renounced), and whether the token is an upgradeable proxy. Returns reasons, a risk score, and an explicit list of what it did NOT check. Static on-chain and venue evidence only — never a simulated sell and never a certification of safety. Costs $0.001 USDC per call. Byte-identical to GET /market/token-verdict?chain=base&token=0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | chain key (the bytecode read needs an EVM chain; base is the default) [required] | |
| token | Yes | token contract address to judge [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| code | No | |
| name | No | |
| note | No | |
| pool | No | |
| chain | No | |
| found | No | |
| proxy | No | |
| stale | No | |
| token | No | |
| caveat | No | |
| fdvUsd | No | |
| reason | No | |
| source | No | |
| supply | No | |
| symbol | No | |
| buys24h | No | |
| reasons | No | |
| signals | No | |
| sources | No | |
| verdict | No | |
| priceUsd | No | |
| sells24h | No | |
| cannotSee | No | |
| riskLevel | No | |
| riskScore | No | |
| disclaimer | No | |
| pairAddress | No | |
| poolAgeDays | No | |
| liquidityUsd | No | |
| marketCapUsd | No | |
| volume24hUsd | No | |
| failedSources | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses cost ($0.001 USDC per call), notes that an explicit list of unchecked items is returned, clarifies the evidence is static-only (no simulated sell, no safety certification), and even documents byte-parity with a REST endpoint. This is the behavioral context an agent needs before invoking a paid, open-world read.
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 front-loaded with the verdict payload, followed by the bytecode evidence and proxy check. It is dense but every clause earns its place; the pricing, static-evidence caveat, and endpoint-parity sentence are all load-bearing for a paid tool, though the description is on the longer side.
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 aggregating verdict tool with a declared output schema, the description covers inputs, cost, evidence scope, and explicit non-claims. The remaining gap is only that it does not name which sibling primitives an agent could call instead for narrower reads, but the output schema carries return-value detail.
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 chain and token are already documented in the schema, and the description adds no syntax or format details for them. The embedded example URL does hint at the expected token format (0x-prefixed address) and default chain (base), but this is implicit rather than explicit param guidance.
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 ('assembled into a verdict' for a Base token) and enumerates exactly what evidence is bundled: deepest DEX pool metrics, bytecode-declared capabilities, and proxy status. It is clearly distinguishable from sibling primitives like chain_bytecode_capabilities, chain_proxy_check, and market_dex_pair_detail, which each cover only a slice of this aggregated verdict.
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 sets clear scope boundaries: 'Static on-chain and venue evidence only — never a simulated sell and never a certification of safety,' which tells the agent when this tool is appropriate versus a price/simulation tool. It stops short of naming explicit alternatives, but the negative constraints are unusually strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_x402_host_demandIs one x402 seller actually being called?ARead-onlyIdempotentInspect
Demand history for a single host on this rail: thirty-day calls, unique payers, listed resources, last call timestamp, highest advertised price, and its rank among all listed hosts. The pre-purchase check an agent should run before paying an unknown endpoint. Costs $0.001 USDC per call. Byte-identical to GET /market/x402-host-demand?host=api.nansen.ai.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | hostname of the seller to check, without scheme (api.nansen.ai) [required] |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asOf | No | |
| host | No | |
| note | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| listed | No | |
| reason | No | |
| source | No | |
| ageDays | No | |
| calls30d | No | |
| snapshot | No | |
| payers30d | No | |
| resources | No | |
| percentile | No | |
| totalHosts | No | |
| maxPriceUsd | No | |
| rankByCalls | No | |
| lastCalledAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, open-world behavior. The description adds genuinely useful non-derivable context: the $0.001 USDC per-call cost and that the output is byte-identical to a REST endpoint. It doesn't discuss freshness or caching of the 30-day window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and its returned fields, then usage context, then cost. The enumerated field list is dense but informative; nothing is wasted, though the list is slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers cost, scope, and the one parameter's meaning. For a simple single-param read tool this is close to complete; only staleness/caching of the 30-day window is 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 coverage is 100% with a single documented parameter, so the schema carries the load and baseline is 3. The description reinforces the single-host scoping and shows the example hostname, but adds no syntax or format detail beyond the schema's own example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Demand history for a single host on this rail') and enumerates the exact fields returned (calls, payers, resources, last call, price, rank). This clearly distinguishes it from siblings like market_x402_overview and market_x402_top_sellers, which cover the aggregate view rather than one host.
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: 'The pre-purchase check an agent should run before paying an unknown endpoint.' That is strong when-to-use guidance. It doesn't name an alternative tool for the aggregate case, so it stops short of full when-not/alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_x402_overviewx402 rail demand overviewARead-onlyIdempotentInspect
Thirty-day demand on the x402 pay-per-call rail, measured from its own public discovery index: hosts listed, resources, total calls, summed unique payers, and the median/p90/p99 calls per host. The number that answers 'is anyone buying anything here' without trusting a marketing page. Costs $0.001 USDC per call. Byte-identical to GET /market/x402-overview?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asOf | No | |
| note | No | |
| found | No | |
| hosts | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| ageDays | No | |
| calls30d | No | |
| snapshot | No | |
| resources | No | |
| windowDays | No | |
| measuredFrom | No | |
| payerSlots30d | No | |
| p90CallsPerHost | No | |
| p99CallsPerHost | No | |
| hostsWithTraffic | No | |
| top6HostSharePct | No | |
| medianCallsPerHost | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so the safety profile is covered. The description adds real context those do not carry: the per-call cost of $0.001 USDC and the fact that the payload is byte-identical to GET /market/x402-overview. The data-source disclosure ('its own public discovery index') also explains potential bias or staleness.
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 metric enumeration, followed by the purpose rationale, cost, and equivalence note—each sentence earns its place. Minor noise: the trailing '?' on 'GET /market/x402-overview?' reads like an unresolved template artifact and slightly undercuts the precision of the byte-identical claim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the metric enumeration is bonus rather than obligation, and the description adds the pricing and endpoint-equivalence facts an agent needs before spending USDC. The remaining gap is sibling routing: for a set with three other market_x402_* tools, the definition never tells the agent which one to reach for first.
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 and schema coverage is 100%, so the baseline is 4. The description correctly adds nothing about inputs, which 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 (thirty-day demand on the x402 pay-per-call rail) and enumerates the metrics returned: hosts listed, resources, total calls, unique payers, and median/p90/p99 calls per host. The purpose is unambiguous, but it never distinguishes itself from close siblings like market_x402_host_demand, market_x402_payer_bands, or market_x402_top_sellers, which an agent must pick between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternatives despite three near-identical x402 siblings in the tool set. The one directional cue—'answers is anyone buying anything here without trusting a marketing page'—hints at an aggregate-health use case but never states when this aggregate beats the host/payer/seller breakdowns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_x402_payer_bandsHow many buyers does a cold x402 seller get?ARead-onlyIdempotentInspect
Hosts grouped by count of unique paying wallets over thirty days, with the calls each group receives. Reads as the real distribution of the rail: how many sellers get one payer, how many get 2-60, and how much of all traffic the top group holds. Costs $0.001 USDC per call. Byte-identical to GET /market/x402-payer-bands?.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asOf | No | |
| note | No | |
| bands | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| ageDays | No | |
| snapshot | No | |
| totalHosts | No | |
| top6HostSharePct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, open-world call. The description adds valuable behavioral context beyond that: the thirty-day window, the $0.001 USDC per-call cost, and equivalence to GET /market/x402-payer-bands. It does not detail pagination or rate limits, but the cost disclosure is the most important extra here.
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-loads the core grouping behavior. The middle sentence explaining the real distribution is useful framing rather than filler, though the final endpoint-equivalence sentence is slightly abrupt and 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 an output schema present, the description need not explain return values. It supplies the key operational details an agent needs: no parameters, a paid call, a fixed thirty-day window, and endpoint equivalence. It is largely complete for a simple read-only analytics 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?
The tool takes zero parameters, so there are no parameter semantics to document. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for any schema gaps.
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 grouping: hosts grouped by count of unique paying wallets over thirty days, plus the calls each group receives. It is clear enough to distinguish from related x402 tools like top_sellers, though it does not explicitly name sibling alternatives.
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 implied by the title's question and the description's framing as the distribution of the x402 rail, but there is no explicit when-to-use or when-not-to-use guidance versus market_x402_overview or market_x402_top_sellers. The cost note quietly signals that it is a paid call, which is useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_x402_top_sellersBusiest sellers on the x402 railARead-onlyIdempotentInspect
The hosts actually receiving calls on this rail, ranked by thirty-day call count, each with its unique-payer count, number of listed resources and the highest price it advertises. Use it to see who is earning and at what price point, instead of guessing from a directory. Costs $0.001 USDC per call. Byte-identical to GET /market/x402-top-sellers?limit=20.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | hosts to return, busiest first (max 50) (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| ts | No | |
| asOf | No | |
| note | No | |
| rows | No | |
| count | No | |
| found | No | |
| stale | No | |
| caveat | No | |
| reason | No | |
| source | No | |
| ageDays | No | |
| snapshot | No |
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 behavioral context beyond that: a $0.001 USDC per-call cost, the thirty-day ranking window, and byte-identity with a known REST endpoint. It stops short of noting rate limits or pagination 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?
Three sentences, front-loaded with what is returned, then when to use it, then operational facts (cost, endpoint equivalence). No filler and nothing repeated from the schema 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?
An output schema exists, yet the description still summarizes the returned fields and discloses the per-call cost and ranking window — everything an agent needs to select and call this correctly. The only loose end is the limit=20 vs. schema default=10 discrepancy, which 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% for the single 'limit' parameter, so the schema already carries the semantics (max 50, default 10) and the baseline is 3. The description's only parameter-relevant statement is the endpoint equivalence at limit=20, which arguably conflicts with the schema's stated default of 10 rather than clarifying 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?
States a specific verb+resource: hosts actually receiving calls on the x402 rail, ranked by thirty-day call count, with the exact fields returned (unique-payer count, listed resources, highest advertised price). An agent can distinguish this from directory-style or aggregate siblings (market_x402_overview, market_x402_host_demand, market_x402_payer_bands) from the description alone.
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: 'to see who is earning and at what price point, instead of guessing from a directory,' which contrasts with directory/listing approaches. It does not name the specific sibling tools (e.g., market_x402_host_demand, market_x402_payer_bands) that an agent might confuse it with, so routing between x402 siblings still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tokensSearch tokens by name/symbol across DEXs (paid)BRead-onlyIdempotentInspect
Search crypto tokens by name or symbol; returns the highest-liquidity matched pairs with price, liquidity, FDV and 24h volume across chains. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | token name or symbol, e.g. "pepe" or "coinbase" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds meaningful behavioral context beyond that: a per-call cost of $0.001 USDC via x402, the chain scope, and the output content (price, liquidity, FDV, 24h volume). No contradiction 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 two tight sentences: the first front-loads the core function and return fields, the second states the cost. Every word earns its place, with no repetition of the title or schema details.
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 tool with no output schema, the description covers the essential return fields and the critical cost detail, while annotations handle the safety profile. It is slightly incomplete regarding limit semantics and result ordering, but overall an agent can 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 only 50%: query has a description and example, but limit has none. The description merely paraphrases the query parameter ('by name or symbol') and does not explain the limit parameter or how it interacts with the 'highest-liquidity' matching. It fails to compensate for the undocumented 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 description uses a specific verb and resource: 'Search crypto tokens by name or symbol' and specifies the return set ('highest-liquidity matched pairs with price, liquidity, FDV and 24h volume across chains'). It is clear and distinguishes itself from generic token tools, but it does not explicitly differentiate from sibling search tools like market_jup_token_search, so it misses the top 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?
The description provides no guidance on when to use this tool versus alternatives such as market_jup_token_search or trending_tokens. It notes the paid cost but gives no exclusions, prerequisites, or selection criteria, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stablecoin_supplyUSD-pegged stablecoin supply by asset (paid)ARead-onlyIdempotentInspect
Circulating USD-pegged supply with peg mechanism and chain count. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond annotations by disclosing the monetary cost per call and the x402 payment mechanism, which is critical for an agent deciding whether to invoke a paid tool. It does not mention rate limits or data freshness, but the cost disclosure is 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?
The description is two short sentences with no filler. The core subject is front-loaded, and the cost/payment detail is placed second. Every word earns its place, and the title's '(paid)' marker is reinforced without being redundantly expanded.
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 tool with one optional parameter and rich annotations, the description covers the main output themes and the paid nature of the call. However, it omits any explanation of the 'limit' parameter and does not describe the response format, which would be more important given there is no output schema. It is adequate but has 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?
The schema has one optional 'limit' parameter with min/max constraints but no description, and the tool description provides zero coverage of parameter semantics. The property name and constraints hint at result limiting, but the description does not clarify what the limit applies to or how it affects the response. With 0% schema description coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource: circulating USD-pegged stablecoin supply, and adds specific output dimensions (peg mechanism, chain count). It distinguishes itself from generic supply tools like chain_supply_at by focusing on stablecoin-specific aggregate data. It lacks an explicit verb like 'get' or 'list', but the meaning is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for stablecoin supply queries and provides a practical prerequisite by stating the $0.001 USDC cost via x402. However, it does not explicitly state when to prefer this tool over alternatives or when not to use it. The usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_marketsTop coins by market cap (paid)ARead-onlyIdempotentInspect
Market-cap table with price, market cap, 24h volume and 1h/24h/7d change. Public aggregator snapshot, not an oracle. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| vs | No | quote currency | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnly, idempotent, and non-destructive behavior, the description adds useful context: it is an aggregated snapshot rather than a live oracle, signaling possible staleness. The explicit $0.001 USDC per-call cost is important behavioral information not present in 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 well-structured: the first sentence states what data the table contains, the second delivers the critical caveats (aggregator snapshot, not oracle) and cost. Every sentence earns its place with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately lists the returned fields and notes the paid nature and snapshot behavior. It is slightly incomplete around defaults for the optional 'limit' parameter and response shape, but for a simple list tool with strong annotations this 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 coverage is only 50% since the 'limit' parameter has no schema description, and the tool description adds no parameter explanations. The 'vs' enum is self-explanatory, but the meaning of 'limit' — such as default value or whether it caps the number of rows — is left undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a market-cap ranking table and enumerates the exact data fields (price, market cap, volume, 1h/24h/7d change). It is distinct in intent from the many exchange-specific market_* siblings, though it does not explicitly name an alternative to differentiate itself.
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 contextual guidance by calling itself a public aggregator snapshot, not an oracle, which warns against using it for settlement-grade price data. It also flags the per-call cost, but it does not explicitly describe when to prefer this over other market tools or what situations to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_tokensPromoted DEX tokens with live quotes (paid)ARead-onlyIdempotentInspect
Tokens currently bought into by projects for DEX exposure, enriched with price, liquidity and 24h volume. Boosts are paid promotions, not an endorsement. Costs $0.001 USDC per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | chainId filter, e.g. base or solana | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses that the list is paid promotion rather than an endorsement and that each call costs $0.001 USDC via x402. It also states the output fields. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: what the tool returns, the paid-promotion caveat, and the exact cost. The phrasing 'bought into by projects' is slightly awkward, but there is no redundancy or wasted content.
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 list with two optional parameters, the description covers the core content (promoted tokens with quotes), key return fields, and a critical cost constraint. It leaves ordering/pagination details unstated, but no output schema exists and the annotations already communicate the open-world, non-destructive nature.
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 only 50%: chain is documented with an example, but limit has no schema description. The tool description does not mention either parameter or explain how limit/chain affect results, so it fails to compensate for the partially documented 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 identifies a specific resource: currently boosted/promoted DEX tokens, and lists the returned enrichment (price, liquidity, 24h volume). It distinguishes itself from ordinary market-data tools by emphasizing 'paid promotions' and the paid call cost, though it never explicitly names the closely related sibling market_dex_boosted_tokens.
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 context—paid Boosts with live quotes and a per-call cost—implies when to use it (when the agent specifically wants promoted tokens rather than organic market movers). However, it gives no explicit when-not-to-use guidance and no alternative sibling names, leaving the agent to infer its niche among many market_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_rail_heartbeatFree liveness sample of the x402 demand map (aggregates only)ARead-onlyIdempotentInspect
Free, no payment: proves this origin's x402 rail-intelligence routes are live by returning only the headline totals of our measured 30-day demand map (hosts, resources, calls, summed payers, median calls per host). WHICH hosts are earning, per-host calls/payers/rank and the per-token risk verdict stay paid — GET /market/x402-overview, /market/x402-top-sellers, /market/x402-host-demand, /market/x402-payer-bands, /market/token-verdict.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| demo | Yes | |
| paid | Yes | |
| hosts | Yes | |
| ageDays | Yes | |
| calls30d | Yes | |
| snapshot | Yes | |
| resources | Yes | |
| payerSlots30d | Yes | |
| top6HostSharePct | Yes | |
| medianCallsPerHost | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, so the bar is lower; the description adds the monetization boundary ('free, no payment', what stays paid) and the aggregate-only data scope. It does not discuss rate limits or caching, but the added billing/data-boundary context is meaningful.
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 free/no-payment value proposition and the aggregate scope, then the paid boundary. Two sentences, dense but each clause carries routing information; the trailing endpoint list is somewhat heavy but serves as explicit alternative routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained; the description still names the headline fields and clearly delineates what this free call does not return. Complete for a zero-parameter liveness 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?
The tool takes zero parameters, which sets the baseline at 4. The description's enumeration of returned metrics is output rather than parameter semantics, so nothing further is needed or expected here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific function (liveness proof of the x402 rail-intelligence routes) and precise scope (only headline totals of the 30-day demand map, aggregates only). It is clearly distinguishable from the paid x402 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?
Explicitly frames this as the free/no-payment entry point and names the paid alternatives (GET /market/x402-overview, /market/x402-top-sellers, /market/x402-host-demand, /market/x402-payer-bands, /market/token-verdict) with the condition that selects them – per-host detail and risk verdicts.
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
- Changed
chain_token_meta_at6 fields changed- added
Output schema / properties / decimals / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / decimals / typeRemoved value: -"integer" - changed
Output schema / properties / name / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / symbol / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / totalSupply / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / totalSupplyRaw / typePrevious value: -"string"New value: +[ + "string", + "null" +]
1 tool update
- Added
market_npm_tree_risk
2 tool updates
- Added
market_github_repo_health - Added
market_npm_package_risk
1 tool update
- Added
x402_rail_heartbeat
1 tool update
- Added
market_token_verdict
4 tool updates
- Added
market_x402_host_demand - Added
market_x402_overview - Added
market_x402_payer_bands - Added
market_x402_top_sellers
129 tool updates
- Changed
chain_1155_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "account": { + "type": "string" + }, + "balanceRaw": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "supported": { + "type": "boolean" + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_1155_batch1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "answered": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_1155_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "contractURI": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "probedTokenId": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "standards": { + "additionalProperties": {}, + "type": "object" + }, + "supported": { + "type": "boolean" + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_1155_uri1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "raw": { + "type": "string" + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "template": { + "type": "boolean" + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_allowance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "decimals": { + "type": "integer" + }, + "formatted": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "raw": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "spender": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "unlimitedApproval": { + "type": "boolean" + } + }, + "type": "object" +}
- Changed
chain_approvals_scan1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "decimals": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "range": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "balance": { + "description": "decimal-formatted native amount", + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "nativeSymbol": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "wei": { + "description": "balance in wei", + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_balances1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "nativeSymbol": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_block1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "block": { + "additionalProperties": {}, + "description": "decoded header", + "type": "object" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_block_by_hash1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "block": { + "additionalProperties": {}, + "type": "object" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requestedHash": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_block_by_timestamp1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "type": "integer" + }, + "blockTimestamp": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "hash": { + "type": "string" + }, + "head": { + "type": "integer" + }, + "isoTime": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "probes": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requestedTimestamp": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_block_number1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "description": "latest block height", + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_block_receipts1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "aggregatedOver": { + "type": "integer" + }, + "blockNumber": { + "type": "integer" + }, + "cap": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "failedCount": { + "type": "integer" + }, + "feesPaidNative": { + "type": "string" + }, + "feesPaidWei": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "successCount": { + "type": "integer" + }, + "totalGasUsed": { + "type": "string" + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + }, + "uniqueSenders": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
chain_block_series1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "secondsPerBlock": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "window": { + "additionalProperties": {}, + "type": "object" + } + }, + "type": "object" +}
- Changed
chain_block_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocksPerHour": { + "type": "number" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "type": "integer" + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "edges": { + "additionalProperties": {}, + "type": "object" + }, + "fromBlock": { + "type": "integer" + }, + "head": { + "type": "integer" + }, + "label": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "secondsPerBlock": { + "type": "number" + }, + "source": { + "type": "string" + }, + "spanSeconds": { + "type": "integer" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "toBlock": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "windowBlocks": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
chain_block_txids1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "transactionHashes": { + "items": {}, + "type": "array" + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_bytecode_capabilities1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "hasCode": { + "type": "boolean" + }, + "named": { + "items": {}, + "type": "array" + }, + "namedCount": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "push4Candidates": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "unnamedSelectorCount": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
chain_bytecode_fingerprint1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "hasCode": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "prefix": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sha256": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "suffix": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_call1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "asAddress": { + "type": [ + "string", + "null" + ] + }, + "asString": { + "type": "string" + }, + "asUint": { + "type": "string" + }, + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "returnData": { + "type": "string" + }, + "returnSize": { + "type": "integer" + }, + "returnedNoData": { + "type": "boolean" + }, + "reverted": { + "type": "boolean" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "to": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_client_version1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "answeredBy": { + "description": "host that replied", + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "clientVersion": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_code1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "bytecodeSize": { + "description": "bytes of deployed code", + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "codePrefix": { + "type": "string" + }, + "isContract": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_code_at1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "block": { + "type": "string" + }, + "blockNumber": { + "type": "integer" + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "changedSince": { + "type": "boolean" + }, + "codePrefix": { + "type": "string" + }, + "existedAtBlock": { + "type": "boolean" + }, + "isContractNow": { + "type": "boolean" + }, + "latestBytecodeSize": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_contract_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "codePrefix": { + "type": "string" + }, + "isContract": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "supports": { + "additionalProperties": {}, + "type": "object" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_contract_diff1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "a": { + "additionalProperties": {}, + "type": "object" + }, + "b": { + "additionalProperties": {}, + "type": "object" + }, + "bothHaveCode": { + "type": "boolean" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "identicalBytecode": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sameSize": { + "type": "boolean" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_contract_owner1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "hasCode": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_fee_data1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "baseFeeGwei": { + "type": "number" + }, + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "gasPriceGwei": { + "type": "number" + }, + "maxPriorityFeeGwei": { + "type": "number" + }, + "nativeSymbol": { + "type": "string" + }, + "nativeTransferCost": { + "additionalProperties": {}, + "type": "object" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_fee_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "baseFeeGwei": { + "additionalProperties": {}, + "type": "object" + }, + "blocksCovered": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "gasUsedRatio": { + "items": {}, + "type": "array" + }, + "head": { + "type": "integer" + }, + "label": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "oldestBlock": { + "type": "integer" + }, + "perBlockBaseFeeGwei": { + "items": {}, + "type": "array" + }, + "priorityFeeGwei": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trendPct": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_gas_estimate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "atSenderGas": { + "additionalProperties": {}, + "type": "object" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "estimable": { + "type": "boolean" + }, + "gasEstimate": { + "type": "string" + }, + "gasPriceGwei": { + "type": "number" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "to": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_heads1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "chains": { + "items": {}, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "observedAt": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "description": "one entry per chain", + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_logs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "chunks": { + "additionalProperties": {}, + "type": "object" + }, + "count": { + "type": "integer" + }, + "nodeCalls": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "range": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_multicall1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "answered": { + "type": "integer" + }, + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_network_id1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "agree": { + "type": "boolean" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "type": "integer" + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "expectedChainId": { + "type": "integer" + }, + "matchesOurConfig": { + "type": "boolean" + }, + "netVersion": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_approved1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "approved": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "hasApproval": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_approved_for_all1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "approved": { + "type": "boolean" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "operator": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "balance": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "overflow": { + "type": "boolean" + }, + "owner": { + "type": "string" + }, + "raw": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_meta1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "supports": { + "additionalProperties": {}, + "type": "object" + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_owner1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_owner_at1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockThen": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "moved": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "ownerNow": { + "type": "string" + }, + "ownerThen": { + "type": "string" + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nft_token_uri1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "fetchedByUs": { + "type": "boolean" + }, + "found": { + "type": "boolean" + }, + "host": { + "type": [ + "string", + "null" + ] + }, + "isOnChainJson": { + "type": "boolean" + }, + "length": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "scheme": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "tokenId": { + "type": "string" + }, + "tokenUri": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_nonce1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "nonce": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_paused_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "paused": { + "type": "boolean" + }, + "raw": { + "type": "string" + }, + "readable": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_permit_ready1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "domainSeparator": { + "type": "string" + }, + "hasPermitSelector": { + "type": "boolean" + }, + "implementation": { + "type": "string" + }, + "nonce": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "permitReady": { + "type": "boolean" + }, + "permitSelectorIn": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_proxy_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "beacon": { + "type": [ + "string", + "null" + ] + }, + "bytecodeSize": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "eip1967Slots": { + "additionalProperties": {}, + "type": "object" + }, + "hasCode": { + "type": "boolean" + }, + "implementationFromCall": { + "type": "string" + }, + "implementationFromSlot": { + "type": "string" + }, + "isProxy": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "proxyAdmin": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "slotMatchesCall": { + "type": "boolean" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_receipt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "confirmations": { + "type": "integer" + }, + "contractAddress": { + "type": [ + "string", + "null" + ] + }, + "costWei": { + "type": "string" + }, + "cumulativeGasUsed": { + "type": "string" + }, + "effectiveGasPriceGwei": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "gasUsed": { + "type": "string" + }, + "logCount": { + "type": "integer" + }, + "logsBloomPresent": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "description": "1 = success", + "type": "integer" + }, + "to": { + "type": "string" + }, + "transactionHash": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_storage1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "asAddress": { + "type": "string" + }, + "asUint": { + "type": "string" + }, + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "slot": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "value": { + "description": "32-byte word", + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_storage_diff1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "asUintA": { + "type": "string" + }, + "asUintB": { + "type": "string" + }, + "blocks": { + "additionalProperties": {}, + "type": "object" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "changed": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "slot": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "valueA": { + "type": "string" + }, + "valueB": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_storage_range1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "fromSlot": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "populated": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_supply_at1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "atBlockFormatted": { + "type": "string" + }, + "atBlockRaw": { + "type": "string" + }, + "block": { + "type": "string" + }, + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "changePct": { + "type": "number" + }, + "decimals": { + "type": "integer" + }, + "decimalsAssumed": { + "type": "boolean" + }, + "deltaFormatted": { + "type": "string" + }, + "deltaRaw": { + "type": "string" + }, + "direction": { + "type": "string" + }, + "latestFormatted": { + "type": "string" + }, + "latestRaw": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_sync_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "currentBlock": { + "type": "integer" + }, + "finalizedBlock": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "head": { + "type": "integer" + }, + "highestBlock": { + "type": "integer" + }, + "lagBlocks": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "safeBlock": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "syncing": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_token_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "decimals": { + "type": "integer" + }, + "decimalsAssumed": { + "type": "boolean" + }, + "formatted": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "raw": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_token_balances1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "decimals": { + "type": "integer" + }, + "decimalsAssumed": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "readableCount": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "sumFormatted": { + "type": "string" + }, + "sumRaw": { + "type": "string" + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_token_meta1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "decimals": { + "type": "integer" + }, + "isContract": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "totalSupply": { + "type": "string" + }, + "totalSupplyFormatted": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_token_meta_at1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "decimals": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "token": { + "type": "string" + }, + "totalSupply": { + "type": "string" + }, + "totalSupplyRaw": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_transfers_scan1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "decimals": { + "type": "integer" + }, + "decimalsAssumed": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "range": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "sumFormatted": { + "type": "string" + }, + "sumRaw": { + "type": "string" + }, + "token": { + "type": "string" + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_tx1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pending": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "transaction": { + "additionalProperties": {}, + "type": "object" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_tx_at_index1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "index": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "transaction": { + "additionalProperties": {}, + "type": "object" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_tx_count1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockTag": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_tx_events1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "hash": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_tx_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blockNumber": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "confirmations": { + "type": "integer" + }, + "contractAddress": { + "type": [ + "string", + "null" + ] + }, + "effectiveGasPriceGwei": { + "type": "integer" + }, + "failed": { + "type": "boolean" + }, + "found": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "gasUsed": { + "type": "string" + }, + "hash": { + "type": "string" + }, + "logCount": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pending": { + "type": "boolean" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "revertReason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "type": "integer" + }, + "to": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "valueWei": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_wallet_approvals1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "openApprovals": { + "type": "integer" + }, + "owner": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "spender": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "unrestrictedApprovals": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
chain_wallet_nfts1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "collectionsWithHoldings": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "totalHeld": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_wallet_state1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "chains": { + "items": {}, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
chain_wallet_tokens1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": [ + "string", + "null" + ] + }, + "chainId": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "chainLabel": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "owner": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "tokensReadable": { + "type": "integer" + }, + "totalRowsWithBalance": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
demo_audit1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "demo": { + "type": "boolean" + }, + "findings": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "signalCount": { + "type": "integer" + } + }, + "required": [ + "demo", + "signalCount", + "findings" + ], + "type": "object" +}
- Changed
market_bfex_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timeframe": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_bfex_pairs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "matched": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pairs": { + "items": {}, + "type": "array" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "total": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_bfex_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "ask": { + "type": "integer" + }, + "askSize": { + "type": "number" + }, + "bid": { + "type": "integer" + }, + "bidSize": { + "type": "number" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "change24h": { + "type": "integer" + }, + "changePct24h": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "high24h": { + "type": "integer" + }, + "last": { + "type": "integer" + }, + "low24h": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "volume24h": { + "type": "number" + } + }, + "type": "object" +}
- Changed
market_btc_block_projections1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocks": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_chain_tip1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "height": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "tipHash": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_difficulty_adjustment1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "adjustedTimeAvgSec": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "difficultyChange": { + "type": "number" + }, + "estimatedRetargetMs": { + "type": "integer" + }, + "expectedBlocks": { + "type": "number" + }, + "nextRetargetHeight": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "previousRetarget": { + "type": "number" + }, + "previousTimeMs": { + "type": "integer" + }, + "progressPercent": { + "type": "number" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "remainingBlocks": { + "type": "integer" + }, + "remainingTimeMs": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timeAvgSec": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_fee_estimates1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "economyFee": { + "type": "integer" + }, + "fastestFee": { + "type": "integer" + }, + "halfHourFee": { + "type": "integer" + }, + "hourFee": { + "type": "integer" + }, + "minimumFee": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_mining_hashrate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "currentDifficulty": { + "type": "number" + }, + "currentHashrateHs": { + "type": "string" + }, + "difficulty": { + "items": {}, + "type": "array" + }, + "difficultyPoints": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "hashratePoints": { + "type": "integer" + }, + "hashrates": { + "items": {}, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "window": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_network_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocksSize": { + "type": "integer" + }, + "btcMinedSats": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "difficulty": { + "type": "integer" + }, + "estimatedBtcSent": { + "type": "integer" + }, + "estimatedTxVolumeUsd": { + "type": "number" + }, + "hashRateGh": { + "type": "number" + }, + "marketPriceUsd": { + "type": "number" + }, + "minutesBetweenBlocks": { + "type": "number" + }, + "nBlocksMined": { + "type": "integer" + }, + "nBlocksTotal": { + "type": "integer" + }, + "nTx": { + "type": "integer" + }, + "nextRetargetHeight": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timestampMs": { + "type": "integer" + }, + "totalBtcSats": { + "type": "integer" + }, + "totalBtcSent": { + "type": "integer" + }, + "totalFeesSats": { + "type": "integer" + }, + "tradeVolumeBtc": { + "type": "number" + }, + "tradeVolumeUsd": { + "type": "number" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_recent_blocks1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocks": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "tipHeight": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_btc_spot_prices1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "aud": { + "type": "integer" + }, + "cad": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chf": { + "type": "integer" + }, + "eur": { + "type": "integer" + }, + "gbp": { + "type": "integer" + }, + "jpy": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timeSec": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "usd": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
market_btc_usd_price_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timespan": { + "type": "string" + }, + "total": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "unit": { + "type": "string" + }, + "values": { + "items": {}, + "type": "array" + } + }, + "type": "object" +}
- Changed
market_cbex_best_quote1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "askSize": { + "type": "string" + }, + "auctionMode": { + "type": "boolean" + }, + "bestAsk": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bidSize": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "product": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sequence": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "spread": { + "type": "number" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "time": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "granularity": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "product": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_clock1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "epoch": { + "type": "number" + }, + "iso": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "roundTripMs": { + "type": "integer" + }, + "skewMs": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_product_spec1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "auctionMode": { + "type": "boolean" + }, + "base": { + "type": "string" + }, + "baseIncrement": { + "type": "string" + }, + "cancelOnly": { + "type": "boolean" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "display": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "fxStablecoin": { + "type": "boolean" + }, + "highBidLimitPct": { + "type": "string" + }, + "id": { + "type": "string" + }, + "limitOnly": { + "type": "boolean" + }, + "marginEnabled": { + "type": "boolean" + }, + "maxSlippagePct": { + "type": "string" + }, + "minMarketFunds": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "postOnly": { + "type": "boolean" + }, + "quote": { + "type": "string" + }, + "quoteIncrement": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "type": "string" + }, + "statusMessage": { + "type": "string" + }, + "tradingDisabled": { + "type": "boolean" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "change24hPct": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "high": { + "type": "string" + }, + "last": { + "type": "string" + }, + "low": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "open": { + "type": "string" + }, + "product": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "volume24h": { + "type": "string" + }, + "volume30d": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "ask": { + "type": "string" + }, + "bid": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": "string" + }, + "product": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "size": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "time": { + "type": "string" + }, + "tradeId": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "volume": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_cbex_trades1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "product": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trades": { + "items": {}, + "type": "array" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_deribit_funding_window1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "annualizedPct": { + "type": "number" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "endMs": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "fundingOverWindow": { + "type": "number" + }, + "hours": { + "type": "integer" + }, + "instrument": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "startMs": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_deribit_index1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "estimatedDeliveryPrice": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "indexName": { + "type": "string" + }, + "indexPrice": { + "type": "number" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_deribit_instruments1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "currency": { + "type": "string" + }, + "family": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "listed": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_deribit_volatility_index1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "currency": { + "type": "string" + }, + "days": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_dex_boosted_tokens1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_dex_pair_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "baseToken": { + "additionalProperties": {}, + "type": "object" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": "string" + }, + "chainId": { + "type": "string" + }, + "dexId": { + "type": "string" + }, + "fdv": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "labels": { + "items": {}, + "type": "array" + }, + "liquidityBase": { + "type": "number" + }, + "liquidityQuote": { + "type": "integer" + }, + "liquidityUsd": { + "type": "number" + }, + "marketCap": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "pairAddress": { + "type": "string" + }, + "pairCreatedAtMs": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "priceChange": { + "additionalProperties": {}, + "type": "object" + }, + "priceNative": { + "type": "string" + }, + "priceUsd": { + "type": "string" + }, + "quoteToken": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "txns": { + "additionalProperties": {}, + "type": "object" + }, + "url": { + "type": "string" + }, + "volume": { + "additionalProperties": {}, + "type": "object" + } + }, + "type": "object" +}
- Changed
market_dex_token_pairs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pools": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_fear_greed_index1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "latestClassification": { + "type": "string" + }, + "latestValue": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "timeUntilUpdateSec": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_gate_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "currency_pair": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_gate_depth1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "asks": { + "items": {}, + "type": "array" + }, + "bestAsk": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bids": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "currency_pair": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "spreadPct": { + "type": "number" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "updateMs": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
market_gate_pair_spec1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "amount_precision": { + "type": "integer" + }, + "base": { + "type": "string" + }, + "base_name": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "down_rate": { + "type": "number" + }, + "fee": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "market_order_max_money": { + "type": "string" + }, + "market_order_max_stock": { + "type": "string" + }, + "max_base_amount": { + "type": [ + "string", + "null" + ] + }, + "max_quote_amount": { + "type": "string" + }, + "min_base_amount": { + "type": "string" + }, + "min_quote_amount": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "price_precision": { + "type": "integer" + }, + "quote": { + "type": "string" + }, + "quote_name": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "slippage": { + "type": "string" + }, + "source": { + "type": "string" + }, + "st_tag": { + "type": "boolean" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trade_quotes": { + "items": {}, + "type": "array" + }, + "trade_status": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "type": { + "type": "string" + }, + "up_rate": { + "type": "number" + } + }, + "type": "object" +}
- Changed
market_gate_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "base_volume": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "change_percentage": { + "type": "string" + }, + "currency_pair": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "high_24h": { + "type": "string" + }, + "highest_bid": { + "type": "string" + }, + "highest_size": { + "type": "string" + }, + "last": { + "type": "string" + }, + "low_24h": { + "type": "string" + }, + "lowest_ask": { + "type": "string" + }, + "lowest_size": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "quote_volume": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_gate_trades1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "currency_pair": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trades": { + "items": {}, + "type": "array" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_asset_context1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "coin": { + "type": "string" + }, + "dayBaseVlm": { + "type": "string" + }, + "dayNtlVlm": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "funding": { + "type": "string" + }, + "impactPxs": { + "items": {}, + "type": "array" + }, + "markPx": { + "type": "string" + }, + "midPx": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "openInterest": { + "type": "string" + }, + "oraclePx": { + "type": "string" + }, + "premium": { + "type": "string" + }, + "prevDayPx": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "coin": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_funding_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "coin": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "hours": { + "type": "integer" + }, + "latestRate": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_mid_price1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "matched": { + "type": "integer" + }, + "mids": { + "additionalProperties": {}, + "type": "object" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_order_book1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "asks": { + "items": {}, + "type": "array" + }, + "bestAsk": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bids": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "coin": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_hl_perp_specs1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "universe": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
market_jup_new_tokens1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_jup_token_prices1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "notPriced": { + "items": {}, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "priced": { + "type": "integer" + }, + "prices": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_jup_token_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "query": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_depth1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "asks": { + "items": {}, + "type": "array" + }, + "bestAsk": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bids": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "spreadPct": { + "type": "number" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_ohlc1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "interval": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_pair_spec1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "altname": { + "type": "string" + }, + "base": { + "type": "string" + }, + "baseClass": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "costDecimals": { + "type": "integer" + }, + "costMin": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "leverageBuy": { + "items": {}, + "type": "array" + }, + "leverageSell": { + "items": {}, + "type": "array" + }, + "longPositionLimit": { + "type": "integer" + }, + "lot": { + "type": "string" + }, + "lotDecimals": { + "type": "integer" + }, + "lotMultiplier": { + "type": "integer" + }, + "marginCall": { + "type": "integer" + }, + "marginStop": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "orderMin": { + "type": "string" + }, + "pair": { + "type": "string" + }, + "pairDecimals": { + "type": "integer" + }, + "quote": { + "type": "string" + }, + "quoteClass": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "shortPositionLimit": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "type": "string" + }, + "tickSize": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "wsname": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_spread1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "meanSpreadBps": { + "type": "number" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "samples": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "ask": { + "type": "string" + }, + "askSize": { + "type": "string" + }, + "bid": { + "type": "string" + }, + "bidSize": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "high24h": { + "type": "string" + }, + "last": { + "type": "string" + }, + "low24h": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trades24h": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "volume24h": { + "type": "string" + }, + "vwap24h": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kraken_trades1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "pair": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trades": { + "items": {}, + "type": "array" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kucoin_best_quote1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "bestAsk": { + "type": "string" + }, + "bestAskSize": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bestBidSize": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sequence": { + "type": "string" + }, + "size": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "time": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kucoin_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_kucoin_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "averagePrice": { + "type": "string" + }, + "buy": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "changePrice": { + "type": "string" + }, + "changeRate": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "high": { + "type": "string" + }, + "last": { + "type": "string" + }, + "low": { + "type": "string" + }, + "makerCoefficient": { + "type": "string" + }, + "makerFeeRate": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sell": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "takerCoefficient": { + "type": "string" + }, + "takerFeeRate": { + "type": "string" + }, + "time": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "vol": { + "type": "string" + }, + "volValue": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_llama_asset_price_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "confidence": { + "type": "number" + }, + "count": { + "type": "integer" + }, + "decimals": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "period": { + "type": "string" + }, + "prices": { + "items": {}, + "type": "array" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "ref": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_llama_chain_tvl_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": "string" + }, + "count": { + "type": "integer" + }, + "days": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "latestTvlUsd": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_llama_price_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "notPriced": { + "items": {}, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "priced": { + "type": "integer" + }, + "prices": { + "additionalProperties": {}, + "type": "object" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "requested": { + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_candles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "bar": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "instId": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_depth1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "asks": { + "items": {}, + "type": "array" + }, + "bestAsk": { + "type": "string" + }, + "bestBid": { + "type": "string" + }, + "bids": { + "items": {}, + "type": "array" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "instId": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_funding_rate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "formulaType": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "fundingRate": { + "type": "string" + }, + "fundingRate8hPct": { + "type": "number" + }, + "fundingTime": { + "type": "integer" + }, + "impactValue": { + "type": "string" + }, + "instId": { + "type": "string" + }, + "instType": { + "type": "string" + }, + "interestRate": { + "type": "string" + }, + "maxFundingRate": { + "type": "string" + }, + "method": { + "type": "string" + }, + "minFundingRate": { + "type": "string" + }, + "nextFundingTime": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "premium": { + "type": "string" + }, + "prevFundingTime": { + "type": "integer" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "settFundingRate": { + "type": "string" + }, + "settState": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_instrument_spec1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "baseCcy": { + "type": "string" + }, + "category": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "ctMult": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "ctType": { + "type": "string" + }, + "ctVal": { + "type": [ + "number", + "null" + ] + }, + "ctValCcy": { + "type": "string" + }, + "expTimeMs": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "found": { + "type": "boolean" + }, + "instFamily": { + "type": "string" + }, + "instId": { + "type": "string" + }, + "instType": { + "type": "string" + }, + "lever": { + "type": "string" + }, + "listTimeMs": { + "type": "integer" + }, + "lotSz": { + "type": "string" + }, + "maxLmtAmt": { + "type": "string" + }, + "maxLmtSz": { + "type": "string" + }, + "maxMktSz": { + "type": "string" + }, + "minSz": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "openType": { + "type": "string" + }, + "optType": { + "type": "string" + }, + "positionLimit": { + "type": "string" + }, + "positionLimitPct": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "quoteCcy": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "ruleType": { + "type": "string" + }, + "settleCcy": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "state": { + "type": "string" + }, + "tickSz": { + "type": "string" + }, + "tradeQuoteCcyList": { + "items": {}, + "type": "array" + }, + "ts": { + "type": "string" + }, + "uly": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_ticker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "askPx": { + "type": "string" + }, + "askSz": { + "type": "string" + }, + "bidPx": { + "type": "string" + }, + "bidSz": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "high24h": { + "type": "string" + }, + "instId": { + "type": "string" + }, + "instType": { + "type": "string" + }, + "last": { + "type": "string" + }, + "lastSz": { + "type": "string" + }, + "low24h": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "open24h": { + "type": "string" + }, + "quoteVolume24h": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "sodUtc0": { + "type": "string" + }, + "sodUtc8": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + }, + "venueTsMs": { + "type": "integer" + }, + "volume24h": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_okx_trades1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "instId": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "trades": { + "items": {}, + "type": "array" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_poly_market_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "acceptingOrders": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "bestAsk": { + "type": "number" + }, + "bestBid": { + "type": [ + "number", + "null" + ] + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "clobTokenIds": { + "items": {}, + "type": "array" + }, + "closed": { + "type": "boolean" + }, + "conditionId": { + "type": "string" + }, + "description": { + "type": "string" + }, + "enableOrderBook": { + "type": "boolean" + }, + "endDate": { + "type": "string" + }, + "feeType": { + "type": "string" + }, + "found": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "lastTradePrice": { + "type": "number" + }, + "liquidityNum": { + "type": [ + "number", + "null" + ] + }, + "makerBaseFee": { + "type": "integer" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "oneDayPriceChange": { + "type": [ + "number", + "null" + ] + }, + "orderMinSize": { + "type": "integer" + }, + "outcomePrices": { + "items": {}, + "type": "array" + }, + "outcomes": { + "items": {}, + "type": "array" + }, + "question": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "resolutionSource": { + "type": "string" + }, + "resolutionStatuses": { + "items": {}, + "type": "array" + }, + "resolvedBy": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "source": { + "type": "string" + }, + "spread": { + "type": "number" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "startDate": { + "type": "string" + }, + "takerBaseFee": { + "type": "integer" + }, + "ts": { + "type": "string" + }, + "umaBond": { + "type": "integer" + }, + "umaReward": { + "type": "integer" + }, + "volume24hr": { + "type": [ + "number", + "null" + ] + }, + "volumeNum": { + "type": "number" + } + }, + "type": "object" +}
- Changed
market_poly_markets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "order": { + "type": "string" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_poly_tags1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "caveat": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + }, + "found": { + "type": "boolean" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "rows": { + "items": {}, + "type": "array" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_scout_address_profile1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "balanceUpdatedAtBlock": { + "type": "integer" + }, + "balanceWei": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": "string" + }, + "creationStatus": { + "type": "string" + }, + "creationTransactionHash": { + "type": [ + "string", + "null" + ] + }, + "creatorAddress": { + "type": [ + "string", + "null" + ] + }, + "ensDomainName": { + "type": [ + "string", + "null" + ] + }, + "exchangeRateUsd": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "hasLogs": { + "type": "boolean" + }, + "hasTokenTransfers": { + "type": "boolean" + }, + "hasTokens": { + "type": "boolean" + }, + "implementations": { + "items": {}, + "type": "array" + }, + "isContract": { + "type": "boolean" + }, + "isScam": { + "type": "boolean" + }, + "isVerified": { + "type": "boolean" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "proxyType": { + "type": "string" + }, + "publicTags": { + "items": {}, + "type": "array" + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "reputation": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "token": { + "anyOf": [ + { + "additionalProperties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_scout_chain_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "averageBlockTimeMs": { + "type": "integer" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": "string" + }, + "coinPriceChangePct": { + "type": [ + "number", + "null" + ] + }, + "coinPriceUsd": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "gasPricesGwei": { + "additionalProperties": {}, + "type": "object" + }, + "gasPricesUpdatedAt": { + "type": "string" + }, + "gasUsedToday": { + "type": "string" + }, + "marketCapUsd": { + "type": "number" + }, + "networkUtilizationPct": { + "type": "number" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "totalAddresses": { + "type": "integer" + }, + "totalBlocks": { + "type": "integer" + }, + "totalTransactions": { + "type": "integer" + }, + "transactionsToday": { + "type": "integer" + }, + "ts": { + "type": "string" + } + }, + "type": "object" +}
- Changed
market_scout_token_profile1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address": { + "type": "string" + }, + "caveat": { + "type": [ + "string", + "null" + ] + }, + "chain": { + "type": "string" + }, + "circulatingMarketCap": { + "type": "number" + }, + "decimals": { + "type": "integer" + }, + "exchangeRateUsd": { + "type": "number" + }, + "found": { + "type": "boolean" + }, + "holders": { + "type": "integer" + }, + "iconUrl": { + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "reputation": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "type": "string" + }, + "totalSupply": { + "type": "string" + }, + "ts": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volume24h": { + "type": "number" + } + }, + "type": "object" +}
128 tool updates
- Added
chain_1155_balance - Added
chain_1155_batch - Added
chain_1155_check - Added
chain_1155_uri - Added
chain_allowance - Added
chain_approvals_scan - Added
chain_balance - Added
chain_balances - Added
chain_block - Added
chain_block_by_hash - Added
chain_block_by_timestamp - Added
chain_block_number - Added
chain_block_receipts - Added
chain_block_series - Added
chain_block_stats - Added
chain_block_txids - Added
chain_bytecode_capabilities - Added
chain_bytecode_fingerprint - Added
chain_call - Added
chain_client_version - Added
chain_code - Added
chain_code_at - Added
chain_contract_check - Added
chain_contract_diff - Added
chain_contract_owner - Added
chain_fee_data - Added
chain_fee_history - Added
chain_gas_estimate - Added
chain_heads - Added
chain_logs - Added
chain_multicall - Added
chain_network_id - Added
chain_nft_approved - Added
chain_nft_approved_for_all - Added
chain_nft_balance - Added
chain_nft_meta - Added
chain_nft_owner - Added
chain_nft_owner_at - Added
chain_nft_token_uri - Added
chain_nonce - Added
chain_paused_check - Added
chain_permit_ready - Added
chain_proxy_check - Added
chain_receipt - Added
chain_storage - Added
chain_storage_diff - Added
chain_storage_range - Added
chain_supply_at - Added
chain_sync_status - Added
chain_token_balance - Added
chain_token_balances - Added
chain_token_meta - Added
chain_token_meta_at - Added
chain_transfers_scan - Added
chain_tx - Added
chain_tx_at_index - Added
chain_tx_count - Added
chain_tx_events - Added
chain_tx_status - Added
chain_wallet_approvals - Added
chain_wallet_nfts - Added
chain_wallet_state - Added
chain_wallet_tokens - Added
market_bfex_candles - Added
market_bfex_pairs - Added
market_bfex_ticker - Added
market_btc_block_projections - Added
market_btc_chain_tip - Added
market_btc_difficulty_adjustment - Added
market_btc_fee_estimates - Added
market_btc_mining_hashrate - Added
market_btc_network_stats - Added
market_btc_recent_blocks - Added
market_btc_spot_prices - Added
market_btc_usd_price_history - Added
market_cbex_best_quote - Added
market_cbex_candles - Added
market_cbex_clock - Added
market_cbex_product_spec - Added
market_cbex_stats - Added
market_cbex_ticker - Added
market_cbex_trades - Added
market_deribit_funding_window - Added
market_deribit_index - Added
market_deribit_instruments - Added
market_deribit_volatility_index - Added
market_dex_boosted_tokens - Added
market_dex_pair_detail - Added
market_dex_token_pairs - Added
market_fear_greed_index - Added
market_gate_candles - Added
market_gate_depth - Added
market_gate_pair_spec - Added
market_gate_ticker - Added
market_gate_trades - Added
market_hl_asset_context - Added
market_hl_candles - Added
market_hl_funding_history - Added
market_hl_mid_price - Added
market_hl_order_book - Added
market_hl_perp_specs - Added
market_jup_new_tokens - Added
market_jup_token_prices - Added
market_jup_token_search - Added
market_kraken_depth - Added
market_kraken_ohlc - Added
market_kraken_pair_spec - Added
market_kraken_spread - Added
market_kraken_ticker - Added
market_kraken_trades - Added
market_kucoin_best_quote - Added
market_kucoin_candles - Added
market_kucoin_ticker - Added
market_llama_asset_price_history - Added
market_llama_chain_tvl_history - Added
market_llama_price_snapshot - Added
market_okx_candles - Added
market_okx_depth - Added
market_okx_funding_rate - Added
market_okx_instrument_spec - Added
market_okx_ticker - Added
market_okx_trades - Added
market_poly_market_detail - Added
market_poly_markets - Added
market_poly_tags - Added
market_scout_address_profile - Added
market_scout_chain_stats - Added
market_scout_token_profile
5 tool updates
- Added
chain_tvl - Added
gas_prices - Added
stablecoin_supply - Added
top_markets - Added
trending_tokens
4 tool updates
- First observed
audit_bot_code - First observed
demo_audit - First observed
get_token_price - First observed
search_tokens
Related MCP Connectors
Pay-per-call MCP tools for agents, settled with x402 (USDC on Base mainnet). No API keys.
Pay-per-call MCP tools over x402 (USDC/Solana): LLM, utilities, x402 market and model prices.
46 MCP tools free + pay-per-call x402 REST routes on Base. USDC from $0.001/call.
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server wrapping x402.eleeth.com — 35 pay-per-call tools for AI agents (x402 v2, USDC on Base)35MIT
- AlicenseCqualityCmaintenancex402 Micropaid MCP Server — 120+ paid API endpoints for AI Agents. Pay per call with USDC on Base network. No signup, no API key needed.551MIT

AfaAgent x402 API Suiteofficial
FlicenseNot gradedqualityDmaintenance43 x402-enabled API tools — DeFi, wallet security, AI/ML, developer tools, SEO. Pay-per-call USDC on Base via x402 protocol.-- AlicenseNot gradedqualityCmaintenance55+ pay-per-call tools for AI agents over MCP: live telemetry, blockchain/on-chain checks, environmental, transit, finance, and network utilities. No API key or signup — agents pay per request with x402 USDC micropayments (Base and Solana).MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.