Agent Margin Router
Server Details
38 x402 pay-per-call tools for AI agents (USDC/USDT on Base): web, crypto, on-chain, geo, packages
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- AgentMarginRouter/AgentMarginRouter
- GitHub Stars
- 0
TDQS
Scored across 53 tools
Most tools have distinct targets, but there is meaningful overlap in several clusters: wallet_balance, agent_wallet_snapshot, and erc20_balance all return wallet balances; dns_lookup, dns_whois, and domain_rdap cover overlapping DNS/WHOIS territory; extract_clean, html_to_markdown, metadata, and seo_check all extract page data. Descriptions are detailed enough to disambiguate, but an agent could easily select the wrong tool without reading every description carefully.
All names follow a lowercase snake_case convention and are generally readable, with patterns like verb_noun (web_search, qr_generate, email_validate). However, the set mixes action-first names with bare-noun names (metadata, weather, uuid, hash, health) and noun-first names (token_price, github_repo_summary), so the style is predictable at the formatting level but not semantically uniform.
With 53 tools, this is far beyond the typical well-scoped server and approaches the extreme-mismatch range. Each tool is individually narrow and useful, but the sheer sprawl makes it difficult for an agent to navigate and select effectively, especially since many tools are single-purpose data lookups that could be consolidated into broader parameterized tools.
For a broad multi-domain data utility server, the coverage is quite extensive: search, web extraction, DNS, crypto prices/wallets, package metadata, geolocation, and media conversion are all represented. The gaps are minor for the apparent purpose (e.g., no YouTube metadata tool, no general social media search, no multi-tool batch operations), but core workflows like look up, extract, convert, and validate are well covered.
Available Tools
53 toolsagent_wallet_snapshotAgent Wallet SnapshotARead-onlyInspect
One-call wallet overview for autonomous agents: native balance, ERC-20 balances (default stablecoins + WETH, or any contracts you pass), current gas price, tx count, contract check and USD values incl. total – bundles what would otherwise be 5+ RPC calls. Base, Ethereum, BSC, Polygon, Arbitrum, Optimism. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base (default), ethereum, bsc, polygon, arbitrum, optimism. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| wallet_address | Yes | EVM wallet address. | |
| token_contracts | No | ERC-20 contracts to include (max 20); default: USDC, USDT, DAI, WETH. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| chain_id | Yes | |
| tx_count | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| is_contract | Yes | |
| block_number | Yes | |
| native_token | Yes | |
| calls_bundled | Yes | |
| gas_price_wei | Yes | |
| gas_price_gwei | Yes | |
| native_balance | Yes | |
| token_balances | Yes | |
| wallet_address | Yes | |
| total_usd_value | Yes | |
| native_price_usd | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint=true is already present, the description adds valuable behavioral context: the default ERC-20 set is stablecoins + WETH and can be overridden, the default chain is Base, and there is a payment/quota model (x402 USDC/USDT on Base, 3 free calls per wallet). These are exactly the kind of non-obvious behaviors an agent needs to invoke the tool correctly.
Agents need to know what a tool does to the 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: it front-loads the core purpose, then lists supported data, then chains, then payment terms. Every clause contributes a capability or constraint; there is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, multiple chains, an output schema, and a payment model, the description covers the conceptual return scope, chain coverage, default token behavior, and access/payment rules. The output schema handles detailed return shape, so nothing an agent needs for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds meaningful nuance beyond the schema: token_contracts defaults to USDC/USDT/DAI/WETH, chain defaults to Base, and passing a wallet address unlocks the free tier. This helps agents make smarter parameter choices without opening 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 gives a specific resource (wallet snapshot) and a full inventory of what it bundles, so an agent can tell it apart from more focused 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 explains that this tool replaces 5+ RPC calls, which clearly indicates when an agent should prefer it over fetching individual balances, gas, and token prices. It also tells the agent which chains are supported and how payment/free-call access works. It does not explicitly name sibling exclusions or say 'when not to use this', but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arxiv_searcharXiv SearchARead-onlyInspect
Search arXiv preprints: returns id, title, authors, abstract, categories, published/updated dates and PDF links, sortable by relevance or date, optionally filtered by category (e.g. cs.AI). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text search query. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| sort_by | No | Sort order (default relevance). | relevance |
| category | No | Optional arXiv category, e.g. cs.AI. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-50 (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| papers | Yes | |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| sort_by | Yes | |
| category | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| attribution | No | |
| paper_count | Yes | |
| total_results | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, signaling a safe, read-only operation. The description adds value by disclosing the payment model ('Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet'), which is not covered by annotations. It does not mention rate limits or response size, but given the annotations, this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the core functionality ('Search arXiv preprints') followed by the return fields and options. The payment note is placed at the end, which is acceptable. Slightly more could be trimmed, but it is well-structured and 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?
The tool has an output schema (which presumably details return format) and 100% schema coverage, so the description need not explain return values. It covers the main purpose, payment, and optional filters. The description is complete enough for an agent to know how to call it, including the free tier and payment requirement, so the slight lack of rate limit info is not critical.
Complex tools with many parameters or behaviors need more documentation. 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 mentions sorting and filtering by category, but the input schema already has detailed descriptions for all 7 parameters, covering the same information (e.g., query='Free-text search query', wallet='Unlocks the free tier'). The description adds a little context by noting the free tier for wallet, but it largely reiterates the schema. With 100% schema coverage, the baseline is 3, and the description does not significantly exceed 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?
The description clearly states the tool searches arXiv preprints and lists the specific returned fields (id, title, authors, abstract, categories, dates, PDF links), which is a specific verb+resource. It also mentions sorting and filtering options, making it easy to distinguish from sibling tools like 'news_search' or 'web_search' which serve different content types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the tool is for searching arXiv preprints and mentions optional filtering by category and sorting. It does not explicitly contrast with siblings, but the specific domain (arXiv) and the detailed output fields give clear context on when to use it. The payment note also clarifies the usage context, though it is more about cost than selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
best_priceBest PriceARead-onlyInspect
Best-price router: queries several independent gas-price sources in parallel, returns the cheapest quote and charges a configurable share of the savings (average - best) as commission. Response includes the full breakdown (best_price, average_price, savings_gross, provision, user_pays) for Base, Ethereum, Arbitrum, Optimism and Polygon. No API key. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base | ethereum | arbitrum | optimism | polygon (default base). | base |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | Source that produced the cheapest quote. |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| provision | Yes | Commission charged on the savings (USD). |
| user_pays | Yes | best_price + provision (USD). |
| best_price | Yes | Cheapest quote across all sources (USD). |
| quotes_count | Yes | Number of sources that answered. |
| user_savings | Yes | average_price - user_pays (USD, what the caller still saves). |
| average_price | Yes | Mean of all quotes (USD). |
| savings_gross | Yes | average_price - best_price (USD, >= 0). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| user_pays_micro_usdc | Yes | user_pays expressed in micro-USDC (x402 unit, 1e6). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description does not contradict that; it adds behavioral details about charging commission and payment via x402. It also discloses the free tier and the lack of an API key requirement, which are not captured by annotations. This enhances the agent's understanding of the tool's behavior beyond 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?
The description is concise and well-structured, leading with the core function, then listing response fields and chains, and ending with payment and free-tier details. Each sentence adds value without redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 covers the tool's purpose, the data it returns (breakdown fields), the supported chains, and the payment/free-tier mechanism. Given the presence of an output schema and annotations that already cover read-only behavior, the description is sufficiently complete for an agent to call the tool correctly. Minor gaps like rate limits or error handling are not critical given 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?
The input schema provides full descriptions for all four parameters (chain, wallet, api_key, x_payment), covering defaults, options, and payment details. The description repeats some of this (e.g., payment via x402) but does not add new meaning beyond the schema. With 100% schema coverage, the baseline of 3 is appropriate; the description offers marginal additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it queries multiple gas-price sources in parallel and returns the cheapest quote while charging a commission. It distinguishes itself from siblings like gas_fees by focusing on best-price comparison and commission. The specific chains and response fields are enumerated, making the 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?
The description implies when to use the tool (when you need the best gas price across multiple sources) but does not explicitly contrast it with alternatives like gas_fees or token_price. It does mention usage constraints such as 'No API key' and '3 free calls per wallet,' but these are access conditions, not usage scenarios. Thus, usage 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.
contract_infoContract InfoARead-onlyInspect
Smart-contract metadata from Blockscout for Base, Ethereum, Optimism or Arbitrum: verification status, name, compiler, proxy/implementation, creator, creation tx, token details and function/event names. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain (default base). | base |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| address | Yes | EVM contract or wallet address (0x...). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| address | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| is_proxy | No | |
| language | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| proxy_type | No | |
| token_info | No | |
| event_names | No | |
| is_contract | Yes | |
| is_verified | No | |
| verified_at | No | |
| explorer_url | No | |
| license_type | No | |
| abi_available | No | |
| contract_name | No | |
| function_names | No | |
| creator_address | No | |
| implementations | No | |
| compiler_version | No | |
| creation_tx_hash | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| optimization_enabled | No | |
| source_code_available | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, lowering the burden on the description. The description adds useful behavioral context: data source (Blockscout), supported chains, the pay-per-call model via x402, and the 3-free-calls per wallet. 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?
Two compact sentences capture the core purpose and the payment model. The first sentence front-loads the metadata categories and supported chains; the second adds essential usage cost information. There is no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich schema coverage, annotations, and an output schema present, the description does not need to explain return values. It provides enough context around chains, metadata scope, and payment requirements for an agent to call the tool correctly. Minor gaps such as explicit error/cost edge cases are acceptable given the annotations.
Complex tools with many parameters or behaviors need more documentation. 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, including the wallet unlock behavior and the x_payment payload format. The description reinforces the payment context but does not add significant new parameter-level 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 clearly identifies the tool's resource ('Smart-contract metadata from Blockscout') and lists concrete output categories like verification status, compiler, proxy/implementation, and token details. It does not use an explicit verb like 'get' or 'fetch', but the domain and supported chains are specific enough to distinguish it from sibling tools such as erc20_balance or tx_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: query contract metadata for a given address on one of four chains. However, it does not explicitly state when to prefer this tool over alternatives, such as erc20_balance or token_price, nor does it define exclusions. The payment and free-tier notes provide context but not alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_ohlcvCrypto OHLCVARead-onlyInspect
Historical OHLCV candles for any major crypto pair (Binance, Coinbase fallback): intervals 1m-1w, up to 500 candles, with period summary (high, low, volume, change %). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Candles (1-500, default 100). | |
| quote | No | Quote asset (default USDT). | USDT |
| symbol | Yes | Base asset, e.g. BTC. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| interval | No | 1m 5m 15m 30m 1h 4h 1d 1w (default 1h). | 1h |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| quote | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| symbol | Yes | |
| candles | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| summary | Yes | |
| interval | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| candle_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description adds substantial behavioral context: payment per call via x402, free-tier limits per wallet, data source fallback behavior, and the period summary. It does not detail rate limits or error behavior, but what is disclosed goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that packs the essential facts—data scope, intervals, limit, summary, payment model, and free tier—without redundancy. It is front-loaded with the core purpose and keeps every clause 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 output schema exists, the description correctly avoids repeating return values and instead covers data source, supported intervals, candle limits, payment method, and free calls. It leaves some room for ambiguity around 'major' pairs and exact pricing, but overall an agent has sufficient context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 7 parameters with descriptions, so the baseline is 3. The tool description adds high-level context like 'any major crypto pair' and payment behavior, but it does not clarify individual parameters beyond what the schema already provides. This is acceptable given complete 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 identifies the resource as 'Historical OHLCV candles' for crypto pairs Brief, names data sources (Binance, Coinbase fallback), and specifies intervals, limit, and summary output. This differentiates it from current-price siblings like token_price or dex_price by emphasizing the historical candle-based nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this is for historical OHLCV data, which sets appropriate context for when to use it, but it does not explicitly mention alternatives or when not to use it. The 'historical' qualifier and candles-focused phrasing give enough context to distinguish from real-time price tools, though explicit exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currency_convertCurrency ConvertARead-onlyInspect
Fiat currency conversion with ECB reference rates (30+ currencies): amount, source currency, one or many targets. Returns rates, converted amounts and rate date. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target currencies, e.g. ["USD", "GBP"]. | |
| from | Yes | ISO-4217 source currency, e.g. EUR. | |
| amount | No | Amount in source currency (default 1). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rates | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| amount | Yes | |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| converted | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| rate_date | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| from_currency | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which align with a read-only, dynamic-rate tool. The description adds useful behavior beyond annotations: ECB reference rates, payment requirement, free tier, and rate date. It doesn't 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 pack the core function and payment model efficiently, with the core conversion action front-loaded. 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?
The tool has an output schema (present but not shown) and a moderate number of parameters. The description covers the essential payment requirement and rate source. It doesn't mention update frequency or rate limits beyond the free tier, but these are not critical for 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 all parameters are already documented. The description reinforces the meaning of amount, source, and targets but adds no extra syntax or format details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts fiat currencies using ECB reference rates, supports multiple target currencies, and returns rates and converted amounts. It distinguishes itself from crypto-focused siblings like token_price and dex_price by specifying fiat conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 indicates fiat conversion and mentions the payment model (pay per call, 3 free calls per wallet). While it doesn't explicitly say when not to use it vs alternatives, the fiat focus and sibling list make the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
defi_tvlDeFi TVLARead-onlyInspect
Total value locked of a DeFi protocol (by DefiLlama slug: TVL, 1d/7d change, market cap, mcap/TVL ratio, TVL per chain, category) or of a whole chain (TVL, native token, protocol count, top-10 protocols). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain name, e.g. base, ethereum, arbitrum. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| protocol | No | DefiLlama protocol slug, e.g. aave, uniswap, aerodrome (either protocol or chain). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| kind | Yes | |
| name | Yes | |
| slug | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| chains | Yes | |
| source | Yes | |
| symbol | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| tvl_usd | Yes | |
| category | No | |
| chain_id | No | |
| mcap_usd | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| chain_tvls | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| native_token | No | |
| change_1d_pct | No | |
| change_7d_pct | No | |
| top_protocols | No | |
| mcap_tvl_ratio | No | |
| protocol_count | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the description does not need to restate that this is a read operation. It adds meaningful beyond-annotation behavior: pay-per-call via x402 on Base, payment in USDC/USDT, and a 3-free-calls-per-wallet limit. 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 with the core purpose, and the payment/free-call sentence earns its place. The first sentence is dense with parenthetical metric lists, which is efficient but slightly hard to parse; still, 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?
Given the output schema covers return values and annotations cover read-only safety, the description supplies the remaining essential context: protocol vs. chain modes, the expected metric set, and the billing/free-tier model. It is sufficient for correct invocation, though a brief usage example or explicit alternative routing would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already explained in the schema. The description adds domain context such as 'DefiLlama slug' and payment/free-tier details, but it does not substantially clarify parameter semantics 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 data resource: total value locked for either a DefiLlama protocol slug or a chain, and enumerates the exact metrics returned (TVL, changes, market cap, mcap/TVL, per-chain TVL, protocol counts). This clearly differentiates it from siblings like defi_yields or token_price by focusing on TVL and associated valuation metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the two input modes (protocol vs. chain) but gives no guidance on when to choose this tool over alternatives such as defi_yields, token_price, or crypto_ohlcv. There are no exclusions, prerequisites, or explicit 'use this when...' statements, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
defi_yieldsDeFi YieldsARead-onlyInspect
Live DeFi pool yields (APY, TVL, stablecoin flag) across 100+ chains and protocols from DefiLlama. Filter by chain, asset, project, minimum TVL; sorted by APY. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | Asset symbol in pool, e.g. USDC. | |
| chain | No | Chain filter, e.g. Base, Ethereum. | |
| limit | No | Max pools (1-50, default 10). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| project | No | Protocol slug, e.g. aave-v3. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| min_tvl_usd | No | Minimum TVL in USD (default 100000). | |
| stablecoins_only | No | Only stablecoin pools. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pools | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| filters | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| pool_count | Yes | |
| total_matching | Yes | |
| filtered_outliers | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a billing model (USDC/USDT on Base via x402) and a free-tier quota (3 free calls per wallet), which go beyond the annotations. It also names the external data source (DefiLlama) and confirms the read-only nature via sorted output, with no contradiction to readOnlyHint/openWorldHint.
Agents need to know what a tool does to the 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 carry distinct information: data source and scope, filter and sort behavior, payment method, and free-tier quota. 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 a complete input schema and an output schema present, the description adequately covers source, filtering, sorting, and the non-obvious payment/quota model. It does not explain return value structure, but that is covered by the output schema; only minor payment mechanics are left implicit.
Complex tools with many parameters or behaviors need more documentation. 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 a high-level filter list and sort order (by APY), but does not elaborate on individual parameters 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 clearly identifies the resource ('DeFi pool yields'), the source ('DefiLlama'), and the key dimensions (APY, TVL, stablecoin flag). It distinguishes itself from sibling tools like defi_tvl by focusing on yields across chains/protocols with filter and sort behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context by enumerating filter options and data scope, but it does not explicitly say when to choose this tool over defi_tvl, token_price, or other alternatives. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_priceDEX PriceARead-onlyInspect
Live DEX price, 24h change, volume and liquidity for any on-chain token (long-tail tokens not listed on CEXs) by contract address or symbol on Base, Ethereum, Arbitrum, Optimism, Polygon, BSC, Avalanche or Solana, with the top liquidity pairs per DEX (DexScreener). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base (default), ethereum, arbitrum, optimism, polygon, bsc, avalanche, solana. | |
| symbol | No | Token symbol, e.g. AERO (if no address). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| max_pairs | No | Pairs to return (1-20, default 5). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| token_address | No | Token contract address (preferred). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fdv | No | |
| asset | Yes | |
| chain | Yes | |
| pairs | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| price_usd | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| market_cap | No | |
| pair_count | Yes | |
| volume_24h | Yes | |
| liquidity_usd | Yes | |
| price_change_24h | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and openWorld, so the description only needs to add context. It usefully discloses the pay-per-call model ('Pay per call with USDC or USDT on Base via x402'), the 3-free-calls-per-wallet limit, and the data source (DexScreener), all of which exceed what the annotations declare.
Agents need to know what a tool does to the 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 core purpose, then adds chain scope, source, and payment model. Every clause earns its place; 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?
Given the rich output schema and fully described parameters, the description covers all necessary operational context: what data is returned, which chains are supported, how the token is identified, the data source, payment requirements, and free-tier behavior. No critical usage 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?
Input schema coverage is 100%, so the schema already documents all parameters well. The description reinforces the contract-address-or-symbol lookup mode and mentions payment/top-pairs, but it does not add detailed parameter-level semantics beyond what the schema provides. This matches the baseline for 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 uses a specific verb ('Live DEX price') and clearly identifies the resource: on-chain token price, 24h change, volume, liquidity, and top liquidity pairs via DexScreener. It also distinguishes itself from CEX-focused tools by explicitly scoping to 'long-tail tokens not listed on CEXs' and naming supported chains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context for when to use the tool: to look up DEX prices for long-tail tokens by contract address or symbol on a defined set of chains. It does not explicitly name alternatives or exclusion conditions, but the DEX/long-tail framing strongly signals when this tool is appropriate over CEX price tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dns_lookupDNS LookupARead-onlyInspect
Resolve any DNS record type (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR) over DNS-over-HTTPS with TTLs and DNSSEC validation flag. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Host name to resolve. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| record_type | No | Record type (default A). | A |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| status | No | |
| answers | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| resolver | No | |
| authority | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| record_type | Yes | |
| answer_count | Yes | |
| dnssec_validated | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare readOnlyHint and openWorldHint, so the description carries the burden of disclosing payment requirements. It adds valuable behavioral context: calls are paid via USDC/USDT on Base with x402, and each wallet gets 3 free calls. This is meaningful 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?
Two sentences with no fluff. The core DNS-resolution capability is front-loaded, followed by the payment constraint and free-tier note. 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 an output schema present and full parameter documentation, the description covers supported record types, transport, and payment behavior. The only notable gap is the lack of explicit pricing per call and no direct comparison with sibling tools like dns_whois, but overall the agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description mentions record types and free-tier limits, but those are already present in the schema's enum and wallet description. The description adds no significant 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 clearly states a specific action ('Resolve any DNS record type'), lists the exact record types, and distinguishes itself via DNS-over-HTTPS and TTL/DNSSEC details. It is not a tautology, but it does not explicitly name or differentiate against dns_whois or domain_rdap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: resolving DNS records over DNS-over-HTTPS. However, it does not explicitly state when to use an alternative like dns_whois or domain_rdap, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dns_whoisDNS + WHOISARead-onlyInspect
DNS records (A, AAAA, MX, NS, TXT, CNAME, SOA, CAA) via DNS-over-HTTPS plus RDAP/WHOIS registration data (registrar, created/expires, status, nameservers, DNSSEC). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name, e.g. example.com. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| record_types | No | Default A AAAA MX NS TXT CNAME. | |
| include_whois | No | Include RDAP data (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| whois | No | |
| domain | Yes | |
| errors | No | |
| records | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to cover safety. It adds valuable behavioral context: payment via USDC/USDT on Base, 3 free calls per wallet, and the underlying protocols (DNS-over-HTTPS, RDAP). It does not disclose failure modes or rate limits, but the added payment and free-tier details go 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?
Two sentences with no excessive detail. The first sentence lists capabilities, the second covers payment. Information is front-loaded and every word earns its place. There is no fluff 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 tool with 6 parameters, output schema, and annotations, the description covers the essential aspects: what it returns, payment requirements, and the free tier. It does not explicitly mention alternatives or error handling, but the output schema likely fills that gap. Given the high schema coverage and annotations, this is fairly complete, though a brief note on when to use this over dns_lookup/domain_rdap would make it perfect.
Complex tools with many parameters or behaviors need more documentation. 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 has a description. The tool description adds meaning by listing the DNS record types and explaining RDAP/WHOIS data, which clarifies the purpose of record_types and include_whois. It doesn't just repeat schema definitions; it provides the domain context that helps the agent decide on parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides DNS records (specific types listed) via DNS-over-HTTPS plus RDAP/WHOIS registration data (registrar, dates, status, nameservers, DNSSEC). This distinguishes it from sibling tools like dns_lookup and domain_rdap, which likely offer only one of these. The verb 'provide' and resource scope are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a combined DNS+WHOIS use case but does not explicitly state when to choose this over dns_lookup or domain_rdap. It does mention payment requirements (pay per call, free tier) which is relevant context. However, no exclusions or alternatives are named, so it relies on the agent inferring that this is the combined option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_rdapDomain RDAPARead-onlyInspect
Domain registration data via RDAP (the WHOIS successor): registered flag, registrar, status, registration/expiry events, nameservers and DNSSEC – for availability checks and due diligence. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Registrable domain, e.g. example.com. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| domain | Yes | |
| events | No | |
| source | Yes | |
| status | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| rdap_url | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| registrar | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| registered | Yes | |
| nameservers | No | |
| dnssec_signed | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| registrar_iana_id | No | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and open-world; the description adds useful operational context: it is a paid API (USDC/USDT on Base via x402) with 3 free calls per wallet. No behavioral contradictions 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?
Two concise sentences: the first front-loads the data categories and use cases, and the second covers payment and free-tier mechanics. 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?
For a single-required-parameter read-only lookup with a full output schema and complete schema coverage, the description covers purpose, use case, data fields, and payment/free-tier 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 description coverage is 100%, so all parameters are already documented in the schema. The description adds no per-parameter semantics beyond what the schema 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 identifies the resource ('domain registration data') and the method ('via RDAP') and lists concrete fields such as registrar, status, nameservers, and DNSSEC. It is clear about what the tool does, but it does not explicitly distinguish it from sibling tools like dns_whois.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear use cases ('for availability checks and due diligence') and gives payment/free-tier conditions, giving an agent enough context to decide when to use it. It does not explicitly say when not to use it or which alternative to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_validateEmail ValidateARead-onlyInspect
Validate an email address: RFC syntax, MX/A records via DNS-over-HTTPS, disposable and free-provider detection, role-account flag, deliverability score and verdict. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address. | ||
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| check_mx | No | Resolve MX records (default true). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | ||
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| domain | No | |
| has_mx | No | |
| null_mx | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| verdict | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| disposable | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| local_part | No | |
| mx_checked | Yes | |
| mx_records | No | |
| role_account | Yes | |
| valid_syntax | Yes | |
| free_provider | Yes | |
| domain_resolves | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| deliverability_score | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true) already establish safety and external data context. The description adds valuable behavioral details beyond annotations: it discloses the payment requirement (Pay per call with USDC/USDT on Base via x402), the free tier (3 free calls per wallet), and the technical mechanism (DNS-over-HTTPS). These are critical for correct usage. 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, information-dense sentence that front-loads the core action and then lists specific checks and payment details. Every clause adds value; there is no filler or redundancy. Well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 availability of an output schema and annotations, the description covers the essential aspects: what the tool does, the payment requirement, and the free tier. It does not mention error handling or failure outcomes for payment, but these are not strictly necessary given the output schema describes return values. The description is sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well documented. The description adds overall context (e.g., deliverability score and verdict) but does not provide additional detail on individual parameters beyond what the schema already offers. It does not explain how parameters interact once the payment flow is triggered, but the schema descriptions are sufficient. 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's purpose with a specific verb (Validate), a specific resource (email address), and enumerates concrete checks (RFC syntax, MX/A records, disposable detection, etc.). It clearly distinguishes from all sibling tools, none of which handle email validation. 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 'Validate an email address' provides clear context for when to use the tool, but it does not explicitly state when not to use it or mention alternatives. Given that no sibling tool overlaps with email validation, the context is sufficient for an agent to select it appropriately, though it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ens_resolveENS ResolveARead-onlyInspect
Resolve an ENS name to its Ethereum address plus text records (url, com.twitter, avatar, ...) via on-chain calls. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ENS name, e.g. vitalik.eth. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| text_keys | No | Text records to read (default url, com.twitter, avatar). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| chain | Yes | |
| texts | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| address | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| namehash | Yes | |
| resolved | Yes | |
| resolver | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, indicating a read-only operation with potential external interactions. The description adds crucial behavioral context: payment via USDC/USDT on Base through x402, a free tier of 3 calls per wallet, and the on-chain nature of the calls. This exceeds the annotation baseline and is not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose. It efficiently communicates the main function and the payment/free-tier caveat without any redundant phrases. Every sentence adds value, and the structure is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to explain return values. It covers the essential operational context: what the tool does, the payment mechanism, and the free tier. It omits potential error handling or rate limits, but these are not critical for a typical agent call. Overall, it is complete enough for an agent to decide 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?
The input schema covers all 5 parameters with descriptions, so the schema itself provides the baseline. The description adds a bit of context by mentioning typical text records (url, com.twitter, avatar) and that the wallet unlocks the free tier, but these are already implied in the schema descriptions. No additional parameter-specific meaning is provided 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 verb 'Resolve' with the resource 'ENS name' and specifies the outputs: Ethereum address plus text records. It is specific enough to distinguish from sibling tools like dns_lookup or wallet_balance, even without explicit comparison. The mention of on-chain calls and payment adds functional clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 alternatives or when not to use it. It implies usage by its name and function, but lacks exclusions or alternative routing. For example, it doesn't say 'use this for ENS resolution, not for DNS.' This is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
erc20_balanceERC-20 Balance (Multicall)ARead-onlyInspect
Balances of up to 20 arbitrary ERC-20 tokens for one wallet in a single Multicall3 round-trip: raw and decimal-formatted balance, decimals and symbol per token, on Base, Ethereum, BSC, Polygon, Arbitrum or Optimism. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base (default), ethereum, bsc, polygon, arbitrum, optimism. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| wallet_address | Yes | EVM wallet address. | |
| contract_addresses | Yes | 1-20 ERC-20 contract addresses. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| tokens | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| chain_id | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| token_count | Yes | |
| block_number | Yes | |
| wallet_address | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds meaningful context: Multicall3 batching, supported chains, the x402 payment mechanism, and the 3-free-calls-per-wallet limit. There is no contradiction 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?
Two sentences are packed with high-signal information: return contents, token scope, multicall batching, supported chains, payment options, and free tier. The core purpose is front-loaded 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?
The description covers the essential calling context: what is returned, how many tokens, which chains, and how to pay. Since an output schema exists, return-value details are handled structurally; the only slight gap is explicit when-to-use/alternative routing among the many balance- and price-related siblings.
Complex tools with many parameters or behaviors need more documentation. 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 six parameters with 100% coverage, so the description does not need to compensate. It reinforces useful constraints like 1-20 contract addresses and one-wallet scope, but it does not clarify the distinction between 'wallet' and 'wallet_address' beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Balances') and names the exact resource: up to 20 arbitrary ERC-20 tokens for one wallet, including raw and decimal-formatted balances, decimals, and symbols. Saying 'arbitrary ERC-20 tokens' and 'one wallet' clearly distinguishes it from sibling tools like wallet_balance or token_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use for batched ERC-20 balance checks for a single wallet in one multicall round-trip, and it adds payment/free-tier context. It does not explicitly say when not to use it or name alternatives such as wallet_balance or token_price, so it stops 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.
extract_cleanExtract CleanARead-onlyInspect
Clean page extraction from any public URL: title, meta description, main text, JSON-LD, language. Optional schema keeps only the listed top-level keys. Apify (JS-rendered) with direct-fetch fallback. Pay per call with USDC or USDT on Base via x402 – no API key, no signup. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public URL to extract. | |
| schema | No | Optional JSON schema for the output. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| instructions | No | Optional natural-language hints. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Extracted page data (title, description, text, json_ld, language, ...). |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1). |
| confidence | Yes | Confidence score between 0 and 1. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| sources_checked | Yes | Number of providers consulted. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already covered. The description adds valuable behavioral context beyond annotations: it discloses the Apify (JS-rendered) with direct-fetch fallback behavior, the pay-per-call model with USDC/USDT on Base via x402, no API key/signup requirement, and the 3-free-calls-per-wallet limit. This is exactly the kind of context that helps an agent anticipate side effects (cost) and prerequisites.
Agents need to know what a tool does to the 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 function is front-loaded, followed by the optional filter, then the rendering/fallback mechanism, then payment/free-tier details. Every sentence earns its place and no information is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only extraction tool with an output schema present. It covers the core behavior, the optional filtering, the rendering mechanism, and the payment model. The only minor gap is that it doesn't describe the output format in detail, but the output schema exists and the description names the extracted fields. The payment/free-tier context is a strong addition that most tool descriptions lack.
Complex tools with many parameters or behaviors need more documentation. 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 6 parameters. The description adds meaning by explaining the `schema` parameter's effect ('keeps only the listed top-level keys') and the `wallet` parameter's role in unlocking the free tier. It doesn't repeat parameter names verbatim but adds behavioral context that the schema lacks. Baseline 3 is exceeded because the description clarifies the two most important parameters' semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('extract'), a specific resource ('clean page extraction from any public URL'), and enumerates the exact fields returned (title, meta description, main text, JSON-LD, language). It also distinguishes itself from siblings by mentioning the optional `schema` filter and the Apify/fallback mechanism. An agent can tell this apart from html_to_markdown, web_crawl, and url_status without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use it: for clean page extraction from any public URL, with optional schema filtering. It doesn't explicitly name alternatives or exclusions (e.g., 'use html_to_markdown for raw HTML'), but the context is clear enough that an agent can infer the use case. The payment/free-tier info also helps the agent decide whether to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fear_greedCrypto Fear & GreedARead-onlyInspect
Crypto market sentiment: the daily Fear & Greed index (0-100) with classification, 1d/7d change and up to 90 days of history from alternative.me. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Daily data points to return, 1-90 (default 1). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| value | Yes | |
| source | Yes | |
| history | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| change_1d | No | |
| change_7d | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| timestamp | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| value_classification | Yes | |
| time_until_update_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate those. It adds valuable behavioral context about payment requirements (USDC/USDT on Base via x402) and the 3 free calls per wallet, plus the external data source. This goes beyond 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 sentences with zero waste: the first states the primary function and outputs, the second covers payment and free-tier details. 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?
With an output schema present (not shown) and annotations covering the read-only nature, the description supplies the essential context: data source, payment method, free tier, and time range. Nothing an agent needs to correctly invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters (limit, wallet, api_key, x_payment) are already documented with descriptions. The tool description adds no additional parameter meaning, 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 returns the daily Fear & Greed index (0-100) with classification, 1d/7d change, and up to 90 days of history from alternative.me. This specific resource and its outputs distinguish it from sibling market tools like crypto_ohlcv or token_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that this is for crypto market sentiment, which is distinct from other market data tools. However, it does not explicitly name alternatives or state when not to use it, so it falls 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.
feed_discoverFeed DiscoverARead-onlyInspect
Find the RSS/Atom feed URLs for a website from its HTML link tags, with a common-path fallback (/feed, /rss.xml, ...). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL to inspect. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| feeds | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| feed_count | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable behavioral details beyond that: the pay-per-call model (USDC/USDT on Base via x402), the 3-free-calls-per-wallet rule, and the common-path fallback behavior. It does not mention rate limits or cancellation/reversibility, but the added cost and fallback disclosures go 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 exactly two sentences: the first front-loads the purpose and method, the second conveys payment terms. No filler or redundancy. 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?
Given the tool's simplicity, the description covers the core discovery action, fallback behavior, and payment requirements. An output schema exists, so return values need not be described. It does not address edge cases like what happens when no feed is found, but that is likely covered by the output schema and is a minor gap for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all parameters. The description's mention of the fallback path gives behavioral context for the 'url' parameter but does not add meaning beyond the schema's parameter descriptions. 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's function with a specific action ('Find') and resource ('RSS/Atom feed URLs for a website'), and it explains the method (HTML link tags with a common-path fallback). This distinguishes it from sibling tools like rss_feed, which likely handles feed retrieval rather than discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 locate feed URLs) and provides payment/free-tier context, but it does not explicitly name alternatives or state when not to use it. No exclusions are given, but the usage context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gas_feesGas FeesARead-onlyInspect
Live EIP-1559 gas fees (slow/standard/fast tiers) plus USD cost per transaction type (transfer, ERC-20 transfer, swap, NFT mint) for Base, Ethereum, Arbitrum, Optimism and Polygon. Aggregated from public RPC nodes – no API key. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base | ethereum | arbitrum | optimism | polygon (default base). | base |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_age_seconds | No | Max cache age (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| tiers | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| trend | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| chain_id | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| block_number | Yes | |
| native_token | Yes | |
| base_fee_gwei | Yes | |
| gas_price_gwei | Yes | |
| native_price_usd | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| gas_units_assumed | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and open-world. The description adds meaningful operational context beyond those annotations: data source is public RPC nodes, no API key is required, calls are paid via x402 with USDC/USDT, and each wallet gets 3 free calls. It does not address cache/max-age behavior, but the schema covers the parameter.
Agents need to know what a tool does to the 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 dense sentences that front-load the core output, then add operational and billing essentials. There is no fluff or repetition, 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?
An output schema exists, so return-value details are covered separately. The description supplies the chains, fee tiers, transaction types, payment mechanism, and free-tier threshold, leaving no critical invocation context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description adds chain and billing context but does not significantly deepen parameter 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?
The description clearly identifies the resource and outputs: live EIP-1559 gas fees across tiers and USD costs per transaction type for five chains. The domain is specific enough to distinguish it from sibling market/price tools, though it lacks an explicit verb like 'returns' or 'fetches'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 inferable from the gas-fee focus and listed transaction types, but the description gives no explicit when-to-use guidance, exclusions, or alternatives. An agent must infer that this is the tool for current gas fee estimates rather than, say, historical price data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocodeGeocodeARead-onlyInspect
Turn a place name or address into coordinates, bounding box, address parts and OSM type using OpenStreetMap Nominatim (ODbL); cached 24h. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Place name or address. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| language | No | Result language (default en). | en |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-10 (default 5). | |
| country_codes | No | Comma-separated ISO codes, e.g. de,at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| domain | No | |
| source | Yes | |
| results | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| attribution | No | |
| result_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several behavioral traits beyond the annotations: results are cached for 24 hours, the service is paid via USDC/USDT on Base through x402 with a free tier of 3 calls per wallet, and data comes from OpenStreetMap Nominatim under ODbL. These add significant context about cost, reliability, and licensing, which the annotations (readOnlyHint, openWorldHint) do not cover.
Agents need to know what a tool does to the 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, with the core function front-loaded in the first sentence and additional operational details (caching, payment) in the second. Every phrase carries meaning, and there is no redundant or filler 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?
Given the tool has seven parameters, an output schema, and annotations for read-only/open-world behavior, the description covers the essential operational context: the core transformation, data source, caching, and payment model. It does not describe error handling or output structure, but the output schema addresses that. It is sufficiently complete for an agent to decide when and how to invoke 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 documents all seven parameters with descriptions and defaults, achieving 100% coverage. The description does not elaborate on any parameter specifics, and the operational details it mentions (caching, payment) are not parameter-related. Per the baseline for high schema coverage, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Turn') and a clear resource ('a place name or address into coordinates, bounding box, address parts and OSM type') using OpenStreetMap Nominatim. It also names the data license (ODbL) and caching, making the function unambiguous. No sibling tool appears to offer geocoding, so it is clearly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 convert a place name or address to coordinates) but does not explicitly mention alternatives or when-not-to-use cases. Since there are no competing geocoding tools among the siblings, the lack of explicit exclusion is acceptable, but it could be more explicit about the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo_ipGeo IPARead-onlyInspect
IP geolocation for IPv4/IPv6: country, region, city, coordinates, timezone, ASN, ISP/org, EU flag, private-range detection. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IPv4 or IPv6 address. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | |
| asn | No | |
| isp | No | |
| org | No | |
| city | No | |
| is_eu | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| postal | No | |
| region | No | |
| source | Yes | |
| country | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| version | Yes | |
| latitude | No | |
| timezone | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| longitude | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| is_private | Yes | |
| utc_offset | No | |
| country_code | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, establishing that the call is safe and side-effect-free. The description adds important behavioral context beyond annotations: it discloses the pay-per-call model (USDC/USDT on Base via x402), the free tier (3 free calls per wallet), and the specific data categories returned. This goes beyond the structured hints and gives the agent critical information about cost and access requirements.
Agents need to know what a tool does to the 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 with zero fluff. The first sentence front-loads the core purpose and data fields, and the subsequent sentences address payment and free tier. Every sentence earns its place, and the most critical information (what the tool does) is presented 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 geolocation tool with an output schema present, the description covers the essential aspects: what data is returned, the payment model, and the free tier. It does not elaborate on error handling or rate limits beyond free calls, but annotations (readOnlyHint, openWorldHint) and the output schema cover safety and return structure. Given the tool's complexity, the description is quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (ip, wallet, api_key, x_payment) already documented in the schema. The description adds minimal parameter-specific detail beyond mentioning payment and free calls, which maps to the wallet and x_payment parameters. Since the schema carries the heavy lifting, the description adds only marginal value, fitting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('geolocation') and resource ('IP'), and enumerates the exact data fields returned (country, region, city, coordinates, timezone, ASN, ISP/org, EU flag, private-range detection). This clearly distinguishes it from sibling tools like dns_lookup or domain_rdap, which handle DNS/domain data rather than IP location. The purpose is unambiguous and highly 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 gives context that it's an IP geolocation tool and mentions payment requirements, but it does not explicitly state when to use this tool versus alternatives (e.g., dns_lookup for DNS records, or geocode for physical addresses). There are no exclusions or comparisons with siblings. An agent can infer usage from the purpose, but explicit guidance is lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_repo_summaryGitHub Repo SummaryARead-onlyInspect
One-call overview of any public GitHub repository: description, stars, forks, open issues, primary language and language split (%), topics, license, default branch, README excerpt and the 5 most recent commits. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | owner/name or github.com URL. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| include_readme | No | Include README excerpt (default true). | |
| include_commits | No | Include recent commits (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| fork | No | |
| repo | Yes | |
| forks | Yes | |
| stars | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| topics | No | |
| license | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| archived | No | |
| homepage | No | |
| language | No | |
| watchers | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| languages | No | |
| last_push | No | |
| created_at | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| description | No | |
| open_issues | Yes | |
| default_branch | No | |
| readme_excerpt | No | |
| recent_commits | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint and openWorldHint), the description discloses payment requirements (USDC/USDT on Base via x402), the 3-free-calls-per-wallet allowance, and the restriction to public repositories. These are meaningful operational details an agent needs before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: the first captures the tool's output and scope, and the second covers payment and free-tier policy. Every clause earns its place, 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?
The description is complete given the rich annotations and fully covered schema and output schema. It tells the agent what the tool returns, that only public repos work, how payment works, and the free-tier conditions. 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%, so the parameters are already fully documented. The description adds output-level detail such as 'language split (%)' and '5 most recent commits,' but does not need to explain individual parameters because the schema already covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action ('one-call overview') with a specific resource ('any public GitHub repository') and enumerates the exact data returned: description, stats, language split, license, README excerpt, and recent commits. This clearly differentiates it from broader Internet tools like web_crawl or web_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?
The description gives clear context: it is the right tool for pulling a single overview of a public GitHub repository, and it clarifies the public-repo scope. It does not explicitly name alternative tools or exclusion cases, but no near-sibling requires routing. It also adds cost/free-tier guidance with wallet-based calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hashHash GeneratorARead-onlyInspect
Compute cryptographic hash digests (MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512) of any text. Key-less, local computation. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to hash (UTF-8). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| algorithms | No | Algorithms: md5, sha1, sha224, sha256 (default), sha384, sha512. Accepts a list or comma-separated string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| hashes | No | |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| algorithms | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| byte_length | Yes | |
| text_length | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations indicate readOnlyHint and openWorldHint, the description adds useful context about local computation, payment requirements, and a free tier. However, it doesn't disclose potential limitations like rate limits beyond the free tier or security implications of exposing text, but it does exceed the baseline given 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 succinct, two sentences, with the core purpose front-loaded. It efficiently conveys essential information about algorithms, payment, and free tier without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered. The description covers usage context, payment, and free tier. Missing is explicit mention of output format (e.g., hex string) but that's in output schema. Also lack of note on hash collision or security, but that's 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?
The description explains the default algorithm (sha256) and how to specify multiple algorithms, adding value beyond the schema's parameter descriptions. It also clarifies the meaning of wallet and x_payment in the context of payment and free tier, enriching 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 computes cryptographic hash digests of arbitrary text, listing supported algorithms (MD5, SHA-1, etc.), which differentiates it from siblings like uuid or text_stats. The verb 'compute' and resource 'hash digests' 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?
The description explains the key-less, local computation nature and mentions payment options, but does not explicitly contrast with alternative tools or state when not to use it. However, the context is clear for a hashing utility, so it's a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
healthService healthARead-onlyInspect
Free. Returns AMR service status, provider health and cache metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| version | Yes | |
| providers | Yes | |
| timestamp | No | |
| cache_hits | Yes | |
| error_rate | Yes | |
| environment | Yes | |
| error_count | Yes | |
| cache_misses | Yes | |
| redis_backend | Yes | |
| request_count | Yes | |
| cache_hit_rate | Yes | |
| uptime_seconds | Yes | |
| redis_connected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates this is a safe read operation. The description adds the 'Free' note, which is useful context about cost. It also specifies what the tool returns (service status, provider health, cache metrics), which adds behavioral context beyond the annotation. However, it doesn't disclose details like rate limits, response format specifics, or what 'health' means in terms of potential error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. It states the key facts: free, returns service status, provider health, and cache metrics. Every word earns its place, and there is 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?
For a zero-parameter, read-only tool with an output schema, the description is fairly complete. It tells the agent what the tool does and that it's free. The output schema likely describes the return structure, so the description doesn't need to. The only minor gap is not explaining when to use this over other monitoring tools, but given the tool's simplicity, this is 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?
The tool has zero parameters, and the schema coverage is 100% (empty schema). The description doesn't need to explain parameters since there are none. The baseline for 0 params is 4, and the description appropriately doesn't add unnecessary parameter information. It does clarify the scope of what the health check covers, which is useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns AMR service status, provider health, and cache metrics. The verb 'returns' and the specific resources (service status, provider health, cache metrics) make the purpose clear. It doesn't explicitly differentiate from siblings, but the name 'health' and the specific metrics make it distinguishable from the other 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 context: it's a free health check tool, likely to be used when checking service status or monitoring. However, it doesn't explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or alternative tools. The 'Free' note is a small usage hint but not a full guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hn_searchHacker News SearchARead-onlyInspect
Search Hacker News stories and comments via the Algolia HN API: title, URL, author, points, comment count, timestamp and HN discussion link; sort by relevance or date, optional tag filter (story, comment, ask_hn, show_hn). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Algolia tags, e.g. story, ask_hn, show_hn, comment. | |
| query | Yes | Search phrase. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| sort_by | No | relevance (default) or date. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-50 (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| sort_by | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| hit_count | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| total_hits | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true) already cover read-only and open-world behavior. The description adds the payment model (pay per call via x402 with USDC/USDT on Base, 3 free calls per wallet) and the sort/tag options, which are behavioral details beyond the schema. 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 concise, with the core purpose first, followed by return fields, sorting, tags, and payment info. It is front-loaded and free of redundant language, though it could be tightened slightly by merging the payment sentence. Overall 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?
With an output schema present, return values are covered. The description explains purpose, main features, sorting, and payment, which is sufficient for a search tool. Missing explicit usage guidance and any note on error behavior, but these are minor given the simplicity of the operation.
Complex tools with many parameters or behaviors need more documentation. 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 mentions sort_by and tags but does not add new semantics beyond the schema's own descriptions. It reinforces the free-tier detail for the wallet parameter, but that is behavioral rather than parameter-specific. 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 searches Hacker News stories and comments, lists the returned fields (title, URL, author, points, etc.), and specifies sorting and tag filters. It is specific to HN and distinct from siblings like news_search or reddit_search by naming the exact resource and API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 HN searches but does not explicitly contrast with alternatives or state when not to use it. It lacks guidance like 'use for HN content; for general news use news_search.' The context is clear enough that an agent could infer it, but explicit exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holidaysPublic HolidaysARead-onlyInspect
Official public holidays for a country and year via Nager.Date (key-less): date, local + English name, whether it is nationwide, and sub-region counties. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year, e.g. 2026. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| country_code | Yes | ISO 3166-1 alpha-2, e.g. DE, US, GB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| holidays | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| attribution | No | |
| country_code | Yes | |
| holiday_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful operational context: no API key needed, USDC/USDT payment on Base through x402, a free-call allowance, and the exact output fields (names, nationwide flag, sub-region counties). No statement 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?
Two short sentences with purpose and source front-loaded, followed by payment and free-tier details. No redundant filler; every clause contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with the rich schema, output schema, and annotations, the description is sufficient for an agent to know what to call, which parameters matter, and what operational constraints apply. It could only marginally benefit from explaining x402 mechanics or error conditions, but these are not required 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 describes all five parameters (100% coverage), so the baseline applies. The description reinforces 'country and year' and explains wallet/x_payment economics, but it does not add detailed format constraints beyond the schema. Thus a 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 (official public holidays for a country and year) and the source (Nager.Date), though it lacks an explicit imperative verb like 'fetch' or 'retrieve'. It is distinct from all listed siblings, none of which target holidays, so an agent can identify the tool without 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 concrete invocation context: country and year, key-less access, payment via x402, and a 3-free-calls-per-wallet tier. It does not explicitly name alternatives or exclusion conditions, but no holiday-related alternative exists among the siblings, so the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html_to_markdownHTML to MarkdownARead-onlyInspect
Convert any public web page into clean, LLM-ready Markdown: main content only (boilerplate, nav and ads removed), headings, lists, tables and optional links/images preserved. Trafilatura extraction with markdownify fallback, SSRF-guarded fetch, up to 3 MB HTML. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public page URL. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| include_links | No | Keep hyperlinks (default true). | |
| include_images | No | Keep images (default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| title | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| markdown | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| truncated | No | |
| char_count | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| word_count | Yes | |
| include_links | Yes | |
| include_images | Yes | |
| extraction_method | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint and openWorldHint annotations by disclosing the extraction pipeline (Trafilatura with markdownify fallback), the filtering behavior (boilerplate/nav/ads removed), SSRF guarding, the 3 MB limit, and the payment/free-tier model. This gives the agent strong expectations about side effects, constraints, and costs.
Agents need to know what a tool does to the 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, front-loaded sentences: purpose and output, extraction behavior and constraints, then payment terms. Every sentence adds distinct and necessary information 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?
Given the tool has an output schema and six parameters, the description covers the essential operational context: input URL type, output format, content filtering, fallback behavior, size cap, payment requirements, and free-tier usage. Nothing critical 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 description coverage is 100%, so all six parameters are already documented in the input schema. The description adds high-level context about optional links/images and payment, but it does not materially go beyond what the schema already states for any 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 ('Convert any public web page into clean, LLM-ready Markdown'), then elaborates exactly what is preserved and removed. This clearly distinguishes the tool from siblings like web_search or pdf_text by its output format and extraction-only 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?
It clearly says when to use the tool: when you have a public web page URL and want clean Markdown. It also states exclusions such as 'public' pages and a 3 MB HTML limit, but it does not explicitly name alternatives or say when to prefer extract_clean or web_crawl instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_spreadMarket SpreadARead-onlyInspect
Cross-exchange crypto spread from live tickers: gross spread, fees, modelled slippage, transfer cost and net edge in bps for a given trade size. Ticker/volume based (no full order book). Pay per call with USDC or USDT on Base via x402 – no API key, no signup. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | Ticker, e.g. ETH. | |
| quote | No | Quote currency (default USDT). | USDT |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| size_usd | No | Notional size in USD (default 1000). | |
| buy_venue | Yes | Venue to buy on, e.g. binance. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| sell_venue | Yes | Venue to sell on, e.g. coinbase. | |
| max_age_seconds | No | Max quote age (default 30). |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| quote | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| fees_bps | Yes | |
| buy_price | Yes | |
| buy_venue | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| confidence | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| sell_price | Yes | |
| sell_venue | Yes | |
| slippage_bps | Yes | |
| transfer_cost | Yes | Absolute transfer/gas cost in quote units. |
| execution_risk | Yes | |
| net_spread_bps | Yes | |
| gross_spread_bps | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| transfer_cost_bps | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| estimated_net_profit_usd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses the payment model (per-call with USDC/USDT on Base via x402, no API key, 3 free calls per wallet) and the data source limitation (ticker/volume, no full order book). These are important behavioral traits not captured 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?
Two sentences, front-loaded with the tool's purpose and outputs, followed by the payment model. Every sentence adds value; 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?
The description covers the core purpose, payment model, and data source limitation. Since an output schema exists, return values are covered elsewhere. It doesn't explicitly mention the required parameters or the default quote, but these are in the schema. Overall, it provides sufficient context for an agent to decide whether to use it, though it could mention the free-tier wallet requirement explicitly (though it's in 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 covers all parameters with descriptions, so the baseline is 3. The description doesn't add additional meaning beyond what's in the schema; it merely refers to 'given trade size' which aligns with size_usd. No extra semantic guidance 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?
Clearly states it computes cross-exchange crypto spread from live tickers, listing specific outputs (gross spread, fees, slippage, transfer cost, net edge in bps) and the trade size input. It also specifies it's ticker/volume based, not full order book, distinguishing it from potential siblings like dex_price or token_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that this is for cross-exchange spread analysis and notes the limitation of being ticker/volume based (no full order book), which helps an agent decide when to use it. However, it doesn't explicitly name alternative tools 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.
media_convertMedia ConvertARead-onlyInspect
Convert or transcode a public audio/video/image file via a self-hosted FFmpeg container: pass a source URL and a target format (mp3, mp4, webm, wav, png, …) and receive a public output URL. Pay per call with USDC or USDT on Base via x402 – no API key, no signup. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public URL of the source file. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| operation | No | Named operation, e.g. extract-audio, thumbnail, transcode. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| target_format | Yes | Output format, e.g. mp3, mp4, webm, wav, png. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| operation | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| output_url | Yes | |
| source_url | Yes | |
| output_bytes | No | |
| target_format | Yes | |
| duration_seconds | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint, which fit the description (creating a new output without modifying input). The description adds valuable behavioral context beyond annotations: payment via USDC/USDT on Base, x402, no API key, and a 3-free-calls-per-wallet limit. This helps the agent plan for cost and authentication.
Agents need to know what a tool does to the 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 wasted words. The main operation, input, output, and cost model are all stated efficiently. The essential info 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?
The tool has 6 parameters, but only 2 are required; the schema covers all. Output schema exists, so return structure is handled. The description covers the core function, payment, and free tier, and specifies the input must be a public URL. It could mention file size limits or supported codecs, but that's minor given the schema and 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 description coverage is 100%, so all parameters are already described in the schema. The description repeats the two required params (url, target_format) and gives example formats, but adds little that isn't in the schema. With full 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 the tool converts/transcodes public media files via FFmpeg and returns a public output URL. It names the resource (audio/video/image), the action (convert/transcode), and the result. Among siblings (mostly unrelated checks and lookups), it is unique and instantly recognizable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (converting a public file) and mentions the payment model and free tier. It does not explicitly contrast with alternatives, but no sibling is closely related, so the usage is effectively unique. The 'public' aspect and format list add practical direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadataPage MetadataARead-onlyInspect
Structured metadata for any public page in one call: title, meta description/keywords, canonical URL, HTML lang, charset, favicon (absolute URL) and the FULL OpenGraph (all og:) and Twitter-Card (all twitter:) tag sets. Ideal for link previews / unfurling and agent research. SSRF-guarded. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) page URL. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| lang | No | |
| title | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| charset | No | |
| favicon | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| Yes | ||
| keywords | No | |
| og_count | Yes | |
| canonical | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| open_graph | Yes | |
| description | No | |
| status_code | Yes | |
| twitter_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses SSRF-guarding and the payment model (USDC/USDT on Base via x402, 3 free calls per wallet), which materially affects invocation. No contradiction with annotations; failure/error behavior is not discussed but that is minor given the existing annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core result set, followed by use cases, safety, and payment terms. Every sentence carries information an agent needs, with no 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?
Between the full field enumeration, explicit use cases, payment/free-tier terms, and the existing output schema plus annotations, an agent has enough to select and invoke the tool. It lacks only a direct comparison to a sibling tool, which is supplied by the 'Ideal for...' usage cue rather than an explicit alternative.
Complex tools with many parameters or behaviors need more documentation. 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 four parameters. The description adds minimal parameter context: it ties wallet to the free tier and x_payment to Base payments, but does not explain api_key or add format/nuance 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 a specific verb-resource ('Structured metadata for any public page') and enumerates exact returned fields: title, meta description/keywords, canonical URL, lang, charset, favicon, full OpenGraph and Twitter-Card sets. The 'in one call' and 'Ideal for link previews/unfurling' framing distinguishes it from sibling content-extraction tools like html_to_markdown or seo_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?
Gives explicit intended contexts ('Ideal for link previews / unfurling and agent research') and scope ('any public page'). It does not name sibling alternatives 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.
news_searchNews SearchARead-onlyInspect
Global news article search across 65+ languages via the GDELT DOC 2.0 API: title, URL, source domain, publication time, language and country per article, with look-back window (e.g. 24h, 7d) and language filter. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search phrase (GDELT query syntax allowed). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| language | No | ISO-639-1 article language (default en). | en |
| timespan | No | Look-back window, e.g. 24h, 7d (default), 4w. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-50 (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| articles | Yes | |
| language | Yes | |
| timespan | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| article_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds valuable non-obvious behavior: payment is required (USDC/USDT on Base via x402), there is a 3-free-calls-per-wallet tier, and it specifies the GDELT source and per-article output fields. This goes 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 with no filler: the first packs scope, returned fields, and filters; the second covers the billing model. It is slightly dense but all content is relevant to invoking the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 presence of an output schema means return-value details aren't needed. The description covers the essential non-obvious operational context—billing, free tier, language coverage, and source API—so an agent has enough 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?
Schema description coverage is 100%—every parameter already has its own description, including defaults like 'en' and '10' and constraints like max_results 1-50. The description reinforces the timespan and language examples but doesn't add meaning beyond what the schema already provides, 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 uses a specific verb ('search') and precise resource ('global news article'), identifies the underlying API (GDELT DOC 2.0), and enumerates exact return fields (title, URL, source domain, publication time, language, country). This makes it clearly distinguishable from sibling search tools like arxiv_search, reddit_search, and web_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 provides clear context that this is a news-specific, multi-language search with time-window and language filters, which helps an agent select it over generic web or domain-specific siblings. It doesn't explicitly mention when not to use it or name alternatives, but the news-domain framing is sufficient for most routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
npm_packagenpm PackageARead-onlyInspect
npm package intelligence: latest version, license, repository, maintainers, dependency count, publish dates and weekly downloads – ideal for dependency vetting by coding agents. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | npm package name (scoped allowed, e.g. @scope/pkg). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| license | No | |
| npm_url | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| homepage | No | |
| keywords | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| created_at | No | |
| deprecated | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| description | No | |
| maintainers | No | |
| dependencies | No | |
| version_count | No | |
| latest_version | No | |
| repository_url | No | |
| dependency_count | No | |
| weekly_downloads | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| latest_published_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations by disclosing the payment model: 'Pay per call with USDC or USDT on Base via x402' and the free-tier limit of 3 calls per wallet. The readOnlyHint and openWorldHint annotations already cover safety and dynamic results, so the description's extra cost-related transparency is valuable. 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: two sentences, with the core value prop and returned fields front-loaded, followed by the payment model. The opening phrase 'npm package intelligence' somewhat echoes the tool name, but the rest of the first sentence earns its place by enumerating useful outputs and the target use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and the input schema fully documents parameters, the description covers the remaining essentials: what data is returned, the intended use case, and the payment/free-tier requirement. Nothing critical appears missing for an agent deciding whether and how to call this tool, though the description could be slightly more explicit about alternatives.
Complex tools with many parameters or behaviors need more documentation. 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 input schema already documents every parameter. The description mentions the free-tier wallet behavior, but this is redundant with the 'wallet' parameter's schema description. No additional parameter-level meaning is supplied beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (npm packages) and enumerates the specific data returned: version, license, repository, maintainers, dependency count, publish dates, and weekly downloads. It differentiates from the sibling pypi_package by naming npm explicitly, but it lacks an explicit action verb like 'get' or 'fetch', relying on the noun phrase 'package intelligence' to imply retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: 'ideal for dependency vetting by coding agents.' This tells an agent when to invoke the tool, though it does not explicitly name alternatives or state when not to use it. The npm-versus-PyPI distinction is implied by the ecosystem label rather than stated as an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment_infoPayment requirementsARead-onlyInspect
Free. Returns the x402 payment requirements (price, USDC/USDT contract, pay-to wallet, network) for a given tool so an agent can construct an x402 payment.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Name of the paid AMR tool to get payment requirements for (same name as in tools/list, e.g. `web_search`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | |
| accepts | Yes | |
| free_tier | No | |
| extensions | No | |
| facilitator | Yes | |
| x402Version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Free', which is valuable behavioral context beyond the readOnlyHint annotation. It also discloses what the tool returns and its purpose. It does not mention rate limits or error behavior, but for a simple read-only lookup tool with a single parameter, the disclosure 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 a single sentence that front-loads the most important fact ('Free') and then states the resource, the specific fields, and the purpose. Every word earns its place; 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 simple one-parameter read-only tool with an output schema, the description is nearly complete. It tells the agent what it returns and why to use it. The only minor gap is that it doesn't describe the output schema structure, but the output schema itself is present in the context, so the description need not repeat it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already explains the tool name and gives an example. The description adds context by explaining that the returned requirements are for constructing an x402 payment, which clarifies why the parameter matters. The enum list is exhaustive, so the agent has full information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns'), a specific resource ('x402 payment requirements'), and enumerates the exact fields returned (price, USDC/USDT contract, pay-to wallet, network). It also states the purpose ('so an agent can construct an x402 payment'), which distinguishes it from sibling tools that perform the actual paid operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use this tool: when an agent needs to construct an x402 payment for a given tool. It implies this is a prerequisite step before calling a paid tool, and the parameter description reinforces that the tool name should match tools/list. However, it does not explicitly state when NOT to use it or name 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.
pdf_textPDF TextARead-onlyInspect
Extract clean text (per page + full) and metadata from any public PDF URL up to 25 MB / 200 pages. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public PDF URL. | |
| pages | No | 1-based page numbers to extract. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| max_pages | No | 1-200, default 50. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| text | Yes | |
| bytes | Yes | |
| pages | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| fetch_ms | Yes | |
| metadata | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| truncated | Yes | |
| char_count | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| page_count | Yes | |
| word_count | Yes | |
| pages_extracted | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint. The description adds critical behavioral context: it requires payment (x402 on Base), offers a free tier per wallet, and imposes size/page caps. These are not covered by annotations, making the description essential for safe invocation. 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?
Two sentences with no fluff. The core function is front-loaded, and payment details are given succinctly. Every clause adds essential information. Ideal structure for an agent to quickly 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?
The description covers the main function, constraints, payment, and free tier. With an output schema present, it doesn't need to explain return values. However, it doesn't mention error cases (e.g., exceeding limits or invalid URL) or explicitly distinguish from similar extraction tools. Still, given the annotations and schema, it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is documented. The description adds value by clarifying the output structure ('per page + full' text) and the 25MB/200-page constraint on the URL, which informs how to set max_pages. It also reinforces the wallet's role in the free tier. This goes slightly beyond the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Extract'), a resource ('clean text and metadata from PDF'), and adds concrete constraints (public URL, size/page limits). It clearly distinguishes this PDF-specific tool from sibling tools like html_to_markdown or web_crawl by focusing on PDFs. 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 gives clear usage context: works on public PDF URLs, with size and page limits, and requires payment via USDC/USDT unless using the free tier. However, it does not explicitly compare to alternatives or state when not to use it. The guidance is implied by the PDF focus but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pypi_packagePyPI PackageARead-onlyInspect
PyPI project intelligence: latest version, summary, license, author, project URLs, Python requirement, declared dependencies, release count and last release date. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | PyPI project name. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| author | No | |
| source | Yes | |
| yanked | No | |
| license | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| summary | No | |
| homepage | No | |
| keywords | No | |
| pypi_url | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| classifiers | No | |
| project_urls | No | |
| release_count | No | |
| requires_dist | No | |
| latest_version | No | |
| requires_python | No | |
| dependency_count | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| latest_released_at | No | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context: it is a paid API with a free tier (3 free calls per wallet), payment via USDC/USDT on Base through x402, and it returns a defined set of project intelligence fields. This goes beyond the annotations by explaining the commercial/rate-limit 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?
The description is two sentences: the first packs the core purpose and data points, the second covers payment. It is front-loaded with the most important information. The list of data points is slightly long but earns its place by clarifying the tool's scope. 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?
Given the output schema exists and the annotations cover read-only/open-world behavior, the description is largely complete. It explains the payment model, which is essential for an agent to know before invoking. It could mention that the wallet is optional for the free tier, but the schema already covers that. The only minor gap is not stating what happens if no wallet is provided (likely paid), but the payment sentence implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds context about the wallet unlocking the free tier and the x402 payment payload, which complements the schema. However, it doesn't add much beyond what the schema descriptions already state, 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 opens with a clear verb and resource: 'PyPI project intelligence' followed by a specific list of data points (latest version, summary, license, author, project URLs, Python requirement, declared dependencies, release count, last release date). This distinguishes it from siblings like npm_package and github_repo_summary by naming the exact package registry and the kind of intelligence returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 PyPI project metadata. It does not explicitly name alternatives or exclusions, but the sibling list makes the domain clear (e.g., npm_package for npm). The payment note also gives context for when wallet/api_key parameters are needed, which is useful usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qr_generateQR Code GeneratorARead-onlyInspect
Generate a QR code from any text or URL and return it as a scalable SVG image plus a data-URI. Pure key-less generation, no third-party service. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Text or URL to encode in the QR code. | |
| scale | No | Pixel size of each QR module in the SVG (1-40). Defaults to 8. | |
| border | No | Quiet-zone width in modules (0-20). Defaults to 4. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| error_correction | No | Error-correction level: L, M, Q or H. Defaults to M. |
Output Schema
| Name | Required | Description |
|---|---|---|
| svg | Yes | |
| data | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| format | Yes | |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| version | Yes | |
| data_uri | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| module_count | Yes | |
| error_correction | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'no third-party service' and 'pure key-less generation', which directly contradicts the openWorldHint annotation that suggests external interaction. This is a serious inconsistency that could mislead the agent about the tool's network behavior. Score 1 per rubric.
Agents need to know what a tool does to the 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 functionality, then payment details. No redundancy. Each 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 covers the core function, output format, payment model, and free tier. It lacks details on error handling or specific output structure, but the output schema exists. Given the contradiction, the completeness is slightly marred, but the information present is sufficient for an agent 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 schema descriptions cover all parameters with 100% coverage, including defaults. The tool description adds nothing about parameters beyond the schema, so it relies on the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (generate a QR code), the input (text or URL), and the output (SVG + data-URI). It clearly distinguishes from siblings which are unrelated. This is a clear, unambiguous 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?
It provides context on when to use: for any text/URL encoding, with payment requirements and free tier. It does not mention alternatives because none exist in the sibling list. It gives enough context on payment and key-less generation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_searchReddit SearchARead-onlyInspect
Search Reddit posts site-wide or within one subreddit: title, URL, subreddit, author, score, upvote ratio, comment count, timestamp and the first 500 characters of the post text; sort by relevance, hot, new, top or comments with a time filter. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance (default), hot, new, top, comments. | |
| query | Yes | Search phrase. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| subreddit | No | Restrict to one subreddit, e.g. ethereum. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-50 (default 10). | |
| time_filter | No | hour, day, week, month, year, all (default). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sort | Yes | |
| posts | Yes | |
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| subreddit | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| post_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only, and the description adds meaningful behavioral context: it returns the first 500 characters of post text, supports site-wide or subreddit-scoped queries, includes sort and time-filter options, and discloses the payment model via x402 with 3 free calls per wallet. This goes well beyond what the 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 appropriately sized and front-loads the core purpose before payment details. The first sentence is dense but every clause adds value, and there is no filler or redundant phrasing. It could be slightly more structured, but it remains concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 covers scope, returned fields, filtering, sorting, and payment/free-tier behavior, which is strong given the output schema and 100% parameter documentation. It does not walk through how to construct the x402 payment payload or handle authentication edge cases, but those are covered by the schema and optional fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 8 parameters. The description reinforces the meaning of sort, subreddit, time_filter, and payment-related fields, but it does not add substantial new semantic detail beyond what the schema already states, so it meets 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 states a specific verb and resource: 'Search Reddit posts site-wide or within one subreddit', and enumerates the returned fields (title, URL, author, score, comment count, etc.), which clearly distinguishes it from sibling search tools like web_search or hn_search. It leaves no ambiguity about what resource this tool acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 searching Reddit content, but it does not explicitly state when to prefer it over alternatives like web_search, hn_search, or other search siblings, nor does it mention when not to use it. The usage context is clear but unstated, so 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.
robots_checkRobots.txt CheckARead-onlyInspect
Answer 'may this user-agent crawl this URL?' by fetching and parsing the site's robots.txt: allowed flag, crawl-delay, request-rate and declared sitemaps. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to test. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| user_agent | No | UA string to evaluate (default *). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| allowed | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| sitemaps | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| user_agent | Yes | |
| path_checked | Yes | |
| request_rate | No | |
| robots_txt_url | Yes | |
| robots_txt_found | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| robots_status_code | No | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| crawl_delay_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description correctly avoids contradicting them. It adds valuable behavior beyond annotations: payment requirement per call (USDC/USDT on Base via x402) and the 3-free-calls-per-wallet policy, plus what the parsed result will contain.
Agents need to know what a tool does to the 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 wasted words: the first states the core functionality and outputs, the second handles payment and free-tier details. Critical information is front-loaded, and supplementary cost details are placed at the end where they belong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 query tool with 5 parameters (1 required) and a rich output schema, the description covers the essential behavioral aspects—what it does, what it returns, and how billing/free tier works. It does not cover edge cases like timeouts or error handling, but these are minor gaps given the output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. 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 (url, wallet, api_key, x_payment, user_agent) is already documented. The description adds only marginal parameter context by echoing the user-agent concept ('this user-agent') and clarifying that x_payment is the payment payload, but does not substantially enrich 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 opens with a precise question it answers ('may this user-agent crawl this URL?') and names the exact mechanism (fetching and parsing robots.txt). It lists concrete outputs (allowed flag, crawl-delay, request-rate, sitemaps), which clearly differentiates it from siblings like url_status, seo_check, and web_crawl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tool's intended use is made obvious by framing it as a yes/no question about crawl permission, giving an agent clear context for when to invoke it. However, it does not explicitly mention alternatives or exclusions, relying on the tool's distinct purpose to imply selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rss_feedRSS FeedARead-onlyInspect
Fetch and parse any RSS 2.0 or Atom feed into clean JSON: title, link, published date, author, summary, optional full text content and categories per item. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Feed URL. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| max_items | No | Max items (1-100, default 20). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| include_content | No | Include full text content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| items | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| format | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| feed_link | No | |
| feed_title | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| item_count | Yes | |
| total_items | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the payment model (USDC/USDT on Base via x402) and the free-call-per-wallet limit, which are behavioral constraints not present in annotations. It also clarifies that full text content is optional, implying default 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?
Two dense sentences that front-load the core action and output fields, then add payment context. Each clause is informative with no redundancy or 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 and annotations covering safety, the description fills the key behavioral gap (payment/free tier). It doesn't discuss error handling or pagination, but those are likely covered by the output schema. The wallet and api_key roles are in the schema, so the description is sufficiently complete for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has a clear description. The tool description adds little beyond naming 'optional full text content,' which mirrors the include_content schema. No deeper parameter semantics or cross-parameter relationships are 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?
Description states a specific action (fetch and parse) and resource (RSS 2.0 or Atom feed) with a clear output shape (clean JSON with listed fields). This clearly distinguishes it from sibling tools like web_search or reddit_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?
The description implies usage when you have a feed URL ('any RSS 2.0 or Atom feed') but does not explicitly compare to alternatives or state when not to use it. No mention of related search or fetch tools, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_checkSEO CheckARead-onlyInspect
On-page SEO audit of any URL: title, meta description, canonical, headings, images without alt, links, Open Graph, structured data, robots.txt/sitemap, prioritized issues and a 0-100 score with grade. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to audit. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| check_robots | No | Probe robots.txt + sitemap (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| h1 | Yes | |
| url | Yes | |
| lang | No | |
| grade | Yes | |
| https | Yes | |
| links | Yes | |
| score | Yes | |
| title | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| images | Yes | |
| issues | Yes | |
| load_ms | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| sitemap | No | |
| h2_count | Yes | |
| viewport | No | |
| canonical | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| redirects | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| html_bytes | Yes | |
| open_graph | Yes | |
| robots_txt | No | |
| word_count | Yes | |
| http_status | Yes | |
| meta_robots | No | |
| title_length | Yes | |
| twitter_card | No | |
| hreflang_count | Yes | |
| meta_description | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| structured_data_blocks | Yes | |
| meta_description_length | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, but the description adds critical behavioral details: it is a paid service (pay per call with specific tokens on a specific chain), includes a free tier per wallet, and performs network requests to probe robots.txt/sitemap. It also discloses the output format (prioritized issues and a 0-100 score with grade). This significantly enriches the behavioral profile beyond the annotations and contains no contradictions.
Agents need to know what a tool does to the 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, information-dense sentence that front-loads the core purpose and lists the audit components efficiently. The payment and free-tier details are placed at the end, which is logical. It avoids redundancy but the long list of checks could be slightly tightened; still, it is appropriately sized for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a rich output schema, so return values need not be elaborated. The description covers the tool's purpose, key behaviors (including payment and free tier), and the optional robots.txt/sitemap flag. For a tool with this complexity and the presence of an output schema, nothing essential 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 description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no additional parameter-level meaning beyond what the schema provides. Per the rubric, a high coverage baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('audit'), a resource ('any URL'), and enumerates the exact elements checked (title, meta description, canonical, headings, etc.). It clearly distinguishes itself from sibling tools like web_crawl or html_to_markdown by focusing on SEO-specific analysis. No ambiguity remains 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 clearly defines its domain (on-page SEO audit) and includes practical usage context: payment per call via USDC/USDT on Base, a free tier of 3 calls per wallet, and the ability to toggle robots.txt/sitemap checking. It does not explicitly name alternatives or exclusions, but no sibling tool provides a comparable SEO audit, so the intended usage is unambiguous. Slight deduction for not stating 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.
sitemap_urlsSitemap URLsARead-onlyInspect
Parse a sitemap into the real URL list: accepts a direct sitemap.xml, a (recursed, bounded) or a site root (robots.txt Sitemap: lines, then /sitemap.xml as fallback). Returns each URL with lastmod, changefreq and priority. SSRF-guarded. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Sitemap URL, sitemap index, or a site root. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| max_urls | No | 1-5000 (default 200). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| urls | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| max_urls | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| truncated | Yes | |
| url_count | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| child_sitemaps | Yes | |
| discovered_via | Yes | |
| sitemaps_fetched | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description adds meaningful behavioral context: it is SSRF-guarded, it recursively processes sitemap indexes in a bounded way, and it requires payment via USDC/USDT on Base through x402 with 3 free calls per wallet. This gives an agent useful operational expectations 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?
The description is compact and front-loaded: the first sentence states the core behavior and input variants, the second covers output fields, and the third covers safety and payment. Every sentence contributes necessary information without redundancy or 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 tool with 5 parameters and an output schema, the description covers the essential operational context: accepted URL forms, returned fields, bounded recursion, SSRF protection, and payment/free-tier mechanics. It does not specify exact pricing per call, but that is peripheral and the schema/output schema fill in the remaining structural details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description enriches the overall call context (e.g., URL input variants, bounded recursion, payment model), but it does not add much parameter-level meaning beyond what the schema already states for url, wallet, max_urls, and x_payment. It is adequate but does not go beyond the schema's 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 identifies the tool's job with a specific verb and resource: 'Parse a sitemap into the real URL list.' It also details the accepted input variants (direct sitemap.xml, sitemapindex, site root), making the purpose unmistakable. It does not name sibling tools explicitly, but the function is still clearly differentiated by its sitemap-specific 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 gives clear context about when the tool applies: it handles direct sitemaps, indexes, and site-root discovery via robots.txt. However, it offers no explicit guidance on when to prefer this tool over siblings like web_crawl, robots_check, or feed_discover, nor does it state when NOT to use it. Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_statsText StatsARead-onlyInspect
Readability and text statistics for raw text or a fetched page: word/sentence/syllable counts, Flesch Reading Ease, Flesch-Kincaid grade, and reading/speaking time. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Page URL to fetch and analyse instead of raw text. | |
| text | No | Raw text to analyse. Optional if url is given. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| word_count | Yes | |
| sentence_count | Yes | |
| syllable_count | Yes | |
| character_count | Yes | |
| paragraph_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| complex_word_count | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| flesch_reading_ease | No | |
| flesch_kincaid_grade | No | |
| reading_time_minutes | Yes | |
| speaking_time_minutes | Yes | |
| avg_syllables_per_word | Yes | |
| avg_words_per_sentence | Yes | |
| character_count_no_spaces | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful behavioral context: it fetches a page when a URL is provided, costs USDC/USDT on Base via x402, and offers 3 free calls per wallet. This goes beyond the structured 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 focused sentences: the first lists the core functionality and metrics, the second covers the payment model. The most important information is front-loaded and there is no redundant or filler 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 read-only analysis tool with an output schema and clear annotations, the description covers inputs, outputs, and cost model well. A minor gap is that it does not explicitly state whether exactly one of text or url must be provided, but the schema hints at this and the overall context is sufficient 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%, so the schema fully documents all five parameters. The description adds context about payment and free-tier eligibility, but it does not materially enhance understanding of individual 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 identifies a specific function: computing readability and text statistics (word/sentence/syllable counts, Flesch scores, reading time) for either raw text or a fetched page. This clearly differentiates it from sibling tools like pdf_text, extract_clean, or web_crawl, none of which provide readability analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear what inputs are accepted (raw text or a fetched page) and what metrics will be returned, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. Usage context is implied rather than stated as explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezoneTimezone & Local TimeARead-onlyInspect
Current local time, UTC offset, DST status and abbreviation for any IANA timezone name, or resolve a place name to its timezone and local time. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| location | No | Place name to geocode to a timezone, e.g. 'Tokyo'. Used when timezone is omitted. | |
| timezone | No | IANA timezone name, e.g. 'Europe/Berlin'. Optional if location is given. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| time | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| is_dst | Yes | |
| source | Yes | |
| country | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| datetime | Yes | |
| latitude | No | |
| location | No | |
| timezone | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| longitude | No | |
| unix_time | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| utc_offset | Yes | |
| day_of_week | Yes | |
| day_of_year | Yes | |
| week_number | Yes | |
| abbreviation | No | |
| utc_datetime | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| dst_offset_seconds | Yes | |
| utc_offset_seconds | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only; the description adds per-call payment via USDC/USDT on Base, x402, and a 3-free-calls-per-wallet quota. This is meaningful behavioral context beyond the annotations, though it doesn't describe payment failure or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences; the first front-loads the core operation and outputs, the second covers payment terms. 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?
Given an output schema exists and annotations declare read-only behavior, the description's coverage of purpose, inputs, and payment is sufficient. Minor omissions like behavior when neither location nor timezone is supplied are edge-case details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains wallet, api_key, location, timezone, and x_payment. The description's payment sentence reinforces the wallet/x_payment purpose but adds little beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States concrete outputs (local time, UTC offset, DST status, abbreviation) and two input modes: IANA timezone names and place-name resolution. This distinguishes it from sibling geocoding/weather tools by the resource and output it acts on, even though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 conditions for use: any IANA timezone name, or a place name to resolve to a timezone. Payment/free-tier note also informs usage, but it does not explicitly contrast with sibling tools like geocode or geo_ip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_priceToken PriceARead-onlyInspect
Multi-venue median spot price for any major crypto asset (Binance, Coinbase, Kraken, CoinGecko) with min/max, deviation and confidence score – one call instead of four. No API key. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | Ticker, e.g. ETH. | |
| quote | No | Quote currency (default USD). | USD |
| venues | No | Subset of binance, coinbase, kraken, coingecko. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_age_seconds | No | Max cache age (default 5). |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| price | Yes | |
| quote | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| sources | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| price_max | Yes | |
| price_min | Yes | |
| confidence | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| change_24h_pct | No | |
| sources_failed | No | |
| sources_checked | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| max_deviation_pct | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call read-only and open-world, and the description adds material non-obvious context: no API key is required, calls are metered via x402 payment in USDC/USDT on Base, and each wallet gets three free calls. This discloses the cost and auth model, which the annotations do not cover.
Agents need to know what a tool does to the 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 front-load the core function and venue aggregation, then state payment and cost constraints. No filler or duplicated schema 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 full input schema and an output schema, the description covers everything needed to select and invoke the tool: purpose, venues, pricing/auth model, and free-tier condition. Remaining parameters like max_age_seconds and quote are already documented 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?
The input schema already documents all 7 parameters at 100% coverage, so the baseline is 3. The description adds useful semantics around payment-related parameters (wallet free-tier unlocking, x_payment via x402, optional key) and the asset scope, without restating schema 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?
Clearly identifies a specific operation: retrieving a multi-venue median spot price with min/max, deviation, and confidence score for a crypto asset, naming the four aggregated venues. This distinguishes it from sibling tools like dex_price or currency_convert without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'one call instead of four' phrasing signals that this tool aggregates venue-specific price data, giving clear context for when it is the right choice. It does not explicitly name alternative tools or state exclusion conditions, but the venue-scoped median-price description is enough to orient an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tx_statusTransaction StatusARead-onlyInspect
Status of any EVM transaction on Base, Ethereum, BSC, Polygon, Arbitrum or Optimism: success/failed/pending, block number, confirmations, gas used, effective gas price, fee, from/to/value and all ERC-20 Transfer events decoded from the receipt logs (contract, symbol, decimals, amount). Public JSON-RPC nodes with fallback. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base (default), ethereum, bsc, polygon, arbitrum, optimism. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| tx_hash | Yes | Transaction hash (0x + 64 hex). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_age_seconds | No | Accept cached result up to N seconds old (default 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| nonce | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| value | Yes | |
| status | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| tx_hash | Yes | |
| chain_id | Yes | |
| gas_used | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| log_count | Yes | |
| transfers | Yes | |
| value_wei | Yes | |
| fee_native | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| to_address | No | |
| block_number | No | |
| from_address | Yes | |
| native_token | Yes | |
| confirmations | Yes | |
| gas_price_wei | No | |
| gas_price_gwei | No | |
| input_selector | No | |
| contract_created | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint and openWorldHint, the description adds valuable context about reliance on public JSON-RPC nodes with fallback, per-call payment via USDC/USDT on Base, and the 3-free-calls wallet tier. This covers cost and infrastructure behavior 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: it starts with the action, resource, and supported chains, then gives a thorough but efficient list of status fields, followed by infrastructure and payment details. Every sentence carries useful information 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?
Given the output schema exists and annotations cover the read-only network-open nature, the description communicates the supported chains, what the status includes, decode events, reliance on public nodes, and payment/free-tier behavior. An agent can confidently decide to invoke this tool and understands the expected cost and return 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 description coverage is 100%, and the parameter descriptions already explain tx_hash, chain, wallet, api_key, x_payment, and max_age_seconds. The tool description provides supporting context about payment and free-tier limits but does not add meaningful parameter-level semantics 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 verb and resource: it reports the status of any EVM transaction across six named chains, including detailed fields such as confirmations, gas used, fees, and decoded ERC-20 transfers. It clearly differentiates itself from sibling tools like wallet_balance, gas_fees, and contract_info by focusing on transaction-level status and 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 makes the intended use clear: check whether an EVM transaction is success/failed/pending and retrieve receipt-derived data. It includes supported networks and payment/free-tier behavior, but it does not explicitly state when not to use this tool relative to siblings such as gas_fees or wallet_balance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url_statusURL StatusARead-onlyInspect
Health check for any public URL: HTTP status, full redirect chain, response time, content type, SSL certificate validity/expiry/issuer and a security-header audit (HSTS, CSP, X-Frame-Options, …) with score. SSRF-guarded (private/internal targets are rejected). Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to probe. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| ssl | Yes | |
| url | Yes | |
| error | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| server | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| final_url | Yes | |
| reachable | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| method_used | Yes | |
| status_code | No | |
| content_type | No | |
| content_length | No | |
| redirect_chain | Yes | |
| redirect_count | Yes | |
| security_score | Yes | |
| response_time_ms | Yes | |
| security_headers | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| missing_security_headers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint and openWorldHint, and the description adds valuable non-obvious behavior: SSRF guarding, public-only targeting, and payment/free-tier behavior. It does not need to restate the annotation-level safety profile, and nothing in the description 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?
The description is compact and front-loaded: purpose and main outputs first, followed by critical security behavior and payment mechanics. Every part carries useful and specific information; there is no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 present output schema, the description need not explain return values, but it covers scope, SSRF behavior, and payment/free-tier constraints relevant to calling correctly. It is complete enough for a payment-gated probe tool, leaving only minor gaps such as explicit alternative routing to sibling 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 structured fields already document each parameter. The description adds a bit of semantic color by explaining x402 payment and the 3-free-calls-per-wallet rule, but it does not significantly deepen 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 names a specific action ('health check') and a distinct resource (any public URL), enumerating concrete data points (HTTP status, redirect chain, response time, SSL, security headers). It does not explicitly contrast sibling tools such as seo_check or web_crawl, so it loses the top mark on 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 clearly scopes when the tool is appropriate: any public URL, and it explicitly warns that private/internal targets are rejected via SSRF guarding. It does not explicitly reference alternative tools, but the target domain and rejection rule provide clear enough context for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuidUUID GeneratorARead-onlyInspect
Generate one or more RFC 4122 UUIDs (random v4, or deterministic v5 from a namespace and name). Key-less, local generation. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for v5 UUIDs (required when version=5). | |
| count | No | Number of UUIDs to generate (1-100). Defaults to 1. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| version | No | UUID version: 4 (random, default) or 5 (namespace-based). | |
| namespace | No | Namespace for v5: dns, url, oid or x500. Defaults to dns. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| count | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| uuids | No | |
| source | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| version | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| namespace | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses payment behavior (USDC/USDT on Base via x402), a free tier (3 free calls per wallet), and the deterministic vs random nature of v4/v5. This adds useful behavioral context not captured by annotations, though it could be more explicit about potential side effects of payment, which are already implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the core purpose front-loaded and supplementary payment/free-tier info following. Every word earns its place, and the structure makes it easy 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 the output schema exists and annotations declare read-only, the description covers purpose, versions, and payment constraints sufficiently. It omits explicit mention of count limits or error conditions, but those are in the schema, so the description remains largely 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?
With 100% schema coverage, the baseline is 3, but the description adds semantic depth by explaining that v5 is deterministic and uses namespace and name, and that payment occurs via x402, which directly clarifies the role of name, namespace, and x_payment. This goes beyond the schema's individual parameter descriptions, providing valuable inter-parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates RFC 4122 UUIDs, specifying both v4 (random) and v5 (deterministic) variants, with a clear verb and resource. It distinguishes itself from sibling tools like hash by focusing on UUID generation, making it 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 mentions 'Key-less, local generation' and payment details, implying when it can be used, but does not explicitly contrast with alternatives like hash or other generation tools. It lacks explicit 'when not to use' guidance or mention of specific use cases, leaving 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.
wallet_balanceWallet BalanceARead-onlyInspect
Native + stablecoin balances (ETH, USDC, USDT, DAI, WETH) of any EVM wallet with USD valuation, read directly from public RPC nodes on Base, Ethereum, Arbitrum, Optimism or Polygon. No API key. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | base | ethereum | arbitrum | optimism | polygon (default base). | base |
| tokens | No | Token symbols, default all known (USDC, USDT, DAI, WETH). | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| address | Yes | EVM address (0x + 40 hex chars). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| address | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| balances | Yes | |
| chain_id | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| total_usd | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| block_number | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description adds valuable behavioral context: it reads directly from public RPC nodes (no centralized API), has a payment mechanism via x402 (cost implications), and includes a free tier. 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?
Two dense sentence clusters plus a payment/free-tier sentence, with zero filler. The main purpose is front-loaded, and each sentence contributes functional or behavioral info needed for correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a rich output schema and read-only annotations, the description covers all needed invocation details: target addresses, chains, token scope, rate limits, payment requirements, and no-key access. Nothing critical 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%, so the input schema already documents all six parameters. The description restates a few parameter-related details (chain options, wallet free-trip trigger) but adds marginal meaning beyond the schema baseline, justifying the default score 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 a specific verb (reads) and resource (native + stablecoin balances of any EVM wallet) with USD valuation, on multiple chains. It is distinct from siblings like erc20_balance and token_price by naming the specific token set (ETH, USDC, USDT, DAI, WETH) and multi-chain 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?
It gives clear usage context: no API key, pay per call on Base, 3 free calls per wallet, and direct RPC read. It doesn't explicitly name alternative tools or exclusion criteria, but the conditions under which to use it are conveyed well enough for a disambiguated selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weatherWeatherARead-onlyInspect
Current conditions plus a daily forecast (up to 16 days) for any place name or lat/lon via Open-Meteo (key-less, CC BY 4.0); temperature in °C or °F, cached 30 min. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| latitude | No | -90..90. Use with longitude instead of location. | |
| location | No | Place name, e.g. 'Berlin'. Optional if latitude/longitude are given. | |
| longitude | No | -180..180. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| forecast_days | No | 1-16 (default 7). | |
| temperature_unit | No | Default celsius. | celsius |
Output Schema
| Name | Required | Description |
|---|---|---|
| daily | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| country | No | |
| current | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| latitude | No | |
| location | No | |
| timezone | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| elevation | No | |
| longitude | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| attribution | No | |
| temperature_unit | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses the 30-minute cache, key-less Open-Meteo backend, and the x402 USDC/USDT payment model with 3 free calls per wallet. These are concrete behavioral details that help an agent anticipate cost, external dependencies, and data freshness.
Agents need to know what a tool does to the 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: the first sentence delivers the core functionality, scope, and data source, while the second conveys the essential payment context. Every sentence earns its place with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with optional payment and a default forecast window, the description covers the result type, location forms, unit options, caching, and cost. It could be slightly more explicit about requiring either a location or lat/lon since no parameters are marked required, but the output schema and parameter descriptions cover the remaining details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to compensate for missing parameter docs. It still adds useful meaning by tying temperature_unit to °C/°F, location/latitude/longitude to the two addressing modes, and wallet to the free-tier behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns current conditions plus a daily forecast up to 16 days, scoped to any place name or lat/lon, via Open-Meteo. It specifies the resource, the result format, and the input addressing options, 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?
The description provides clear context for when to use the tool: when the agent needs current weather or a multi-day forecast for a named place or coordinates. It does not explicitly name alternatives or exclusions, but none of the sibling tools directly compete with this weather functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_crawlWeb CrawlARead-onlyInspect
Mini crawler: fetches a start page and follows same-domain links breadth-first (max 10 pages), returning clean LLM-ready Markdown, title, word count and discovered links per page; honours robots.txt by default. SSRF-guarded. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| max_pages | No | 1-10 (default 5). | |
| start_url | Yes | Public page to start from. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| follow_links | No | Follow same-domain links (default true). | |
| include_links | No | Keep hyperlinks in Markdown (default true). | |
| respect_robots | No | Honour robots.txt Disallow for '*' (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| domain | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| max_pages | Yes | |
| start_url | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| page_count | Yes | |
| total_words | Yes | |
| follow_links | Yes | |
| pages_failed | Yes | |
| robots_blocked | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| queued_not_fetched | Yes | |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses breadth-first crawling, the 10-page limit, default robots.txt handling, SSRF guarding, and the payment model (USDC/USDT on Base via x402, 3 free calls per wallet). This is substantial behavioral context and 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 dense, purposeful sentences: core behavior and output first, then security behavior, then cost/payment context. No filler or redundant repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema and 100% schema coverage, the description fills important gaps: page limit, same-domain behavior, robots default, SSRF safety, and payment terms. It does not fully explain how to obtain an x402 payload, but the schema field and free-tier note give an agent enough to proceed effectively.
Complex tools with many parameters or behaviors need more documentation. 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 8 parameters with descriptions, so the baseline is 3. The description mostly restates crawl behavior already reflected in max_pages, follow_links, and respect_robots, and adds little parameter-specific 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 clearly names the resource ('start page'), the operation ('fetches and follows same-domain links breadth-first'), and the output ('LLM-ready Markdown, title, word count and discovered links'). This makes it easy to distinguish from single-page tools like html_to_markdown or extract_clean and from web_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear context for use: crawling multiple same-domain pages up to 10 pages and returning Markdown. However, it does not explicitly name sibling 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.
web_searchWeb SearchARead-onlyInspect
Live web search results (title, URL, domain, snippet) for any query, key-less, region-aware. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (1-400 chars). | |
| region | No | Region code, e.g. wt-wt, de-de, us-en. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| max_results | No | 1-20, default 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| region | Yes | |
| source | Yes | |
| results | Yes | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| fetched_at | No | UTC timestamp when the data was fetched. |
| result_count | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, so the description appropriately focuses on runtime context: key-less access, pay-per-call via USDC/USDT on Base through x402, and a 3-free-calls-per-wallet allowance. It does not cover rate limits or failure behavior beyond the free tier, but it adds meaningful cost and access transparency 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 well-structured: the first sentence front-loads purpose and result fields, and the second covers payment and free tier. Every clause carries useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, readOnly/openWorld annotations, and full parameter schema coverage, the description only needed to supply runtime and billing context, which it does. Missing details like region defaults and max_results are already covered by schema defaults, so the description is complete enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all six parameters and their constraints. The description's 'key-less' and 'region-aware' phrases lightly reinforce wallet and region semantics but add no 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 opens with 'Live web search results (title, URL, domain, snippet) for any query', naming a concrete verb, resource, and expected result fields. This clearly distinguishes it from specialized siblings like arxiv_search, news_search, and reddit_search by signaling a general web search 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 phrase 'for any query' implies a general-purpose web search context, but the description never explicitly states when to choose this over a specialized sibling or when to avoid it. No alternative tools are named, so an agent must infer routing from the 'web' label and the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_summaryWikipedia SummaryARead-onlyInspect
Clean article summary from Wikipedia in any language: title, short description, extract (capped), canonical URL, thumbnail and coordinates; falls back to search when the title is fuzzy. Content CC BY-SA 4.0. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title or search phrase. | |
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| language | No | Wikipedia language code (default en). | en |
| max_chars | No | 100-5000 characters of extract (default 1200). | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| title | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| source | Yes | |
| extract | No | |
| license | No | |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| language | Yes | |
| page_url | No | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| page_type | No | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| coordinates | No | |
| description | No | |
| last_modified | No | |
| thumbnail_url | No | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
| resolved_from_search | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate safety. It adds valuable behavioral context beyond annotations: the extract is capped (max_chars), content is CC BY-SA 4.0, payment is per-call via x402 on Base, and there are 3 free calls per wallet. It also discloses the fuzzy-title fallback behavior. This is strong behavioral disclosure for a read-only tool, though it doesn't detail what happens on payment failure 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 sentences with zero waste. The core function is front-loaded, output fields are listed compactly, and the payment/free-tier info is appended without bloating. 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 has an output schema, so return values are already documented. The description covers the key operational context: language support, extract cap, fuzzy-title fallback, licensing, and payment model. It doesn't mention error cases (e.g., article not found, payment failure), but for a read-only tool with an output schema and 100% parameter coverage, this is nearly complete. A 5 would require explicit error/edge-case handling.
Complex tools with many parameters or behaviors need more documentation. 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 6 parameters. The description adds context about the extract cap and the free tier, but doesn't add meaning beyond what the schema provides for individual parameters. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Clean article summary from Wikipedia'), the resource (Wikipedia), and the exact output fields (title, short description, extract, canonical URL, thumbnail, coordinates). It also distinguishes itself from siblings like web_search and web_crawl by being Wikipedia-specific and from arxiv_search by being a summary tool. The 'falls back to search when the title is fuzzy' clause adds behavioral specificity that further clarifies 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 when to use this tool: when you need a clean Wikipedia article summary in any language, with a fuzzy-title fallback. It doesn't explicitly name alternatives or say 'use web_search instead when...', but the 'falls back to search' clause and the sibling context (web_search, web_crawl, arxiv_search) make the usage context reasonably clear. The payment/free-tier info also guides usage decisions. Missing explicit exclusions, hence 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_transcriptYouTube TranscriptARead-onlyInspect
Fetch the transcript of a YouTube video (manual or auto-generated captions) as timestamped segments plus full text, with language preference and English fallback. Accepts a video id or any YouTube URL. No API key, no download. Pay per call with USDC or USDT on Base via x402. 3 free calls per wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet). | |
| api_key | No | Optional AMR enterprise API key. | |
| language | No | Preferred caption language (default en). | en |
| video_id | Yes | 11-char video id or YouTube URL. | |
| x_payment | No | Optional signed x402 payment payload (base64 JSON) for USDC/USDT on Base. | |
| include_segments | No | Return timestamped segments (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| token | No | Token actually used for payment (USDC, USDT or FREE). |
| routing | Yes | How the request was routed (provider, fallback, cache, latency). |
| language | Yes | |
| segments | No | |
| video_id | Yes | |
| cost_usdc | Yes | Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier. |
| full_text | Yes | |
| fetched_at | No | UTC timestamp when the data was fetched. |
| word_count | Yes | |
| is_generated | No | |
| segment_count | Yes | |
| duration_seconds | Yes | |
| freshness_seconds | Yes | Age of the underlying data in seconds (0 = fetched live). |
| x_payment_response | No | Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyound the readOnlyHint and openWorldHint annotations, the description explains key behavioral details: it supports manual or auto-generated captions, has an English fallback, requires no download, has no API key requirement, and is paid via x402 with 3 free calls per wallet. This gives an agent a realistic picture of what happens when the tool is invoked.
Agents need to know what a tool does to the 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: core function first, then accepted inputs, then access and payment terms. Every sentence contributes useful information without repeating schema details or 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 tool with 6 parameters and no nested objects, the description covers the essential operational context: input format, caption sources, output type, language fallback, authentication/API-key status, and billing/free-tier mechanics. Since an output schema exists, explicit return-value documentation is unnecessary 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?
Input schema coverage is 100%, so the schema already documents all parameters. The description adds some useful behavior context, like language preference and English fallback, but does not materially explain wallet, api_key, or x_payment beyond what the schema states. The phrase 'No API key' is slightly oversimplified given the optional api_key parameter, but the schema clarifies it is optional.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Fetch the transcript of a YouTube video'. It further clarifies the output ('timestamped segments plus full text') and scope ('manual or auto-generated captions'), making the tool's purpose unambiguous and differentiating it from the broad sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: accept a video id or any YouTube URL, no API key required, output is timestamped segments plus full text, and payment/ free-tier conditions. It does not explicitly state when not to use it or name alternatives, but given the sibling set and the explicit resource scope, an agent can determine when this tool applies.
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.
2 tool updates
- Added
media_convert - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "best_price", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price", - "tx_status", - "erc20_balance", - "news_search", - "hn_search", - "reddit_search", - "defi_tvl", - "fear_greed", - "agent_wallet_snapshot", - "url_status", - "web_crawl", - "metadata", - "sitemap_urls", - "wikipedia_summary", - "arxiv_search", - "npm_package", - "pypi_package", - "geocode", - "domain_rdap", - "dns_lookup", - "contract_info", - "weather", - "holidays", - "robots_check", - "feed_discover", - "text_stats", - "timezone", - "qr_generate", - "uuid", - "hash" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "best_price", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl", + "metadata", + "sitemap_urls", + "wikipedia_summary", + "arxiv_search", + "npm_package", + "pypi_package", + "geocode", + "domain_rdap", + "dns_lookup", + "contract_info", + "weather", + "holidays", + "robots_check", + "feed_discover", + "text_stats", + "timezone", + "qr_generate", + "uuid", + "hash", + "media_convert" +]
3 tool updates
- Added
metadata - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "best_price", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price", - "tx_status", - "erc20_balance", - "news_search", - "hn_search", - "reddit_search", - "defi_tvl", - "fear_greed", - "agent_wallet_snapshot", - "url_status", - "web_crawl", - "wikipedia_summary", - "arxiv_search", - "npm_package", - "pypi_package", - "geocode", - "domain_rdap", - "dns_lookup", - "contract_info", - "weather", - "holidays", - "robots_check", - "feed_discover", - "text_stats", - "timezone", - "qr_generate", - "uuid", - "hash" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "best_price", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl", + "metadata", + "sitemap_urls", + "wikipedia_summary", + "arxiv_search", + "npm_package", + "pypi_package", + "geocode", + "domain_rdap", + "dns_lookup", + "contract_info", + "weather", + "holidays", + "robots_check", + "feed_discover", + "text_stats", + "timezone", + "qr_generate", + "uuid", + "hash" +]
- Added
sitemap_urls
10 tool updates
- Added
feed_discover - Added
hash - Added
holidays - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "best_price", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price", - "tx_status", - "erc20_balance", - "news_search", - "hn_search", - "reddit_search", - "defi_tvl", - "fear_greed", - "agent_wallet_snapshot", - "url_status", - "web_crawl", - "wikipedia_summary", - "arxiv_search", - "npm_package", - "pypi_package", - "geocode", - "domain_rdap", - "dns_lookup", - "contract_info" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "best_price", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl", + "wikipedia_summary", + "arxiv_search", + "npm_package", + "pypi_package", + "geocode", + "domain_rdap", + "dns_lookup", + "contract_info", + "weather", + "holidays", + "robots_check", + "feed_discover", + "text_stats", + "timezone", + "qr_generate", + "uuid", + "hash" +]
- Added
qr_generate - Added
robots_check - Added
text_stats - Added
timezone - Added
uuid - Added
weather
2 tool updates
- Added
best_price - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price", - "tx_status", - "erc20_balance", - "news_search", - "hn_search", - "reddit_search", - "defi_tvl", - "fear_greed", - "agent_wallet_snapshot", - "url_status", - "web_crawl", - "wikipedia_summary", - "arxiv_search", - "npm_package", - "pypi_package", - "geocode", - "domain_rdap", - "dns_lookup", - "contract_info" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "best_price", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl", + "wikipedia_summary", + "arxiv_search", + "npm_package", + "pypi_package", + "geocode", + "domain_rdap", + "dns_lookup", + "contract_info" +]
1 tool update
- Changed
payment_info1 field changed- added
Output schema / properties / extensionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Extensions" +}
40 tool updates
- Changed
agent_wallet_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /agent-wallet-snapshot``.", + "properties": { + "block_number": { + "title": "Block Number", + "type": "integer" + }, + "calls_bundled": { + "items": { + "type": "string" + }, + "title": "Calls Bundled", + "type": "array" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "chain_id": { + "title": "Chain Id", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "gas_price_gwei": { + "title": "Gas Price Gwei", + "type": "number" + }, + "gas_price_wei": { + "title": "Gas Price Wei", + "type": "string" + }, + "is_contract": { + "title": "Is Contract", + "type": "boolean" + }, + "native_balance": { + "additionalProperties": true, + "title": "Native Balance", + "type": "object" + }, + "native_price_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Native Price Usd" + }, + "native_token": { + "title": "Native Token", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "token_balances": { + "items": { + "properties": { + "balance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Balance" + }, + "contract": { + "title": "Contract", + "type": "string" + }, + "decimals": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decimals" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "price_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Usd" + }, + "raw": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Raw" + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Symbol" + }, + "usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Usd" + } + }, + "required": [ + "contract" + ], + "title": "SnapshotTokenBalance", + "type": "object" + }, + "title": "Token Balances", + "type": "array" + }, + "total_usd_value": { + "title": "Total Usd Value", + "type": "number" + }, + "tx_count": { + "title": "Tx Count", + "type": "integer" + }, + "wallet_address": { + "title": "Wallet Address", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "wallet_address", + "chain", + "chain_id", + "block_number", + "native_token", + "native_balance", + "token_balances", + "gas_price_gwei", + "gas_price_wei", + "total_usd_value", + "tx_count", + "is_contract", + "calls_bundled" + ], + "type": "object" +}
- Changed
arxiv_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /arxiv-search``.", + "properties": { + "attribution": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Attribution" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Category" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "paper_count": { + "title": "Paper Count", + "type": "integer" + }, + "papers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Papers", + "type": "array" + }, + "query": { + "title": "Query", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sort_by": { + "title": "Sort By", + "type": "string" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_results": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Total Results" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "sort_by", + "papers", + "paper_count", + "source" + ], + "type": "object" +}
- Changed
contract_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /contract-info``.", + "properties": { + "abi_available": { + "default": false, + "title": "Abi Available", + "type": "boolean" + }, + "address": { + "title": "Address", + "type": "string" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "compiler_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Compiler Version" + }, + "contract_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Contract Name" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "creation_tx_hash": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Creation Tx Hash" + }, + "creator_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Creator Address" + }, + "event_names": { + "items": { + "type": "string" + }, + "title": "Event Names", + "type": "array" + }, + "explorer_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Explorer Url" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "function_names": { + "items": { + "type": "string" + }, + "title": "Function Names", + "type": "array" + }, + "implementations": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Implementations", + "type": "array" + }, + "is_contract": { + "title": "Is Contract", + "type": "boolean" + }, + "is_proxy": { + "default": false, + "title": "Is Proxy", + "type": "boolean" + }, + "is_verified": { + "default": false, + "title": "Is Verified", + "type": "boolean" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Language" + }, + "license_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "License Type" + }, + "optimization_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Optimization Enabled" + }, + "proxy_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Proxy Type" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "source_code_available": { + "default": false, + "title": "Source Code Available", + "type": "boolean" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "token_info": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Token Info" + }, + "verified_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Verified At" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "address", + "chain", + "is_contract", + "source" + ], + "type": "object" +}
- Changed
crypto_ohlcv1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /crypto-ohlcv``.", + "properties": { + "candle_count": { + "title": "Candle Count", + "type": "integer" + }, + "candles": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Candles", + "type": "array" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "interval": { + "title": "Interval", + "type": "string" + }, + "quote": { + "title": "Quote", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "summary": { + "additionalProperties": true, + "title": "Summary", + "type": "object" + }, + "symbol": { + "title": "Symbol", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "symbol", + "quote", + "interval", + "candles", + "candle_count", + "summary", + "source" + ], + "type": "object" +}
- Changed
currency_convert1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /currency-convert``.", + "properties": { + "amount": { + "title": "Amount", + "type": "number" + }, + "converted": { + "additionalProperties": { + "type": "number" + }, + "title": "Converted", + "type": "object" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "from_currency": { + "title": "From Currency", + "type": "string" + }, + "rate_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rate Date" + }, + "rates": { + "additionalProperties": { + "type": "number" + }, + "title": "Rates", + "type": "object" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "amount", + "from_currency", + "rates", + "converted", + "source" + ], + "type": "object" +}
- Changed
defi_tvl1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /defi-tvl``.", + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Category" + }, + "chain_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Chain Id" + }, + "chain_tvls": { + "additionalProperties": { + "type": "number" + }, + "title": "Chain Tvls", + "type": "object" + }, + "chains": { + "items": { + "type": "string" + }, + "title": "Chains", + "type": "array" + }, + "change_1d_pct": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Change 1D Pct" + }, + "change_7d_pct": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Change 7D Pct" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "kind": { + "enum": [ + "protocol", + "chain" + ], + "title": "Kind", + "type": "string" + }, + "mcap_tvl_ratio": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Mcap Tvl Ratio" + }, + "mcap_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Mcap Usd" + }, + "name": { + "title": "Name", + "type": "string" + }, + "native_token": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Native Token" + }, + "protocol_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Protocol Count" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "slug": { + "title": "Slug", + "type": "string" + }, + "source": { + "title": "Source", + "type": "string" + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Symbol" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "top_protocols": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Top Protocols", + "type": "array" + }, + "tvl_usd": { + "title": "Tvl Usd", + "type": "number" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Url" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "kind", + "slug", + "name", + "tvl_usd", + "chains", + "chain_tvls", + "source" + ], + "type": "object" +}
- Changed
defi_yields1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /defi-yields``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "filtered_outliers": { + "default": 0, + "title": "Filtered Outliers", + "type": "integer" + }, + "filters": { + "additionalProperties": true, + "title": "Filters", + "type": "object" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "pool_count": { + "title": "Pool Count", + "type": "integer" + }, + "pools": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Pools", + "type": "array" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_matching": { + "title": "Total Matching", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "filters", + "pools", + "pool_count", + "total_matching", + "source" + ], + "type": "object" +}
- Changed
dex_price1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /dex-price``.", + "properties": { + "asset": { + "properties": { + "address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Address" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Symbol" + } + }, + "title": "DexToken", + "type": "object" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fdv": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Fdv" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "liquidity_usd": { + "title": "Liquidity Usd", + "type": "number" + }, + "market_cap": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Market Cap" + }, + "pair_count": { + "title": "Pair Count", + "type": "integer" + }, + "pairs": { + "items": { + "properties": { + "dex": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Dex" + }, + "liquidity_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Liquidity Usd" + }, + "pair": { + "title": "Pair", + "type": "string" + }, + "pair_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pair Address" + }, + "price_change_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Change 24H" + }, + "price_native": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Native" + }, + "price_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Usd" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Url" + }, + "volume_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Volume 24H" + } + }, + "required": [ + "pair" + ], + "title": "DexPair", + "type": "object" + }, + "title": "Pairs", + "type": "array" + }, + "price_change_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Change 24H" + }, + "price_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Price Usd" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "volume_24h": { + "title": "Volume 24H", + "type": "number" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "asset", + "chain", + "volume_24h", + "liquidity_usd", + "pair_count", + "pairs", + "source" + ], + "type": "object" +}
- Changed
dns_lookup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /dns-lookup``.", + "properties": { + "answer_count": { + "title": "Answer Count", + "type": "integer" + }, + "answers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Answers", + "type": "array" + }, + "authority": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Authority", + "type": "array" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "dnssec_validated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Dnssec Validated" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "record_type": { + "title": "Record Type", + "type": "string" + }, + "resolver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Resolver" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "name", + "record_type", + "answers", + "answer_count", + "source" + ], + "type": "object" +}
- Changed
dns_whois1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /dns-whois``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "errors": { + "additionalProperties": { + "type": "string" + }, + "title": "Errors", + "type": "object" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "records": { + "additionalProperties": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "title": "Records", + "type": "object" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "whois": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Whois" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "domain", + "records" + ], + "type": "object" +}
- Changed
domain_rdap1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /domain-rdap``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "dnssec_signed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Dnssec Signed" + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "events": { + "additionalProperties": true, + "title": "Events", + "type": "object" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "nameservers": { + "items": { + "type": "string" + }, + "title": "Nameservers", + "type": "array" + }, + "note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Note" + }, + "rdap_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rdap Url" + }, + "registered": { + "title": "Registered", + "type": "boolean" + }, + "registrar": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Registrar" + }, + "registrar_iana_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Registrar Iana Id" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "status": { + "items": { + "type": "string" + }, + "title": "Status", + "type": "array" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "domain", + "registered", + "source" + ], + "type": "object" +}
- Changed
email_validate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /email-validate``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "deliverability_score": { + "title": "Deliverability Score", + "type": "integer" + }, + "disposable": { + "title": "Disposable", + "type": "boolean" + }, + "domain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Domain" + }, + "domain_resolves": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Domain Resolves" + }, + "email": { + "title": "Email", + "type": "string" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "free_provider": { + "title": "Free Provider", + "type": "boolean" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "has_mx": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Has Mx" + }, + "local_part": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Local Part" + }, + "mx_checked": { + "title": "Mx Checked", + "type": "boolean" + }, + "mx_records": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Mx Records", + "type": "array" + }, + "null_mx": { + "default": false, + "title": "Null Mx", + "type": "boolean" + }, + "role_account": { + "title": "Role Account", + "type": "boolean" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "valid_syntax": { + "title": "Valid Syntax", + "type": "boolean" + }, + "verdict": { + "title": "Verdict", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "email", + "valid_syntax", + "disposable", + "free_provider", + "role_account", + "mx_checked", + "deliverability_score", + "verdict" + ], + "type": "object" +}
- Changed
ens_resolve1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /ens-resolve``.", + "properties": { + "address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Address" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "namehash": { + "title": "Namehash", + "type": "string" + }, + "resolved": { + "title": "Resolved", + "type": "boolean" + }, + "resolver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Resolver" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "texts": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": "Texts", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "name", + "namehash", + "chain", + "resolved" + ], + "type": "object" +}
- Changed
erc20_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /erc20-balance``.", + "properties": { + "block_number": { + "title": "Block Number", + "type": "integer" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "chain_id": { + "title": "Chain Id", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "token_count": { + "title": "Token Count", + "type": "integer" + }, + "tokens": { + "items": { + "properties": { + "balance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Balance" + }, + "contract": { + "title": "Contract", + "type": "string" + }, + "decimals": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decimals" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "raw": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Raw" + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Symbol" + } + }, + "required": [ + "contract" + ], + "title": "Erc20TokenBalance", + "type": "object" + }, + "title": "Tokens", + "type": "array" + }, + "wallet_address": { + "title": "Wallet Address", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "wallet_address", + "chain", + "chain_id", + "block_number", + "tokens", + "token_count", + "source" + ], + "type": "object" +}
- Changed
extract_clean1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /extract-clean``.", + "properties": { + "confidence": { + "description": "Confidence score between 0 and 1.", + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1).", + "title": "Cost Usdc", + "type": "number" + }, + "data": { + "additionalProperties": true, + "description": "Extracted page data (title, description, text, json_ld, language, ...).", + "title": "Data", + "type": "object" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sources_checked": { + "description": "Number of providers consulted.", + "title": "Sources Checked", + "type": "integer" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "data", + "sources_checked", + "freshness_seconds", + "confidence", + "cost_usdc", + "routing" + ], + "type": "object" +}
- Changed
fear_greed1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /fear-greed``.", + "properties": { + "change_1d": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Change 1D" + }, + "change_7d": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Change 7D" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "date": { + "title": "Date", + "type": "string" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "history": { + "items": { + "properties": { + "classification": { + "title": "Classification", + "type": "string" + }, + "date": { + "title": "Date", + "type": "string" + }, + "timestamp": { + "title": "Timestamp", + "type": "integer" + }, + "value": { + "title": "Value", + "type": "integer" + } + }, + "required": [ + "value", + "classification", + "timestamp", + "date" + ], + "title": "FearGreedPoint", + "type": "object" + }, + "title": "History", + "type": "array" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "time_until_update_seconds": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Time Until Update Seconds" + }, + "timestamp": { + "title": "Timestamp", + "type": "integer" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "value": { + "title": "Value", + "type": "integer" + }, + "value_classification": { + "title": "Value Classification", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "value", + "value_classification", + "timestamp", + "date", + "history", + "source" + ], + "type": "object" +}
- Changed
gas_fees1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /gas-fees``.", + "properties": { + "base_fee_gwei": { + "title": "Base Fee Gwei", + "type": "number" + }, + "block_number": { + "title": "Block Number", + "type": "integer" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "chain_id": { + "title": "Chain Id", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "gas_price_gwei": { + "title": "Gas Price Gwei", + "type": "number" + }, + "gas_units_assumed": { + "additionalProperties": { + "type": "integer" + }, + "title": "Gas Units Assumed", + "type": "object" + }, + "native_price_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Native Price Usd" + }, + "native_token": { + "title": "Native Token", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "tiers": { + "additionalProperties": true, + "title": "Tiers", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "trend": { + "title": "Trend", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "chain", + "chain_id", + "native_token", + "block_number", + "base_fee_gwei", + "gas_price_gwei", + "trend", + "tiers", + "gas_units_assumed", + "freshness_seconds", + "cost_usdc", + "routing" + ], + "type": "object" +}
- Changed
geo_ip1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /geo-ip``.", + "properties": { + "asn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Asn" + }, + "city": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "City" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" + }, + "country_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country Code" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "ip": { + "title": "Ip", + "type": "string" + }, + "is_eu": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Is Eu" + }, + "is_private": { + "title": "Is Private", + "type": "boolean" + }, + "isp": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Isp" + }, + "latitude": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Latitude" + }, + "longitude": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Longitude" + }, + "org": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Org" + }, + "postal": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Postal" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Region" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Timezone" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "utc_offset": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Utc Offset" + }, + "version": { + "title": "Version", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "ip", + "version", + "is_private", + "source" + ], + "type": "object" +}
- Changed
geocode1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /geocode``.", + "properties": { + "attribution": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Attribution" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "domain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Domain" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "query": { + "title": "Query", + "type": "string" + }, + "result_count": { + "title": "Result Count", + "type": "integer" + }, + "results": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Results", + "type": "array" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "results", + "result_count", + "source" + ], + "type": "object" +}
- Changed
github_repo_summary1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /github-repo-summary``.", + "properties": { + "archived": { + "default": false, + "title": "Archived", + "type": "boolean" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Created At" + }, + "default_branch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Default Branch" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "fork": { + "default": false, + "title": "Fork", + "type": "boolean" + }, + "forks": { + "title": "Forks", + "type": "integer" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "homepage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Homepage" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Language" + }, + "languages": { + "additionalProperties": { + "type": "number" + }, + "title": "Languages", + "type": "object" + }, + "last_push": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Last Push" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "License" + }, + "open_issues": { + "title": "Open Issues", + "type": "integer" + }, + "readme_excerpt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Readme Excerpt" + }, + "recent_commits": { + "items": { + "properties": { + "author": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Author" + }, + "date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Date" + }, + "message": { + "title": "Message", + "type": "string" + }, + "sha": { + "title": "Sha", + "type": "string" + } + }, + "required": [ + "sha", + "message" + ], + "title": "RepoCommit", + "type": "object" + }, + "title": "Recent Commits", + "type": "array" + }, + "repo": { + "title": "Repo", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "stars": { + "title": "Stars", + "type": "integer" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "title": "Topics", + "type": "array" + }, + "url": { + "title": "Url", + "type": "string" + }, + "watchers": { + "default": 0, + "title": "Watchers", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "repo", + "url", + "stars", + "forks", + "open_issues", + "source" + ], + "type": "object" +}
- Changed
health1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``GET /health``.", + "properties": { + "cache_hit_rate": { + "title": "Cache Hit Rate", + "type": "number" + }, + "cache_hits": { + "title": "Cache Hits", + "type": "integer" + }, + "cache_misses": { + "title": "Cache Misses", + "type": "integer" + }, + "environment": { + "title": "Environment", + "type": "string" + }, + "error_count": { + "title": "Error Count", + "type": "integer" + }, + "error_rate": { + "title": "Error Rate", + "type": "number" + }, + "providers": { + "items": { + "properties": { + "avg_latency_ms": { + "title": "Avg Latency Ms", + "type": "number" + }, + "capability": { + "title": "Capability", + "type": "string" + }, + "circuit_open": { + "title": "Circuit Open", + "type": "boolean" + }, + "consecutive_failures": { + "title": "Consecutive Failures", + "type": "integer" + }, + "healthy": { + "title": "Healthy", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "requests": { + "title": "Requests", + "type": "integer" + }, + "success_rate": { + "title": "Success Rate", + "type": "number" + } + }, + "required": [ + "name", + "capability", + "healthy", + "circuit_open", + "consecutive_failures", + "success_rate", + "avg_latency_ms", + "requests" + ], + "title": "ProviderHealth", + "type": "object" + }, + "title": "Providers", + "type": "array" + }, + "redis_backend": { + "title": "Redis Backend", + "type": "string" + }, + "redis_connected": { + "title": "Redis Connected", + "type": "boolean" + }, + "request_count": { + "title": "Request Count", + "type": "integer" + }, + "status": { + "enum": [ + "ok", + "degraded", + "down" + ], + "title": "Status", + "type": "string" + }, + "timestamp": { + "format": "date-time", + "title": "Timestamp", + "type": "string" + }, + "uptime_seconds": { + "title": "Uptime Seconds", + "type": "number" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "status", + "version", + "environment", + "uptime_seconds", + "redis_connected", + "redis_backend", + "request_count", + "error_count", + "error_rate", + "cache_hits", + "cache_misses", + "cache_hit_rate", + "providers" + ], + "type": "object" +}
- Changed
hn_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /hn-search``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "hit_count": { + "title": "Hit Count", + "type": "integer" + }, + "hits": { + "items": { + "properties": { + "author": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Author" + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Created At" + }, + "num_comments": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Num Comments" + }, + "object_id": { + "title": "Object Id", + "type": "string" + }, + "points": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Points" + }, + "story_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Story Text" + }, + "story_url": { + "title": "Story Url", + "type": "string" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "type": { + "title": "Type", + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Url" + } + }, + "required": [ + "object_id", + "type", + "story_url" + ], + "title": "HnHit", + "type": "object" + }, + "title": "Hits", + "type": "array" + }, + "query": { + "title": "Query", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sort_by": { + "title": "Sort By", + "type": "string" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_hits": { + "title": "Total Hits", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "sort_by", + "hits", + "hit_count", + "total_hits", + "source" + ], + "type": "object" +}
- Changed
html_to_markdown1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /html-to-markdown``.", + "properties": { + "char_count": { + "title": "Char Count", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "extraction_method": { + "title": "Extraction Method", + "type": "string" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "final_url": { + "title": "Final Url", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "include_images": { + "title": "Include Images", + "type": "boolean" + }, + "include_links": { + "title": "Include Links", + "type": "boolean" + }, + "markdown": { + "title": "Markdown", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "truncated": { + "default": false, + "title": "Truncated", + "type": "boolean" + }, + "url": { + "title": "Url", + "type": "string" + }, + "word_count": { + "title": "Word Count", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "url", + "final_url", + "markdown", + "word_count", + "char_count", + "extraction_method", + "include_links", + "include_images" + ], + "type": "object" +}
- Changed
market_spread1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /market-spread``.", + "properties": { + "asset": { + "title": "Asset", + "type": "string" + }, + "buy_price": { + "title": "Buy Price", + "type": "number" + }, + "buy_venue": { + "title": "Buy Venue", + "type": "string" + }, + "confidence": { + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "estimated_net_profit_usd": { + "title": "Estimated Net Profit Usd", + "type": "number" + }, + "execution_risk": { + "enum": [ + "low", + "medium", + "high" + ], + "title": "Execution Risk", + "type": "string" + }, + "fees_bps": { + "title": "Fees Bps", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "gross_spread_bps": { + "title": "Gross Spread Bps", + "type": "number" + }, + "net_spread_bps": { + "title": "Net Spread Bps", + "type": "number" + }, + "quote": { + "title": "Quote", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sell_price": { + "title": "Sell Price", + "type": "number" + }, + "sell_venue": { + "title": "Sell Venue", + "type": "string" + }, + "slippage_bps": { + "title": "Slippage Bps", + "type": "number" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "transfer_cost": { + "description": "Absolute transfer/gas cost in quote units.", + "title": "Transfer Cost", + "type": "number" + }, + "transfer_cost_bps": { + "title": "Transfer Cost Bps", + "type": "number" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "asset", + "quote", + "buy_venue", + "sell_venue", + "buy_price", + "sell_price", + "gross_spread_bps", + "fees_bps", + "slippage_bps", + "transfer_cost", + "transfer_cost_bps", + "net_spread_bps", + "estimated_net_profit_usd", + "confidence", + "execution_risk", + "freshness_seconds", + "cost_usdc", + "routing" + ], + "type": "object" +}
- Changed
news_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /news-search``.", + "properties": { + "article_count": { + "title": "Article Count", + "type": "integer" + }, + "articles": { + "items": { + "properties": { + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" + }, + "domain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Domain" + }, + "image_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Image Url" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Language" + }, + "published_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Published At" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source" + }, + "title": { + "title": "Title", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "title": "NewsArticle", + "type": "object" + }, + "title": "Articles", + "type": "array" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "language": { + "title": "Language", + "type": "string" + }, + "query": { + "title": "Query", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "timespan": { + "title": "Timespan", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "language", + "timespan", + "articles", + "article_count", + "source" + ], + "type": "object" +}
- Changed
npm_package1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /npm-package``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "created_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Created At" + }, + "dependencies": { + "additionalProperties": true, + "title": "Dependencies", + "type": "object" + }, + "dependency_count": { + "default": 0, + "title": "Dependency Count", + "type": "integer" + }, + "deprecated": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Deprecated" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "homepage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Homepage" + }, + "keywords": { + "items": { + "type": "string" + }, + "title": "Keywords", + "type": "array" + }, + "latest_published_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Latest Published At" + }, + "latest_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Latest Version" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "License" + }, + "maintainers": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": "Maintainers", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "npm_url": { + "title": "Npm Url", + "type": "string" + }, + "repository_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Repository Url" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "version_count": { + "default": 0, + "title": "Version Count", + "type": "integer" + }, + "weekly_downloads": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Weekly Downloads" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "name", + "npm_url", + "source" + ], + "type": "object" +}
- Changed
payment_info2 fields changed- added
Input schema / properties / tool / descriptionAdded value: +"Name of the paid AMR tool to get payment requirements for (same name as in tools/list, e.g. `web_search`)." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Body of the HTTP 402 response following the x402 convention.", + "properties": { + "accepts": { + "items": { + "description": "A single accepted payment option in an x402 ``402`` response.", + "properties": { + "asset": { + "description": "Token contract address.", + "title": "Asset", + "type": "string" + }, + "assetSymbol": { + "title": "Assetsymbol", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "extra": { + "additionalProperties": true, + "title": "Extra", + "type": "object" + }, + "maxAmountRequired": { + "description": "Atomic units as string (6 decimals).", + "title": "Maxamountrequired", + "type": "string" + }, + "maxTimeoutSeconds": { + "title": "Maxtimeoutseconds", + "type": "integer" + }, + "mimeType": { + "default": "application/json", + "title": "Mimetype", + "type": "string" + }, + "network": { + "title": "Network", + "type": "string" + }, + "outputSchema": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Bazaar discovery info: {input:{type:'http',...}, output:{type:'json',...}}.", + "title": "Outputschema" + }, + "payTo": { + "title": "Payto", + "type": "string" + }, + "priceUsd": { + "title": "Priceusd", + "type": "number" + }, + "resource": { + "title": "Resource", + "type": "string" + }, + "scheme": { + "default": "exact", + "title": "Scheme", + "type": "string" + } + }, + "required": [ + "network", + "asset", + "assetSymbol", + "maxAmountRequired", + "priceUsd", + "payTo", + "resource", + "description", + "maxTimeoutSeconds" + ], + "title": "PaymentRequirement", + "type": "object" + }, + "title": "Accepts", + "type": "array" + }, + "error": { + "title": "Error", + "type": "string" + }, + "facilitator": { + "title": "Facilitator", + "type": "string" + }, + "free_tier": { + "additionalProperties": true, + "title": "Free Tier", + "type": "object" + }, + "x402Version": { + "default": 1, + "title": "X402Version", + "type": "integer" + } + }, + "required": [ + "error", + "accepts", + "facilitator" + ], + "type": "object" +}
- Changed
pdf_text1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /pdf-text``.", + "properties": { + "bytes": { + "title": "Bytes", + "type": "integer" + }, + "char_count": { + "title": "Char Count", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetch_ms": { + "title": "Fetch Ms", + "type": "integer" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "final_url": { + "title": "Final Url", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "metadata": { + "additionalProperties": true, + "title": "Metadata", + "type": "object" + }, + "page_count": { + "title": "Page Count", + "type": "integer" + }, + "pages": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Pages", + "type": "array" + }, + "pages_extracted": { + "title": "Pages Extracted", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "text": { + "title": "Text", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "truncated": { + "title": "Truncated", + "type": "boolean" + }, + "url": { + "title": "Url", + "type": "string" + }, + "word_count": { + "title": "Word Count", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "url", + "final_url", + "bytes", + "fetch_ms", + "page_count", + "pages_extracted", + "truncated", + "char_count", + "word_count", + "metadata", + "pages", + "text" + ], + "type": "object" +}
- Changed
pypi_package1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /pypi-package``.", + "properties": { + "author": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Author" + }, + "classifiers": { + "items": { + "type": "string" + }, + "title": "Classifiers", + "type": "array" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "dependency_count": { + "default": 0, + "title": "Dependency Count", + "type": "integer" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "homepage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Homepage" + }, + "keywords": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Keywords" + }, + "latest_released_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Latest Released At" + }, + "latest_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Latest Version" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "License" + }, + "name": { + "title": "Name", + "type": "string" + }, + "project_urls": { + "additionalProperties": true, + "title": "Project Urls", + "type": "object" + }, + "pypi_url": { + "title": "Pypi Url", + "type": "string" + }, + "release_count": { + "default": 0, + "title": "Release Count", + "type": "integer" + }, + "requires_dist": { + "items": { + "type": "string" + }, + "title": "Requires Dist", + "type": "array" + }, + "requires_python": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Requires Python" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + }, + "yanked": { + "default": false, + "title": "Yanked", + "type": "boolean" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "name", + "pypi_url", + "source" + ], + "type": "object" +}
- Changed
reddit_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /reddit-search``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "post_count": { + "title": "Post Count", + "type": "integer" + }, + "posts": { + "items": { + "properties": { + "author": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Author" + }, + "created_at": { + "title": "Created At", + "type": "string" + }, + "created_utc": { + "title": "Created Utc", + "type": "integer" + }, + "flair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Flair" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_self": { + "title": "Is Self", + "type": "boolean" + }, + "num_comments": { + "title": "Num Comments", + "type": "integer" + }, + "over_18": { + "default": false, + "title": "Over 18", + "type": "boolean" + }, + "permalink": { + "title": "Permalink", + "type": "string" + }, + "score": { + "title": "Score", + "type": "integer" + }, + "selftext": { + "title": "Selftext", + "type": "string" + }, + "subreddit": { + "title": "Subreddit", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "upvote_ratio": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Upvote Ratio" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "permalink", + "subreddit", + "score", + "num_comments", + "created_utc", + "created_at", + "selftext", + "is_self" + ], + "title": "RedditPost", + "type": "object" + }, + "title": "Posts", + "type": "array" + }, + "query": { + "title": "Query", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sort": { + "title": "Sort", + "type": "string" + }, + "source": { + "title": "Source", + "type": "string" + }, + "subreddit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Subreddit" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "sort", + "posts", + "post_count", + "source" + ], + "type": "object" +}
- Changed
rss_feed1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /rss-feed``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "feed_link": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Feed Link" + }, + "feed_title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Feed Title" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "format": { + "title": "Format", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "item_count": { + "title": "Item Count", + "type": "integer" + }, + "items": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Items", + "type": "array" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_items": { + "title": "Total Items", + "type": "integer" + }, + "url": { + "title": "Url", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "url", + "format", + "items", + "item_count", + "total_items" + ], + "type": "object" +}
- Changed
seo_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /seo-check``.", + "properties": { + "canonical": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Canonical" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "final_url": { + "title": "Final Url", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "grade": { + "title": "Grade", + "type": "string" + }, + "h1": { + "items": { + "type": "string" + }, + "title": "H1", + "type": "array" + }, + "h2_count": { + "title": "H2 Count", + "type": "integer" + }, + "hreflang_count": { + "title": "Hreflang Count", + "type": "integer" + }, + "html_bytes": { + "title": "Html Bytes", + "type": "integer" + }, + "http_status": { + "title": "Http Status", + "type": "integer" + }, + "https": { + "title": "Https", + "type": "boolean" + }, + "images": { + "additionalProperties": { + "type": "integer" + }, + "title": "Images", + "type": "object" + }, + "issues": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Issues", + "type": "array" + }, + "lang": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Lang" + }, + "links": { + "additionalProperties": { + "type": "integer" + }, + "title": "Links", + "type": "object" + }, + "load_ms": { + "title": "Load Ms", + "type": "integer" + }, + "meta_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Meta Description" + }, + "meta_description_length": { + "title": "Meta Description Length", + "type": "integer" + }, + "meta_robots": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Meta Robots" + }, + "open_graph": { + "additionalProperties": true, + "title": "Open Graph", + "type": "object" + }, + "redirects": { + "title": "Redirects", + "type": "integer" + }, + "robots_txt": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Robots Txt" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "score": { + "title": "Score", + "type": "integer" + }, + "sitemap": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sitemap" + }, + "structured_data_blocks": { + "title": "Structured Data Blocks", + "type": "integer" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "title_length": { + "title": "Title Length", + "type": "integer" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "twitter_card": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Twitter Card" + }, + "url": { + "title": "Url", + "type": "string" + }, + "viewport": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Viewport" + }, + "word_count": { + "title": "Word Count", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "url", + "final_url", + "http_status", + "redirects", + "https", + "load_ms", + "html_bytes", + "title_length", + "meta_description_length", + "h1", + "h2_count", + "word_count", + "images", + "links", + "open_graph", + "structured_data_blocks", + "hreflang_count", + "issues", + "score", + "grade" + ], + "type": "object" +}
- Changed
token_price1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /token-price``.", + "properties": { + "asset": { + "title": "Asset", + "type": "string" + }, + "change_24h_pct": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Change 24H Pct" + }, + "confidence": { + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "max_deviation_pct": { + "title": "Max Deviation Pct", + "type": "number" + }, + "price": { + "title": "Price", + "type": "number" + }, + "price_max": { + "title": "Price Max", + "type": "number" + }, + "price_min": { + "title": "Price Min", + "type": "number" + }, + "quote": { + "title": "Quote", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "sources": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Sources", + "type": "array" + }, + "sources_checked": { + "title": "Sources Checked", + "type": "integer" + }, + "sources_failed": { + "additionalProperties": { + "type": "string" + }, + "title": "Sources Failed", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "asset", + "quote", + "price", + "price_min", + "price_max", + "max_deviation_pct", + "sources", + "sources_checked", + "confidence", + "freshness_seconds", + "cost_usdc", + "routing" + ], + "type": "object" +}
- Changed
tx_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /tx-status``.", + "properties": { + "block_number": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Block Number" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "chain_id": { + "title": "Chain Id", + "type": "integer" + }, + "confirmations": { + "title": "Confirmations", + "type": "integer" + }, + "contract_created": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Contract Created" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fee_native": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Fee Native" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "from_address": { + "title": "From Address", + "type": "string" + }, + "gas_price_gwei": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Gas Price Gwei" + }, + "gas_price_wei": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Gas Price Wei" + }, + "gas_used": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Gas Used" + }, + "input_selector": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Input Selector" + }, + "log_count": { + "title": "Log Count", + "type": "integer" + }, + "native_token": { + "title": "Native Token", + "type": "string" + }, + "nonce": { + "title": "Nonce", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "status": { + "enum": [ + "success", + "failed", + "pending" + ], + "title": "Status", + "type": "string" + }, + "to_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "To Address" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "transfers": { + "items": { + "description": "Decoded ERC-20 ``Transfer`` event.", + "properties": { + "amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Amount" + }, + "contract": { + "title": "Contract", + "type": "string" + }, + "decimals": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Decimals" + }, + "from_address": { + "title": "From Address", + "type": "string" + }, + "log_index": { + "title": "Log Index", + "type": "integer" + }, + "raw": { + "title": "Raw", + "type": "string" + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Symbol" + }, + "to_address": { + "title": "To Address", + "type": "string" + } + }, + "required": [ + "contract", + "from_address", + "to_address", + "raw", + "log_index" + ], + "title": "Erc20Transfer", + "type": "object" + }, + "title": "Transfers", + "type": "array" + }, + "tx_hash": { + "title": "Tx Hash", + "type": "string" + }, + "value": { + "title": "Value", + "type": "number" + }, + "value_wei": { + "title": "Value Wei", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "tx_hash", + "chain", + "chain_id", + "status", + "confirmations", + "from_address", + "value_wei", + "value", + "native_token", + "nonce", + "transfers", + "log_count" + ], + "type": "object" +}
- Changed
url_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /url-status``.", + "properties": { + "content_length": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Content Length" + }, + "content_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Content Type" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "final_url": { + "title": "Final Url", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "method_used": { + "title": "Method Used", + "type": "string" + }, + "missing_security_headers": { + "items": { + "type": "string" + }, + "title": "Missing Security Headers", + "type": "array" + }, + "ok": { + "title": "Ok", + "type": "boolean" + }, + "reachable": { + "title": "Reachable", + "type": "boolean" + }, + "redirect_chain": { + "items": { + "properties": { + "location": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Location" + }, + "status_code": { + "title": "Status Code", + "type": "integer" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "required": [ + "url", + "status_code" + ], + "title": "RedirectHop", + "type": "object" + }, + "title": "Redirect Chain", + "type": "array" + }, + "redirect_count": { + "title": "Redirect Count", + "type": "integer" + }, + "response_time_ms": { + "title": "Response Time Ms", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "security_headers": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": "Security Headers", + "type": "object" + }, + "security_score": { + "title": "Security Score", + "type": "integer" + }, + "server": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Server" + }, + "ssl": { + "properties": { + "checked": { + "title": "Checked", + "type": "boolean" + }, + "days_until_expiry": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Days Until Expiry" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "expires_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Expires At" + }, + "issuer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Issuer" + }, + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Subject" + }, + "valid": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Valid" + } + }, + "required": [ + "checked" + ], + "title": "SslInfo", + "type": "object" + }, + "status_code": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status Code" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "url", + "final_url", + "reachable", + "ok", + "method_used", + "response_time_ms", + "redirect_count", + "redirect_chain", + "ssl", + "security_headers", + "security_score", + "missing_security_headers" + ], + "type": "object" +}
- Changed
wallet_balance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /wallet-balance``.", + "properties": { + "address": { + "title": "Address", + "type": "string" + }, + "balances": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "title": "Balances", + "type": "object" + }, + "block_number": { + "title": "Block Number", + "type": "integer" + }, + "chain": { + "title": "Chain", + "type": "string" + }, + "chain_id": { + "title": "Chain Id", + "type": "integer" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_usd": { + "title": "Total Usd", + "type": "number" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "address", + "chain", + "chain_id", + "block_number", + "balances", + "total_usd", + "freshness_seconds", + "cost_usdc", + "routing" + ], + "type": "object" +}
- Changed
web_crawl1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /web-crawl``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "follow_links": { + "title": "Follow Links", + "type": "boolean" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "max_pages": { + "title": "Max Pages", + "type": "integer" + }, + "page_count": { + "title": "Page Count", + "type": "integer" + }, + "pages": { + "items": { + "properties": { + "depth": { + "title": "Depth", + "type": "integer" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "final_url": { + "title": "Final Url", + "type": "string" + }, + "internal_links": { + "items": { + "type": "string" + }, + "title": "Internal Links", + "type": "array" + }, + "links_found": { + "title": "Links Found", + "type": "integer" + }, + "markdown": { + "title": "Markdown", + "type": "string" + }, + "status_code": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status Code" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "url": { + "title": "Url", + "type": "string" + }, + "word_count": { + "title": "Word Count", + "type": "integer" + } + }, + "required": [ + "url", + "final_url", + "markdown", + "word_count", + "links_found", + "internal_links", + "depth" + ], + "title": "CrawledPage", + "type": "object" + }, + "title": "Pages", + "type": "array" + }, + "pages_failed": { + "title": "Pages Failed", + "type": "integer" + }, + "queued_not_fetched": { + "title": "Queued Not Fetched", + "type": "integer" + }, + "robots_blocked": { + "title": "Robots Blocked", + "type": "integer" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "start_url": { + "title": "Start Url", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "total_words": { + "title": "Total Words", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "start_url", + "domain", + "pages", + "page_count", + "pages_failed", + "max_pages", + "follow_links", + "robots_blocked", + "queued_not_fetched", + "total_words" + ], + "type": "object" +}
- Changed
web_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /web-search``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "query": { + "title": "Query", + "type": "string" + }, + "region": { + "title": "Region", + "type": "string" + }, + "result_count": { + "title": "Result Count", + "type": "integer" + }, + "results": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Results", + "type": "array" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "region", + "results", + "result_count", + "source" + ], + "type": "object" +}
- Changed
wikipedia_summary1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /wikipedia-summary``.", + "properties": { + "coordinates": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Coordinates" + }, + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" + }, + "extract": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Extract" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "language": { + "title": "Language", + "type": "string" + }, + "last_modified": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Last Modified" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "License" + }, + "page_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Page Type" + }, + "page_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Page Url" + }, + "query": { + "title": "Query", + "type": "string" + }, + "resolved_from_search": { + "default": false, + "title": "Resolved From Search", + "type": "boolean" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "source": { + "title": "Source", + "type": "string" + }, + "thumbnail_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Thumbnail Url" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "query", + "language", + "source" + ], + "type": "object" +}
- Changed
youtube_transcript1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "description": "Response for ``POST /youtube-transcript``.", + "properties": { + "cost_usdc": { + "description": "Price charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.", + "title": "Cost Usdc", + "type": "number" + }, + "duration_seconds": { + "title": "Duration Seconds", + "type": "integer" + }, + "fetched_at": { + "description": "UTC timestamp when the data was fetched.", + "format": "date-time", + "title": "Fetched At", + "type": "string" + }, + "freshness_seconds": { + "description": "Age of the underlying data in seconds (0 = fetched live).", + "title": "Freshness Seconds", + "type": "integer" + }, + "full_text": { + "title": "Full Text", + "type": "string" + }, + "is_generated": { + "default": false, + "title": "Is Generated", + "type": "boolean" + }, + "language": { + "title": "Language", + "type": "string" + }, + "routing": { + "description": "How the request was routed (provider, fallback, cache, latency).", + "properties": { + "cache_hit": { + "default": false, + "description": "True if the result was served from cache.", + "title": "Cache Hit", + "type": "boolean" + }, + "fallback_used": { + "default": false, + "description": "True if the primary provider failed and a fallback served the result.", + "title": "Fallback Used", + "type": "boolean" + }, + "latency_ms": { + "default": 0, + "description": "End-to-end routing latency in milliseconds.", + "title": "Latency Ms", + "type": "integer" + }, + "provider": { + "description": "Name of the upstream provider that served the result.", + "title": "Provider", + "type": "string" + }, + "providers_tried": { + "description": "Providers attempted, in order.", + "items": { + "type": "string" + }, + "title": "Providers Tried", + "type": "array" + } + }, + "required": [ + "provider" + ], + "title": "RoutingMeta", + "type": "object" + }, + "segment_count": { + "title": "Segment Count", + "type": "integer" + }, + "segments": { + "items": { + "properties": { + "end": { + "title": "End", + "type": "number" + }, + "start": { + "title": "Start", + "type": "number" + }, + "text": { + "title": "Text", + "type": "string" + } + }, + "required": [ + "start", + "end", + "text" + ], + "title": "TranscriptSegment", + "type": "object" + }, + "title": "Segments", + "type": "array" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "token": { + "default": "USDC", + "description": "Token actually used for payment (USDC, USDT or FREE).", + "title": "Token", + "type": "string" + }, + "video_id": { + "title": "Video Id", + "type": "string" + }, + "word_count": { + "title": "Word Count", + "type": "integer" + }, + "x_payment_response": { + "description": "Base64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.", + "type": "string" + } + }, + "required": [ + "freshness_seconds", + "cost_usdc", + "routing", + "video_id", + "language", + "duration_seconds", + "segment_count", + "full_text", + "word_count" + ], + "type": "object" +}
39 tool updates
- Changed
agent_wallet_snapshot1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
arxiv_search - Added
contract_info - Changed
crypto_ohlcv6 fields changed- added
Input schema / properties / interval / defaultAdded value: +"1h" - added
Input schema / properties / limit / defaultAdded value: +100 - added
Input schema / properties / limit / maximumAdded value: +500 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / quote / defaultAdded value: +"USDT" - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
currency_convert2 fields changed- added
Input schema / properties / amount / defaultAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
defi_tvl1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
defi_yields5 fields changed- added
Input schema / properties / limit / defaultAdded value: +10 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / min_tvl_usd / defaultAdded value: +100000 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
dex_price4 fields changed- added
Input schema / properties / max_pairs / defaultAdded value: +5 - added
Input schema / properties / max_pairs / maximumAdded value: +20 - added
Input schema / properties / max_pairs / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
dns_lookup - Changed
dns_whois2 fields changed- added
Input schema / properties / include_whois / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
domain_rdap - Changed
email_validate2 fields changed- added
Input schema / properties / check_mx / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
ens_resolve1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
erc20_balance1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
extract_clean2 fields changed- added
Input schema / properties / url / formatAdded value: +"uri" - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
fear_greed4 fields changed- added
Input schema / properties / limit / defaultAdded value: +1 - added
Input schema / properties / limit / maximumAdded value: +90 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
gas_fees3 fields changed- added
Input schema / properties / chain / defaultAdded value: +"base" - added
Input schema / properties / max_age_seconds / defaultAdded value: +10 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
geo_ip1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
geocode - Changed
github_repo_summary3 fields changed- added
Input schema / properties / include_commits / defaultAdded value: +true - added
Input schema / properties / include_readme / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
hn_search4 fields changed- added
Input schema / properties / max_results / defaultAdded value: +10 - added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
html_to_markdown3 fields changed- added
Input schema / properties / include_images / defaultAdded value: +false - added
Input schema / properties / include_links / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
market_spread4 fields changed- added
Input schema / properties / max_age_seconds / defaultAdded value: +30 - added
Input schema / properties / quote / defaultAdded value: +"USDT" - added
Input schema / properties / size_usd / defaultAdded value: +1000 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
news_search5 fields changed- added
Input schema / properties / language / defaultAdded value: +"en" - added
Input schema / properties / max_results / defaultAdded value: +10 - added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
npm_package - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price", - "tx_status", - "erc20_balance", - "news_search", - "hn_search", - "reddit_search", - "defi_tvl", - "fear_greed", - "agent_wallet_snapshot", - "url_status", - "web_crawl" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl", + "wikipedia_summary", + "arxiv_search", + "npm_package", + "pypi_package", + "geocode", + "domain_rdap", + "dns_lookup", + "contract_info" +]
- Changed
pdf_text4 fields changed- added
Input schema / properties / max_pages / defaultAdded value: +50 - added
Input schema / properties / max_pages / maximumAdded value: +200 - added
Input schema / properties / max_pages / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
pypi_package - Changed
reddit_search4 fields changed- added
Input schema / properties / max_results / defaultAdded value: +10 - added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
rss_feed4 fields changed- added
Input schema / properties / max_items / defaultAdded value: +20 - added
Input schema / properties / max_items / maximumAdded value: +100 - added
Input schema / properties / max_items / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
seo_check2 fields changed- added
Input schema / properties / check_robots / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
token_price3 fields changed- added
Input schema / properties / max_age_seconds / defaultAdded value: +5 - added
Input schema / properties / quote / defaultAdded value: +"USD" - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
tx_status2 fields changed- added
Input schema / properties / max_age_seconds / defaultAdded value: +0 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
url_status1 field changed- changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
wallet_balance2 fields changed- added
Input schema / properties / chain / defaultAdded value: +"base" - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
web_crawl7 fields changed- added
Input schema / properties / follow_links / defaultAdded value: +true - added
Input schema / properties / include_links / defaultAdded value: +true - added
Input schema / properties / max_pages / defaultAdded value: +5 - added
Input schema / properties / max_pages / maximumAdded value: +10 - added
Input schema / properties / max_pages / minimumAdded value: +1 - added
Input schema / properties / respect_robots / defaultAdded value: +true - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Changed
web_search4 fields changed- added
Input schema / properties / max_results / defaultAdded value: +10 - added
Input schema / properties / max_results / maximumAdded value: +20 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
- Added
wikipedia_summary - Changed
youtube_transcript3 fields changed- added
Input schema / properties / include_segments / defaultAdded value: +true - added
Input schema / properties / language / defaultAdded value: +"en" - changed
Input schema / properties / wallet / descriptionPrevious value: -"Your EVM wallet address (0x...). Unlocks the free tier (3 calls per wallet)."New value: +"Your EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet)."
11 tool updates
- Added
agent_wallet_snapshot - Added
defi_tvl - Added
erc20_balance - Added
fear_greed - Added
hn_search - Added
news_search - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve", - "html_to_markdown", - "youtube_transcript", - "github_repo_summary", - "dex_price" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price", + "tx_status", + "erc20_balance", + "news_search", + "hn_search", + "reddit_search", + "defi_tvl", + "fear_greed", + "agent_wallet_snapshot", + "url_status", + "web_crawl" +]
- Added
reddit_search - Added
tx_status - Added
url_status - Added
web_crawl
5 tool updates
- Added
dex_price - Added
github_repo_summary - Added
html_to_markdown - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check", - "defi_yields", - "currency_convert", - "geo_ip", - "rss_feed", - "crypto_ohlcv", - "ens_resolve" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve", + "html_to_markdown", + "youtube_transcript", + "github_repo_summary", + "dex_price" +]
- Added
youtube_transcript
7 tool updates
- Added
crypto_ohlcv - Added
currency_convert - Added
defi_yields - Added
ens_resolve - Added
geo_ip - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance", - "web_search", - "email_validate", - "dns_whois", - "pdf_text", - "seo_check" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check", + "defi_yields", + "currency_convert", + "geo_ip", + "rss_feed", + "crypto_ohlcv", + "ens_resolve" +]
- Added
rss_feed
6 tool updates
- Added
dns_whois - Added
email_validate - Changed
payment_info1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "extract_clean", - "market_spread", - "gas_fees", - "token_price", - "wallet_balance" -]New value: +[ + "extract_clean", + "market_spread", + "gas_fees", + "token_price", + "wallet_balance", + "web_search", + "email_validate", + "dns_whois", + "pdf_text", + "seo_check" +]
- Added
pdf_text - Added
seo_check - Added
web_search
7 tool updates
- First observed
extract_clean - First observed
gas_fees - First observed
health - First observed
market_spread - First observed
payment_info - First observed
token_price - First observed
wallet_balance
Related MCP Connectors
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
x402 toolkit for AI agents: paid web, AI, and Base chain tools per call in USDC. Free tools too.
Pay-per-call (x402/USDC-Base) web + crypto data tools for AI agents: audit, extract, crypto, DeFi.
x402 paid APIs for AI agents on Base. Blockchain, wallet, DEX, crypto, web search.
Related MCP Servers
FlicenseNot gradedqualityCmaintenance43 x402-enabled API tools — DeFi, wallet security, AI/ML, developer tools, SEO. Pay-per-call USDC on Base via x402 protocol.-- AlicenseBqualityAmaintenancePay-per-call AI agent APIs on Base via x402. Multiple tools across patents, law, AI, geo, weather, crypto, and more. Always growing.2018MIT

hyperd-mcpofficial
AlicenseAqualityDmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.2341 npm1MIT
CyberWareX MCP Serversofficial
AlicenseAqualityBmaintenancePay-per-call x402 APIs for AI agents: DeFi token safety (honeypot/tax simulation, A-F grade), EVM chain data, web access (markdown/screenshot/PDF), speech-to-text. USDC on Base, no account, no API key3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.