Skip to main content
Glama

Server Details

38 x402 pay-per-call tools for AI agents (USDC/USDT on Base): web, crypto, on-chain, geo, packages

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A3.8/5.0

Scored across 53 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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 tools
agent_wallet_snapshotAgent Wallet SnapshotA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase (default), ethereum, bsc, polygon, arbitrum, optimism.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
wallet_addressYesEVM wallet address.
token_contractsNoERC-20 contracts to include (max 20); default: USDC, USDT, DAI, WETH.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
chain_idYes
tx_countYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
is_contractYes
block_numberYes
native_tokenYes
calls_bundledYes
gas_price_weiYes
gas_price_gweiYes
native_balanceYes
token_balancesYes
wallet_addressYes
total_usd_valueYes
native_price_usdNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

best_priceBest PriceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase | ethereum | arbitrum | optimism | polygon (default base).base
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYesSource that produced the cheapest quote.
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
provisionYesCommission charged on the savings (USD).
user_paysYesbest_price + provision (USD).
best_priceYesCheapest quote across all sources (USD).
quotes_countYesNumber of sources that answered.
user_savingsYesaverage_price - user_pays (USD, what the caller still saves).
average_priceYesMean of all quotes (USD).
savings_grossYesaverage_price - best_price (USD, >= 0).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
user_pays_micro_usdcYesuser_pays expressed in micro-USDC (x402 unit, 1e6).

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 InfoA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain (default base).base
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
addressYesEVM contract or wallet address (0x...).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
addressYes
routingYesHow the request was routed (provider, fallback, cache, latency).
is_proxyNo
languageNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
proxy_typeNo
token_infoNo
event_namesNo
is_contractYes
is_verifiedNo
verified_atNo
explorer_urlNo
license_typeNo
abi_availableNo
contract_nameNo
function_namesNo
creator_addressNo
implementationsNo
compiler_versionNo
creation_tx_hashNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
optimization_enabledNo
source_code_availableNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 OHLCVA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoCandles (1-500, default 100).
quoteNoQuote asset (default USDT).USDT
symbolYesBase asset, e.g. BTC.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
intervalNo1m 5m 15m 30m 1h 4h 1d 1w (default 1h).1h
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
symbolYes
candlesYes
routingYesHow the request was routed (provider, fallback, cache, latency).
summaryYes
intervalYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
candle_countYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ConvertA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget currencies, e.g. ["USD", "GBP"].
fromYesISO-4217 source currency, e.g. EUR.
amountNoAmount in source currency (default 1).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratesYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
amountYes
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
convertedYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
rate_dateNo
fetched_atNoUTC timestamp when the data was fetched.
from_currencyYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TVLA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain name, e.g. base, ethereum, arbitrum.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
protocolNoDefiLlama protocol slug, e.g. aave, uniswap, aerodrome (either protocol or chain).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
kindYes
nameYes
slugYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
chainsYes
sourceYes
symbolNo
routingYesHow the request was routed (provider, fallback, cache, latency).
tvl_usdYes
categoryNo
chain_idNo
mcap_usdNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
chain_tvlsYes
fetched_atNoUTC timestamp when the data was fetched.
native_tokenNo
change_1d_pctNo
change_7d_pctNo
top_protocolsNo
mcap_tvl_ratioNo
protocol_countNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 YieldsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNoAsset symbol in pool, e.g. USDC.
chainNoChain filter, e.g. Base, Ethereum.
limitNoMax pools (1-50, default 10).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
projectNoProtocol slug, e.g. aave-v3.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
min_tvl_usdNoMinimum TVL in USD (default 100000).
stablecoins_onlyNoOnly stablecoin pools.

Output Schema

ParametersJSON Schema
NameRequiredDescription
poolsYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
filtersYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
pool_countYes
total_matchingYes
filtered_outliersNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 PriceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase (default), ethereum, arbitrum, optimism, polygon, bsc, avalanche, solana.
symbolNoToken symbol, e.g. AERO (if no address).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
max_pairsNoPairs to return (1-20, default 5).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
token_addressNoToken contract address (preferred).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fdvNo
assetYes
chainYes
pairsYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
price_usdNo
fetched_atNoUTC timestamp when the data was fetched.
market_capNo
pair_countYes
volume_24hYes
liquidity_usdYes
price_change_24hNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 LookupA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHost name to resolve.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
record_typeNoRecord type (default A).A

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
statusNo
answersYes
routingYesHow the request was routed (provider, fallback, cache, latency).
resolverNo
authorityNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
record_typeYes
answer_countYes
dnssec_validatedNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 + WHOISA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name, e.g. example.com.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
record_typesNoDefault A AAAA MX NS TXT CNAME.
include_whoisNoInclude RDAP data (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tokenNoToken actually used for payment (USDC, USDT or FREE).
whoisNo
domainYes
errorsNo
recordsYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RDAPA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRegistrable domain, e.g. example.com.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
domainYes
eventsNo
sourceYes
statusNo
routingYesHow the request was routed (provider, fallback, cache, latency).
rdap_urlNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
registrarNo
fetched_atNoUTC timestamp when the data was fetched.
registeredYes
nameserversNo
dnssec_signedNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
registrar_iana_idNo
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 ValidateA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
check_mxNoResolve MX records (default true).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
domainNo
has_mxNo
null_mxNo
routingYesHow the request was routed (provider, fallback, cache, latency).
verdictYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
disposableYes
fetched_atNoUTC timestamp when the data was fetched.
local_partNo
mx_checkedYes
mx_recordsNo
role_accountYes
valid_syntaxYes
free_providerYes
domain_resolvesNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
deliverability_scoreYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ResolveA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesENS name, e.g. vitalik.eth.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
text_keysNoText records to read (default url, com.twitter, avatar).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
chainYes
textsNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
addressNo
routingYesHow the request was routed (provider, fallback, cache, latency).
namehashYes
resolvedYes
resolverNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase (default), ethereum, bsc, polygon, arbitrum, optimism.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
wallet_addressYesEVM wallet address.
contract_addressesYes1-20 ERC-20 contract addresses.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
tokensYes
routingYesHow the request was routed (provider, fallback, cache, latency).
chain_idYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
token_countYes
block_numberYes
wallet_addressYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CleanA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic URL to extract.
schemaNoOptional JSON schema for the output.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
instructionsNoOptional natural-language hints.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesExtracted page data (title, description, text, json_ld, language, ...).
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1).
confidenceYesConfidence score between 0 and 1.
fetched_atNoUTC timestamp when the data was fetched.
sources_checkedYesNumber of providers consulted.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 & GreedA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDaily data points to return, 1-90 (default 1).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dateYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
valueYes
sourceYes
historyYes
routingYesHow the request was routed (provider, fallback, cache, latency).
change_1dNo
change_7dNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
timestampYes
fetched_atNoUTC timestamp when the data was fetched.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
value_classificationYes
time_until_update_secondsNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DiscoverA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to inspect.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
feedsNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
feed_countYes
fetched_atNoUTC timestamp when the data was fetched.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 FeesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase | ethereum | arbitrum | optimism | polygon (default base).base
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
max_age_secondsNoMax cache age (default 10).

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tiersYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
trendYes
routingYesHow the request was routed (provider, fallback, cache, latency).
chain_idYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
block_numberYes
native_tokenYes
base_fee_gweiYes
gas_price_gweiYes
native_price_usdNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
gas_units_assumedYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

geocodeGeocodeA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPlace name or address.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
languageNoResult language (default en).en
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
max_resultsNo1-10 (default 5).
country_codesNoComma-separated ISO codes, e.g. de,at.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
domainNo
sourceYes
resultsYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
attributionNo
result_countYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 IPA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIPv4 or IPv6 address.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ipYes
asnNo
ispNo
orgNo
cityNo
is_euNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
postalNo
regionNo
sourceYes
countryNo
routingYesHow the request was routed (provider, fallback, cache, latency).
versionYes
latitudeNo
timezoneNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
longitudeNo
fetched_atNoUTC timestamp when the data was fetched.
is_privateYes
utc_offsetNo
country_codeNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 SummaryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesowner/name or github.com URL.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
include_readmeNoInclude README excerpt (default true).
include_commitsNoInclude recent commits (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
forkNo
repoYes
forksYes
starsYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
topicsNo
licenseNo
routingYesHow the request was routed (provider, fallback, cache, latency).
archivedNo
homepageNo
languageNo
watchersNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
languagesNo
last_pushNo
created_atNo
fetched_atNoUTC timestamp when the data was fetched.
descriptionNo
open_issuesYes
default_branchNo
readme_excerptNo
recent_commitsNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 GeneratorA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to hash (UTF-8).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
algorithmsNoAlgorithms: md5, sha1, sha224, sha256 (default), sha384, sha512. Accepts a list or comma-separated string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tokenNoToken actually used for payment (USDC, USDT or FREE).
hashesNo
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
algorithmsNo
fetched_atNoUTC timestamp when the data was fetched.
byte_lengthYes
text_lengthYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 healthA
Read-only
Inspect

Free. Returns AMR service status, provider health and cache metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
versionYes
providersYes
timestampNo
cache_hitsYes
error_rateYes
environmentYes
error_countYes
cache_missesYes
redis_backendYes
request_countYes
cache_hit_rateYes
uptime_secondsYes
redis_connectedYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

holidaysPublic HolidaysA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesCalendar year, e.g. 2026.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
country_codeYesISO 3166-1 alpha-2, e.g. DE, US, GB.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
holidaysNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
attributionNo
country_codeYes
holiday_countYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 MarkdownA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic page URL.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
include_linksNoKeep hyperlinks (default true).
include_imagesNoKeep images (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
titleNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
markdownYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
truncatedNo
char_countYes
fetched_atNoUTC timestamp when the data was fetched.
word_countYes
include_linksYes
include_imagesYes
extraction_methodYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 SpreadA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYesTicker, e.g. ETH.
quoteNoQuote currency (default USDT).USDT
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
size_usdNoNotional size in USD (default 1000).
buy_venueYesVenue to buy on, e.g. binance.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
sell_venueYesVenue to sell on, e.g. coinbase.
max_age_secondsNoMax quote age (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYes
quoteYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
fees_bpsYes
buy_priceYes
buy_venueYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
confidenceYes
fetched_atNoUTC timestamp when the data was fetched.
sell_priceYes
sell_venueYes
slippage_bpsYes
transfer_costYesAbsolute transfer/gas cost in quote units.
execution_riskYes
net_spread_bpsYes
gross_spread_bpsYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
transfer_cost_bpsYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
estimated_net_profit_usdYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ConvertA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic URL of the source file.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
operationNoNamed operation, e.g. extract-audio, thumbnail, transcode.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
target_formatYesOutput format, e.g. mp3, mp4, webm, wav, png.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
operationNo
fetched_atNoUTC timestamp when the data was fetched.
output_urlYes
source_urlYes
output_bytesNo
target_formatYes
duration_secondsNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 MetadataA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) page URL.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
langNo
titleNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
charsetNo
faviconNo
routingYesHow the request was routed (provider, fallback, cache, latency).
twitterYes
keywordsNo
og_countYes
canonicalNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
fetched_atNoUTC timestamp when the data was fetched.
open_graphYes
descriptionNo
status_codeYes
twitter_countYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

npm_packagenpm PackageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name (scoped allowed, e.g. @scope/pkg).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
licenseNo
npm_urlYes
routingYesHow the request was routed (provider, fallback, cache, latency).
homepageNo
keywordsNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
created_atNo
deprecatedNo
fetched_atNoUTC timestamp when the data was fetched.
descriptionNo
maintainersNo
dependenciesNo
version_countNo
latest_versionNo
repository_urlNo
dependency_countNo
weekly_downloadsNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
latest_published_atNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 requirementsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesName of the paid AMR tool to get payment requirements for (same name as in tools/list, e.g. `web_search`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorYes
acceptsYes
free_tierNo
extensionsNo
facilitatorYes
x402VersionNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TextA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic PDF URL.
pagesNo1-based page numbers to extract.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
max_pagesNo1-200, default 50.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
textYes
bytesYes
pagesYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
fetch_msYes
metadataYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
truncatedYes
char_countYes
fetched_atNoUTC timestamp when the data was fetched.
page_countYes
word_countYes
pages_extractedYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PackageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI project name.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
authorNo
sourceYes
yankedNo
licenseNo
routingYesHow the request was routed (provider, fallback, cache, latency).
summaryNo
homepageNo
keywordsNo
pypi_urlYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
classifiersNo
project_urlsNo
release_countNo
requires_distNo
latest_versionNo
requires_pythonNo
dependency_countNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
latest_released_atNo
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 GeneratorA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesText or URL to encode in the QR code.
scaleNoPixel size of each QR module in the SVG (1-40). Defaults to 8.
borderNoQuiet-zone width in modules (0-20). Defaults to 4.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
error_correctionNoError-correction level: L, M, Q or H. Defaults to M.

Output Schema

ParametersJSON Schema
NameRequiredDescription
svgYes
dataYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
formatYes
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
versionYes
data_uriYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
module_countYes
error_correctionYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A3.6/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

robots_checkRobots.txt CheckA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL to test.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
user_agentNoUA string to evaluate (default *).

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
allowedYes
routingYesHow the request was routed (provider, fallback, cache, latency).
sitemapsNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
user_agentYes
path_checkedYes
request_rateNo
robots_txt_urlYes
robots_txt_foundYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
robots_status_codeNo
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
crawl_delay_secondsNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 FeedA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFeed URL.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
max_itemsNoMax items (1-100, default 20).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
include_contentNoInclude full text content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
itemsYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
formatYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
feed_linkNo
feed_titleNo
fetched_atNoUTC timestamp when the data was fetched.
item_countYes
total_itemsYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 CheckA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPage URL to audit.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
check_robotsNoProbe robots.txt + sitemap (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
h1Yes
urlYes
langNo
gradeYes
httpsYes
linksYes
scoreYes
titleNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
imagesYes
issuesYes
load_msYes
routingYesHow the request was routed (provider, fallback, cache, latency).
sitemapNo
h2_countYes
viewportNo
canonicalNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
redirectsYes
fetched_atNoUTC timestamp when the data was fetched.
html_bytesYes
open_graphYes
robots_txtNo
word_countYes
http_statusYes
meta_robotsNo
title_lengthYes
twitter_cardNo
hreflang_countYes
meta_descriptionNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
structured_data_blocksYes
meta_description_lengthYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 URLsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSitemap URL, sitemap index, or a site root.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
max_urlsNo1-5000 (default 200).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
urlsYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
max_urlsYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
truncatedYes
url_countYes
fetched_atNoUTC timestamp when the data was fetched.
child_sitemapsYes
discovered_viaYes
sitemaps_fetchedYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 StatsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPage URL to fetch and analyse instead of raw text.
textNoRaw text to analyse. Optional if url is given.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
fetched_atNoUTC timestamp when the data was fetched.
word_countYes
sentence_countYes
syllable_countYes
character_countYes
paragraph_countYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
complex_word_countYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
flesch_reading_easeNo
flesch_kincaid_gradeNo
reading_time_minutesYes
speaking_time_minutesYes
avg_syllables_per_wordYes
avg_words_per_sentenceYes
character_count_no_spacesYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 TimeA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
locationNoPlace name to geocode to a timezone, e.g. 'Tokyo'. Used when timezone is omitted.
timezoneNoIANA timezone name, e.g. 'Europe/Berlin'. Optional if location is given.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dateYes
timeYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
is_dstYes
sourceYes
countryNo
routingYesHow the request was routed (provider, fallback, cache, latency).
datetimeYes
latitudeNo
locationNo
timezoneYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
longitudeNo
unix_timeYes
fetched_atNoUTC timestamp when the data was fetched.
utc_offsetYes
day_of_weekYes
day_of_yearYes
week_numberYes
abbreviationNo
utc_datetimeYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
dst_offset_secondsYes
utc_offset_secondsYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PriceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYesTicker, e.g. ETH.
quoteNoQuote currency (default USD).USD
venuesNoSubset of binance, coinbase, kraken, coingecko.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
max_age_secondsNoMax cache age (default 5).

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYes
priceYes
quoteYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
sourcesYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
price_maxYes
price_minYes
confidenceYes
fetched_atNoUTC timestamp when the data was fetched.
change_24h_pctNo
sources_failedNo
sources_checkedYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
max_deviation_pctYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StatusA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase (default), ethereum, bsc, polygon, arbitrum, optimism.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
tx_hashYesTransaction hash (0x + 64 hex).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
max_age_secondsNoAccept cached result up to N seconds old (default 0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
nonceYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
valueYes
statusYes
routingYesHow the request was routed (provider, fallback, cache, latency).
tx_hashYes
chain_idYes
gas_usedNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
log_countYes
transfersYes
value_weiYes
fee_nativeNo
fetched_atNoUTC timestamp when the data was fetched.
to_addressNo
block_numberNo
from_addressYes
native_tokenYes
confirmationsYes
gas_price_weiNo
gas_price_gweiNo
input_selectorNo
contract_createdNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StatusA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) URL to probe.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
sslYes
urlYes
errorNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
serverNo
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
final_urlYes
reachableYes
fetched_atNoUTC timestamp when the data was fetched.
method_usedYes
status_codeNo
content_typeNo
content_lengthNo
redirect_chainYes
redirect_countYes
security_scoreYes
response_time_msYes
security_headersYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
missing_security_headersYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 GeneratorA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for v5 UUIDs (required when version=5).
countNoNumber of UUIDs to generate (1-100). Defaults to 1.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
versionNoUUID version: 4 (random, default) or 5 (namespace-based).
namespaceNoNamespace for v5: dns, url, oid or x500. Defaults to dns.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
countYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
uuidsNo
sourceYes
routingYesHow the request was routed (provider, fallback, cache, latency).
versionYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
namespaceNo
fetched_atNoUTC timestamp when the data was fetched.
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 BalanceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNobase | ethereum | arbitrum | optimism | polygon (default base).base
tokensNoToken symbols, default all known (USDC, USDT, DAI, WETH).
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
addressYesEVM address (0x + 40 hex chars).
api_keyNoOptional AMR enterprise API key.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chainYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
addressYes
routingYesHow the request was routed (provider, fallback, cache, latency).
balancesYes
chain_idYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
total_usdYes
fetched_atNoUTC timestamp when the data was fetched.
block_numberYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

weatherWeatherA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
latitudeNo-90..90. Use with longitude instead of location.
locationNoPlace name, e.g. 'Berlin'. Optional if latitude/longitude are given.
longitudeNo-180..180.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
forecast_daysNo1-16 (default 7).
temperature_unitNoDefault celsius.celsius

Output Schema

ParametersJSON Schema
NameRequiredDescription
dailyNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
countryNo
currentNo
routingYesHow the request was routed (provider, fallback, cache, latency).
latitudeNo
locationNo
timezoneNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
elevationNo
longitudeNo
fetched_atNoUTC timestamp when the data was fetched.
attributionNo
temperature_unitNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CrawlA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
max_pagesNo1-10 (default 5).
start_urlYesPublic page to start from.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
follow_linksNoFollow same-domain links (default true).
include_linksNoKeep hyperlinks in Markdown (default true).
respect_robotsNoHonour robots.txt Disallow for '*' (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
tokenNoToken actually used for payment (USDC, USDT or FREE).
domainYes
routingYesHow the request was routed (provider, fallback, cache, latency).
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
max_pagesYes
start_urlYes
fetched_atNoUTC timestamp when the data was fetched.
page_countYes
total_wordsYes
follow_linksYes
pages_failedYes
robots_blockedYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
queued_not_fetchedYes
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

wikipedia_summaryWikipedia SummaryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesArticle title or search phrase.
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
languageNoWikipedia language code (default en).en
max_charsNo100-5000 characters of extract (default 1200).
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
titleNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
sourceYes
extractNo
licenseNo
routingYesHow the request was routed (provider, fallback, cache, latency).
languageYes
page_urlNo
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
page_typeNo
fetched_atNoUTC timestamp when the data was fetched.
coordinatesNo
descriptionNo
last_modifiedNo
thumbnail_urlNo
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.
resolved_from_searchNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TranscriptA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoYour EVM wallet address (0x...). Unlocks the free tier (3 free calls per wallet).
api_keyNoOptional AMR enterprise API key.
languageNoPreferred caption language (default en).en
video_idYes11-char video id or YouTube URL.
x_paymentNoOptional signed x402 payment payload (base64 JSON) for USDC/USDT on Base.
include_segmentsNoReturn timestamped segments (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNo
tokenNoToken actually used for payment (USDC, USDT or FREE).
routingYesHow the request was routed (provider, fallback, cache, latency).
languageYes
segmentsNo
video_idYes
cost_usdcYesPrice charged in stablecoin units (USDC/USDT 1:1); 0 on the free tier.
full_textYes
fetched_atNoUTC timestamp when the data was fetched.
word_countYes
is_generatedNo
segment_countYes
duration_secondsYes
freshness_secondsYesAge of the underlying data in seconds (0 = fetched live).
x_payment_responseNoBase64-encoded x402 settlement receipt (mirrors the X-PAYMENT-RESPONSE header). Only present when the call was paid with `x_payment`.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • Addedmedia_convert
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
  2. 3 tool updates
    • Addedmetadata
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedsitemap_urls
  3. 10 tool updates
    • Addedfeed_discover
    • Addedhash
    • Addedholidays
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedqr_generate
    • Addedrobots_check
    • Addedtext_stats
    • Addedtimezone
    • Addeduuid
    • Addedweather
  4. 2 tool updates
    • Addedbest_price
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
  5. 1 tool update
    • Changedpayment_info1 field changed
      • addedOutput schema / properties / extensions
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Extensions"
        +}
  6. 40 tool updates
    • Changedagent_wallet_snapshot1 field changed
      • changedOutput 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"
        +}
    • Changedarxiv_search1 field changed
      • changedOutput 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"
        +}
    • Changedcontract_info1 field changed
      • changedOutput 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"
        +}
    • Changedcrypto_ohlcv1 field changed
      • changedOutput 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"
        +}
    • Changedcurrency_convert1 field changed
      • changedOutput 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"
        +}
    • Changeddefi_tvl1 field changed
      • changedOutput 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"
        +}
    • Changeddefi_yields1 field changed
      • changedOutput 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"
        +}
    • Changeddex_price1 field changed
      • changedOutput 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"
        +}
    • Changeddns_lookup1 field changed
      • changedOutput 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"
        +}
    • Changeddns_whois1 field changed
      • changedOutput 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"
        +}
    • Changeddomain_rdap1 field changed
      • changedOutput 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"
        +}
    • Changedemail_validate1 field changed
      • changedOutput 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"
        +}
    • Changedens_resolve1 field changed
      • changedOutput 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"
        +}
    • Changederc20_balance1 field changed
      • changedOutput 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"
        +}
    • Changedextract_clean1 field changed
      • changedOutput 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"
        +}
    • Changedfear_greed1 field changed
      • changedOutput 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"
        +}
    • Changedgas_fees1 field changed
      • changedOutput 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"
        +}
    • Changedgeo_ip1 field changed
      • changedOutput 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"
        +}
    • Changedgeocode1 field changed
      • changedOutput 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"
        +}
    • Changedgithub_repo_summary1 field changed
      • changedOutput 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"
        +}
    • Changedhealth1 field changed
      • changedOutput 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"
        +}
    • Changedhn_search1 field changed
      • changedOutput 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"
        +}
    • Changedhtml_to_markdown1 field changed
      • changedOutput 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"
        +}
    • Changedmarket_spread1 field changed
      • changedOutput 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"
        +}
    • Changednews_search1 field changed
      • changedOutput 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"
        +}
    • Changednpm_package1 field changed
      • changedOutput 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"
        +}
    • Changedpayment_info2 fields changed
      • addedInput schema / properties / tool / description
        Added value: +"Name of the paid AMR tool to get payment requirements for (same name as in tools/list, e.g. `web_search`)."
      • changedOutput 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"
        +}
    • Changedpdf_text1 field changed
      • changedOutput 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"
        +}
    • Changedpypi_package1 field changed
      • changedOutput 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"
        +}
    • Changedreddit_search1 field changed
      • changedOutput 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"
        +}
    • Changedrss_feed1 field changed
      • changedOutput 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"
        +}
    • Changedseo_check1 field changed
      • changedOutput 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"
        +}
    • Changedtoken_price1 field changed
      • changedOutput 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"
        +}
    • Changedtx_status1 field changed
      • changedOutput 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"
        +}
    • Changedurl_status1 field changed
      • changedOutput 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"
        +}
    • Changedwallet_balance1 field changed
      • changedOutput 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"
        +}
    • Changedweb_crawl1 field changed
      • changedOutput 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"
        +}
    • Changedweb_search1 field changed
      • changedOutput 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"
        +}
    • Changedwikipedia_summary1 field changed
      • changedOutput 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"
        +}
    • Changedyoutube_transcript1 field changed
      • changedOutput 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"
        +}
  7. 39 tool updates
    • Changedagent_wallet_snapshot1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addedarxiv_search
    • Addedcontract_info
    • Changedcrypto_ohlcv6 fields changed
      • addedInput schema / properties / interval / default
        Added value: +"1h"
      • addedInput schema / properties / limit / default
        Added value: +100
      • addedInput schema / properties / limit / maximum
        Added value: +500
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / quote / default
        Added value: +"USDT"
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedcurrency_convert2 fields changed
      • addedInput schema / properties / amount / default
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changeddefi_tvl1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changeddefi_yields5 fields changed
      • addedInput schema / properties / limit / default
        Added value: +10
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / min_tvl_usd / default
        Added value: +100000
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changeddex_price4 fields changed
      • addedInput schema / properties / max_pairs / default
        Added value: +5
      • addedInput schema / properties / max_pairs / maximum
        Added value: +20
      • addedInput schema / properties / max_pairs / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addeddns_lookup
    • Changeddns_whois2 fields changed
      • addedInput schema / properties / include_whois / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addeddomain_rdap
    • Changedemail_validate2 fields changed
      • addedInput schema / properties / check_mx / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedens_resolve1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changederc20_balance1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedextract_clean2 fields changed
      • addedInput schema / properties / url / format
        Added value: +"uri"
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedfear_greed4 fields changed
      • addedInput schema / properties / limit / default
        Added value: +1
      • addedInput schema / properties / limit / maximum
        Added value: +90
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedgas_fees3 fields changed
      • addedInput schema / properties / chain / default
        Added value: +"base"
      • addedInput schema / properties / max_age_seconds / default
        Added value: +10
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedgeo_ip1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addedgeocode
    • Changedgithub_repo_summary3 fields changed
      • addedInput schema / properties / include_commits / default
        Added value: +true
      • addedInput schema / properties / include_readme / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedhn_search4 fields changed
      • addedInput schema / properties / max_results / default
        Added value: +10
      • addedInput schema / properties / max_results / maximum
        Added value: +50
      • addedInput schema / properties / max_results / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedhtml_to_markdown3 fields changed
      • addedInput schema / properties / include_images / default
        Added value: +false
      • addedInput schema / properties / include_links / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedmarket_spread4 fields changed
      • addedInput schema / properties / max_age_seconds / default
        Added value: +30
      • addedInput schema / properties / quote / default
        Added value: +"USDT"
      • addedInput schema / properties / size_usd / default
        Added value: +1000
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changednews_search5 fields changed
      • addedInput schema / properties / language / default
        Added value: +"en"
      • addedInput schema / properties / max_results / default
        Added value: +10
      • addedInput schema / properties / max_results / maximum
        Added value: +50
      • addedInput schema / properties / max_results / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addednpm_package
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Changedpdf_text4 fields changed
      • addedInput schema / properties / max_pages / default
        Added value: +50
      • addedInput schema / properties / max_pages / maximum
        Added value: +200
      • addedInput schema / properties / max_pages / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addedpypi_package
    • Changedreddit_search4 fields changed
      • addedInput schema / properties / max_results / default
        Added value: +10
      • addedInput schema / properties / max_results / maximum
        Added value: +50
      • addedInput schema / properties / max_results / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedrss_feed4 fields changed
      • addedInput schema / properties / max_items / default
        Added value: +20
      • addedInput schema / properties / max_items / maximum
        Added value: +100
      • addedInput schema / properties / max_items / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedseo_check2 fields changed
      • addedInput schema / properties / check_robots / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedtoken_price3 fields changed
      • addedInput schema / properties / max_age_seconds / default
        Added value: +5
      • addedInput schema / properties / quote / default
        Added value: +"USD"
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedtx_status2 fields changed
      • addedInput schema / properties / max_age_seconds / default
        Added value: +0
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedurl_status1 field changed
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedwallet_balance2 fields changed
      • addedInput schema / properties / chain / default
        Added value: +"base"
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedweb_crawl7 fields changed
      • addedInput schema / properties / follow_links / default
        Added value: +true
      • addedInput schema / properties / include_links / default
        Added value: +true
      • addedInput schema / properties / max_pages / default
        Added value: +5
      • addedInput schema / properties / max_pages / maximum
        Added value: +10
      • addedInput schema / properties / max_pages / minimum
        Added value: +1
      • addedInput schema / properties / respect_robots / default
        Added value: +true
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Changedweb_search4 fields changed
      • addedInput schema / properties / max_results / default
        Added value: +10
      • addedInput schema / properties / max_results / maximum
        Added value: +20
      • addedInput schema / properties / max_results / minimum
        Added value: +1
      • changedInput schema / properties / wallet / description
        Previous 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)."
    • Addedwikipedia_summary
    • Changedyoutube_transcript3 fields changed
      • addedInput schema / properties / include_segments / default
        Added value: +true
      • addedInput schema / properties / language / default
        Added value: +"en"
      • changedInput schema / properties / wallet / description
        Previous 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)."
  8. 11 tool updates
    • Addedagent_wallet_snapshot
    • Addeddefi_tvl
    • Addederc20_balance
    • Addedfear_greed
    • Addedhn_search
    • Addednews_search
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedreddit_search
    • Addedtx_status
    • Addedurl_status
    • Addedweb_crawl
  9. 5 tool updates
    • Addeddex_price
    • Addedgithub_repo_summary
    • Addedhtml_to_markdown
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedyoutube_transcript
  10. 7 tool updates
    • Addedcrypto_ohlcv
    • Addedcurrency_convert
    • Addeddefi_yields
    • Addedens_resolve
    • Addedgeo_ip
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedrss_feed
  11. 6 tool updates
    • Addeddns_whois
    • Addedemail_validate
    • Changedpayment_info1 field changed
      • changedInput schema / properties / tool / enum
        Previous 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"
        +]
    • Addedpdf_text
    • Addedseo_check
    • Addedweb_search
  12. 7 tool updates
    • First observedextract_clean
    • First observedgas_fees
    • First observedhealth
    • First observedmarket_spread
    • First observedpayment_info
    • First observedtoken_price
    • First observedwallet_balance

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.