Skip to main content
Glama

Server Details

x402 or card pay-per-call: invoice JSON, DNS, whois, SSL, geocode, RSS feeds, sitemaps, QR codes

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-06-18
URL
ChatGPT
–
Claude
–

TDQS

B3.3/5.0

Scored across 74 tools

Disambiguation2/5

The set contains many overlapping clusters: company_contacts vs site_contacts are near-duplicates, page_meta/page_check/page_rag/page_markdown all fetch page metadata/content, and token_risk/token_score/rug_check/token_compare all assess token safety. Packs also duplicate their component tools, and base_gas is a subset of gas. Detailed descriptions help, but an agent still has multiple plausible choices for many requests.

Naming Consistency3/5

Most names use readable snake_case, but the convention is mixed: some are noun-only (country, currency, dns, gas, holidays), some are verb_noun (link_check, robots_check), some are noun_verb (email_verify, token_price), and some are pack_* bundles. The naming is still generally descriptive, but it does not follow a predictable verb_noun pattern.

Tool Count1/5

With 74 tools, the surface is far beyond a practical set for an agent to select from reliably, especially since many tools are near-duplicates or bundled packs. The broad API aggregator purpose explains some of the count, but this is still an extreme mismatch for coherent tool use.

Completeness4/5

Coverage is extensive across directory search, datasets, web extraction, company enrichment, email verification, crypto/on-chain data, geocoding, news, text AI, and reference data. There are minor gaps and uneven batch coverage, but the overall surface is broad and usable for the stated multi-purpose API.

Available Tools

74 tools
agent_toolsagent-toolsA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.001 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Agent tools search: One search across ~13,000 agent tools: 4,259 MCP servers (awesome-mcp-servers, MIT) and ~8,900 x402 pay-per-call APIs (nohumans.directory, CC BY 4.0). Filters: q, type=mcp|x402, limit<=100.

NameRequiredDescriptionDefault
qYes
typeNo
limitNo

Output Schema

NameRequiredDescription
totalNo
resultsNo
sourcesNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only and open-world, and the description adds meaningful context: free-call limits, paid in-band x402/card behavior, and the two data sources. That is useful operational detail beyond the annotations, though it does not discuss output behavior or rate-limit handling beyond the free-call count.

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 mostly front-loads the key constraints: pricing, payment mechanism, search scope, and filters. The purpose appears after the pricing sentence, which is slightly less ideal, but there is little wasted text.

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 search tool with an output schema and read-only annotations, the description covers scope, sources, filters, and payment mechanics sufficiently to call it correctly. Remaining gaps are mainly sibling differentiation and fuller parameter semantics.

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 0%, so the description must carry parameter meaning. It names q, explains type as mcp|x402, and states limit<=100, but it does not describe query syntax, pagination behavior, or why schema lists limit as a string.

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 states a specific search action over '~13,000 agent tools,' split into MCP servers and x402 APIs, so the resource and scope are clear. It does not explicitly differentiate itself from close siblings such as dump_agent_tools, mcp_servers, or x402_services.

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?

It implies usage as a unified search across both MCP and x402 entries, and names the available filters. However, it gives no explicit when-to-use guidance versus sibling tools like apis_search, mcp_servers, or dump_agent_tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

api_directory_sampleCInspect

Free. Five live public APIs that need no key.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool is free and requires no API key, but says nothing about read-only nature, rate limits, response shape, or any other operational trait.

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?

Two short sentences with no wasted words. The key selling points (free, live, no key) are front-loaded, though the brevity borders on under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema and no annotations, the description gives only a minimal picture: it says there are five live public APIs and they need no key. It does not describe the return format or what exactly the agent should expect.

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 takes zero parameters, so per the rubric the baseline is 4 even though the description adds no parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description implies the tool surfaces a sample of five free/public APIs, but it does not state an explicit verb or clarify whether it returns names, endpoints, or metadata. It only weakly differentiates itself from siblings like free_tiers or list_endpoints.

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?

It mentions that the APIs are free and need no key, which implies a context for use, but it gives no guidance on when to choose this tool over alternatives such as apis_search, free_tiers, or list_endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

base_gasbase-gasA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Base gas price: Live Base mainnet gas price (gwei), latest block, and estimated ETH cost of a USDC transfer (~65k gas) and a plain ETH transfer (21k gas). When to use: Use base-gas for current Base gas price and the cost of a transfer.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
atNo
rpcNo
noteNo
blockNo
networkNo
sourcesNo
gas_price_weiNo
gas_price_gweiNo
eth_transfer_ethNo
usdc_transfer_ethNo
usdc_transfer_gas_estimateNo

TDQS

A3.8/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 safety is covered. The description adds meaningful non-obvious behavior: the free-tier limit (3 calls/day), paid access via x402 or card credits, and the in-band payment mechanism (params._meta['x402/payment']). This is useful context beyond structured fields, though it does not describe latency or freshness guarantees.

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 (three sentences) and contains no fluff. It front-loads pricing/payment behavior before the core purpose, which is slightly unconventional but still readable and purposeful; every sentence contributes.

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, zero-parameter tool with an output schema, the description covers purpose, usage, data returned, and payment behavior. It is complete enough to call correctly, with only minor gaps around chain comparison and freshness.

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 zero parameters, the baseline is 4. The description does not need to explain inputs, and it correctly implies no user-supplied arguments are required for the core operation.

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 resource and scope: 'Live Base mainnet gas price (gwei), latest block, and estimated ETH cost of a USDC transfer (~65k gas) and a plain ETH transfer (21k gas).' This is clear and concrete, though it does not explicitly distinguish itself from the sibling tool 'gas' (which likely covers a broader or different 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It includes an explicit 'When to use' clause: 'Use base-gas for current Base gas price and the cost of a transfer.' However, it does not name alternatives (e.g., the sibling 'gas' tool) or state when not to use it, leaving the agent to infer routing between gas-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classifyclassifyA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Text classification: classify text (max 6,000 chars) into your own labels (2-20, single or multi-label) with confidence and a short reason; output is always one of your labels. Small LLM (Workers AI Llama 3.1 8B). GET query or POST JSON body. When to use: Use classify to route tickets, emails or posts into your own labels.

NameRequiredDescriptionDefault
textYestext to classify
multiNotrue for multi-label
labelsYescomma-separated labels (2-20)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses throughput limits (3 free calls/day shared across tools), cost after that ($0.005 USDC), the payment channel (in-band params._meta["x402/payment"], or card credits), the backing model (Workers AI Llama 3.1 8B), accepted transports (GET query or POST body), and the closed-label output guarantee. These are exactly the operational facts an agent needs that no annotation or schema conveys.

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?

Compact and dense with no filler, but the long pricing/payment sentence is front-loaded ahead of what the tool actually does, delaying purpose recognition for an agent scanning for capability. Every sentence earns its place; only the ordering costs a point.

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 3-parameter, fully-described-schema tool with an output schema, the description covers capability, limits, cost, transport, and model choice. Nothing needed to call it correctly or predict its cost 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, but the description adds constraints the schema omits: text capped at 6,000 characters and labels constrained to 2-20 comma-separated values in single or multi-label mode. It does not document the string-typed 'multi' flag's accepted values beyond 'true', which keeps it from a 5.

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 and resource ('Text classification: classify text ... into your own labels') plus concrete scope limits (6,000 chars, 2-20 labels, single vs multi-label) and the output guarantee ('output is always one of your labels'). This distinguishes it from near neighbors such as news_sentiment, entity_extract, or summarize, which produce their own taxonomies rather than user-supplied labels.

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?

Explicit 'When to use' clause names concrete scenarios: routing tickets, emails, or posts into your own labels. However, it never names an alternative tool or states when NOT to use it (e.g., use news_sentiment when you don't have your own labels), so the routing logic relative to siblings remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_batchcompany-batchA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.022 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Company enrichment batch: up to 10 domains in one call, each with profile (name, description, socials, key pages, email provider) and detected tech stack. Only each company's own website and DNS; no personal data. When to use: Use company-batch to enrich a list of up to 10 domains in one call.

NameRequiredDescriptionDefault
domainsYescomma-separated domains, max 10

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/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 substantial context beyond them: the free-tier quota (3 calls/day across all tools), the $0.022 USDC x402 or card-credit pricing with the exact in-band payment location (params._meta["x402/payment"]), and a data-scope constraint ('only each company's own website and DNS; no personal data'). These are exactly the operational facts an agent needs before spending a quota call.

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?

Two dense sentences with no filler; the output inventory is packed into a parenthetical rather than sprawled. Minor deduction because the billing boilerplate is front-loaded ahead of the actual purpose, pushing the task-relevant content to the second half.

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 the description needn't spell out return values, yet it still summarizes the payload; combined with pricing, payment mechanism, data-scope limits, and batch size, an agent has everything required to decide and call 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 single parameter is fully documented in the schema ('comma-separated domains, max 10') at 100% coverage, so the baseline applies. The description repeats the 10-domain cap but adds no format or validation detail 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?

States a specific verb and resource ('Company enrichment batch') with an explicit scale bound ('up to 10 domains in one call') and enumerates what comes back (profile: name, description, socials, key pages, email provider; tech stack). The batch scope plus the combined profile+techstack payload clearly separates it from the single-domain siblings company_profile and company_techstack.

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 'When to use' line only restates the purpose ('enrich a list of up to 10 domains in one call'), which does imply the batching condition but names no alternative. It never says to use company_profile/company_techstack for single domains or company_contacts when contacts are wanted, and gives no exclusion for the 10-domain limit overflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_contactscompany-contactsA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Company contacts: public business contact details from the company's own website only - role emails (info@, sales@) with MX check, main phone numbers (E.164), address, company/VAT ids and official social profiles. Personal emails and names omitted (GDPR). robots.txt respected. When to use: Use company-contacts for public role emails and main phone of a company domain (no personal data).

NameRequiredDescriptionDefault
domainYescompany domain or URL
countryNodefault phone country ISO-2, default US

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the readOnlyHint and openWorldHint annotations: data comes only from the company's own website, role emails are MX-checked, phones are E.164, personal emails and names are omitted for GDPR, robots.txt is respected, and pricing/payment mechanics are disclosed.

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 fairly dense but front-loads pricing, then purpose, then usage. Most sentences carry useful information, though the payment details are prominent enough to slightly dilute the core tool-purpose framing.

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 an output schema, full schema coverage, and annotations, the description provides enough context for correct invocation: it covers the data scope, exclusions, validation behavior, payment requirements, and intended use case.

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 two parameters are already documented in the schema. The description implies domain and country semantics through 'company domain' and 'main phone', but does not add meaningfully more parameter guidance than the schema provides.

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 resource and scope: public business contact details from the company's own website, including role emails, main phone, address, company/VAT IDs, and official social profiles. It does not explicitly name or differentiate from the closely related sibling site_contacts, which keeps it from a 5.

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 an explicit use case: 'Use company-contacts for public role emails and main phone of a company domain (no personal data).' It does not say when not to use it or name alternative siblings, so the guidance is clear but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_profilecompany-profileA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0075 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Company enrichment: domain in, company profile out - name, description, language, logo, founding date, address (schema.org), official social profiles, key pages (contact, about, careers, pricing) and email provider (MX). Only the company's own website and DNS; robots.txt respected; no personal data. When to use: Use company-profile to enrich a domain; company-techstack for technologies; company-contacts for business contact details; company-batch for up to 10 domains.

NameRequiredDescriptionDefault
domainYescompany domain or URL

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description discloses the quota (3 free calls/day across all tools), the price and payment channel including the in-band params._meta["x402/payment"] key, and the data-source limits (company's own website and DNS only, robots.txt respected, no personal data). That is substantial operational context; only the failure/empty-result behavior is left implicit.

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?

One dense paragraph with no filler sentences, and each clause carries information. It is slightly mis-front-loaded, however: the billing/quota sentence leads ahead of the actual capability, which is the more important framing for tool selection.

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 values need not be explained, yet the description's field list still frames expectations well. Combined with source restrictions, quota, and payment mechanics, nothing an agent needs in order to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema, so the baseline is a 3-4. The description adds real value by documenting a parameter that is NOT in the schema at all: the x402/payment key passed under params._meta for paid calls, which an agent would otherwise not know to supply.

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?

"Company enrichment: domain in, company profile out" states a specific verb and resource, then enumerates the returned fields (name, description, language, logo, founding date, address, social profiles, key pages, MX). It also names the three sibling tools it is not, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "When to use" clause gives an explicit rule (enrich a domain) and pairs it with the exact alternatives: company-techstack for technologies, company-contacts for business contact details, company-batch for up to 10 domains. Both the selection condition and the exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_techstackcompany-techstackA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Website tech stack detection: CMS, e-commerce, frameworks, analytics, marketing, support chat, payments, consent, CDN/hosting and email provider used by a company website, each with evidence (HTML, header or DNS). ~70 signatures. When to use: Use company-techstack to see which CMS, analytics, chat and payment tools a website uses.

NameRequiredDescriptionDefault
domainYescompany domain or URL

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses a hard quota (3 free MCP calls per day across all tools), paid pricing ($0.005 USDC or card credits), and the exact in-band payment channel (params._meta["x402/payment"]). It also characterizes the detection methodology (HTML, header or DNS evidence; ~70 signatures), which tells the agent how results are produced and how a metered call should be budgeted.

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?

Compact at three sentences with no filler, but the first thing an agent reads is the billing/quota preamble rather than what the tool does, pushing the purpose behind a long list of priced mechanics. The detection categories are dense but each earns its place by scoping the return.

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, omission of return-shape detail is fine, and the one required param is fully described. What's missing is failure behavior on unknown/unreachable domains and whether low-signature sites return partial evidence, which matters for a metered, open-world lookup.

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?

Only one required parameter and schema description coverage is 100%, so the schema already carries the semantics; the description's implicit acceptance of a bare domain ('company website') is consistent with the schema's 'company domain or URL'. It contributes the meta-parameter detail (params._meta payment key) but nothing additional about the domain format.

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 resource and enumerated scope: 'Website tech stack detection: CMS, e-commerce, frameworks, analytics, marketing, support chat, payments, consent, CDN/hosting and email provider'. It also discloses the evidence basis (HTML, header, DNS) and signature breadth (~70), which lets an agent distinguish this from adjacent siblings such as page_meta or dns without opening their schemas.

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 'When to use' sentence only restates what the tool returns ('see which CMS, analytics, chat and payment tools a website uses'), so it adds a cue but no real routing logic. No when-not conditions and no alternatives named (e.g. page_meta for raw tags, dns for records), even though the sibling list is crowded with overlapping tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contract_abiContract ABI + Proxy ResolverA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Base or Ethereum contract address -> ABI and function list: Sourcify verification (exact/partial match), contract name, compiler, ABI, function selectors + signatures, event topics; proxies (EIP-1967, ZeppelinOS, others Sourcify detects) resolved to the implementation with its own ABI. Unverified contracts: selectors guessed from bytecode and named via the public OpenChain database. abi=false returns signatures only (smaller). When to use: Use contract-abi when an agent needs to call or decode a contract it has not seen before. Use wallet-profile for balances and account type, and token-risk to check an ERC-20 for dangerous privileges.

NameRequiredDescriptionDefault
abiNoinclude full ABI JSON (default true)
chainNodefault base
addressYescontract address 0x...

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely non-obvious behavior: 3 free calls/day followed by $0.0025 USDC via x402 with in-band payment through params._meta, proxy auto-resolution (EIP-1967, ZeppelinOS) to the implementation's own ABI, and bytecode-derived selectors named via OpenChain for unverified contracts. These are the operational facts an agent cannot get from the schema or annotations.

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?

It is dense but every sentence carries information an agent needs: pricing constraint, resolution behavior, verified/unverified paths, and sibling routing. Leading with the paywall is slightly unusual but defensible since it gates invocation; a little unpacking of the proxy/fallback chain would improve scan-ability.

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, return shapes need not be restated, and the description covers the parts that matter: cost model, chain scope, proxy dereferencing, unverified-contract degradation, and the reduced-payload option. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enums and defaults are already documented. The description still adds meaning beyond the schema for abi=false ('returns signatures only (smaller)') and explains that proxies yield the implementation's ABI, which changes what address resolution actually returns.

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 names a specific verb and resource: a Base or Ethereum contract address resolves to ABI, function selectors/signatures, event topics, and proxy implementation ABIs. It also distinguishes itself from the closest siblings, naming wallet-profile for balances and token-risk for ERC-20 privilege checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an explicit 'When to use' clause scoped to agents that need to call or decode an unseen contract, plus two named alternatives with the conditions that select them (balances/account type, ERC-20 dangerous privileges). Nothing is left to inference about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

countrycountryA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Country reference lookup by ISO2/ISO3/name: capital, population, area, continent, currency, phone prefix, TLD, languages, neighbours, time zones with current UTC offset and local time. When to use: Use country for ISO codes, capitals, currencies, calling codes and time zones.

NameRequiredDescriptionDefault
qYesISO2, ISO3 or country name

Output Schema

NameRequiredDescription
tldNo
iso2No
iso3No
nameNo
capitalNo
sourcesNo
area_km2No
continentNo
languagesNo
timezonesNo
neighboursNo
populationNo
iso_numericNo
phone_prefixNo
currency_codeNo
currency_nameNo
has_holiday_dataNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing the commercial model: 3 free calls per day across all tools, then $0.0025 USDC via x402 or card credits, with the exact in-band payment location params._meta["x402/payment"]. Free-tier quota and payment mechanics are exactly the kind of behavior an agent must know before calling.

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?

Two dense sentences with no filler; the pricing clause leads and the capability and usage follow. Slight deduction only because the payment mechanics precede the statement of what the tool actually does, delaying the agent's primary identification of the tool.

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?

An output schema exists, so return values needn't be enumerated, and the description still previews the covered fields. For a one-parameter, read-only lookup this is nearly complete; only error handling for unmatched country strings is unaddressed.

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 single parameter q is already documented as 'ISO2, ISO3 or country name'. The description restates that same set without adding format examples or failure behavior for invalid codes, so baseline 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?

States a specific verb and resource — 'Country reference lookup by ISO2/ISO3/name' — and enumerates the exact payload (capital, population, area, continent, currency, phone prefix, TLD, languages, neighbours, time zones). An agent can distinguish it from lookalike siblings such as geocode, currency and holidays without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' sentence gives a positive trigger list (ISO codes, capitals, currencies, calling codes, time zones), which is clear context. However it names no alternatives or exclusions, even though currency and geocode sit among the siblings and could plausibly be confused with this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

currencycurrencyA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.002 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Currency conversion with official ECB euro reference rates (~30 currencies, daily). Params: from, to, amount. Also returns the rate date. When to use: Use currency for ECB reference exchange rates and conversion.

NameRequiredDescriptionDefault
toYes
fromYes
amountNo

Output Schema

NameRequiredDescription
toNo
baseNo
fromNo
rateNo
amountNo
resultNo
sourcesNo
rate_dateNo
supportedNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint already covering the safety profile, the description adds genuinely non-obvious behavior: the free-tier limit of 3 calls/day across all tools, the $0.002 USDC charge, and the exact in-band payment location params._meta["x402/payment"]. That payment mechanic is information an agent cannot get from annotations, and 'also returns the rate date' adds a return nuance. It stops short of a 5 because nothing is said about failure modes (unsupported currency, rate unavailability).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is compact with no filler sentences, but it is not front-loaded: the pricing boilerplate occupies the opening position and the actual purpose does not appear until the middle. Payment mechanics belong after the purpose statement, not before it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 explanation is not required and the 'rate date' mention is a bonus. However, with zero schema coverage on all three parameters and no format guidance in the description, an agent still lacks what it needs to construct a valid call with confidence — the main remaining hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden, and it only lists the names ('Params: from, to, amount'). It never states that from/to are ISO 4217 codes, whether they are case-sensitive, or why amount is typed as a string rather than a number. That is a meaningful gap for a tool whose only inputs are these three fields.

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 names a specific operation ('Currency conversion'), the data source ('official ECB euro reference rates'), and the coverage limit ('~30 currencies, daily'). That is enough to separate it from the many price-adjacent siblings such as token_price, gas, and llm_pricing without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an explicit 'When to use' clause, but it simply restates the purpose ('Use currency for ECB reference exchange rates and conversion'). No alternatives are named and no exclusions are given — an agent gets no signal on when to prefer this over, say, token_price or llm_pricing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dataset_fulldataset/fullA
Read-only
Inspect

Dataset download: $1 USDC via x402. Buy the full Verified API Directory dataset (2,230 rows, JSON, CC BY 4.0 + MIT sources) in one call.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
rowsNo
countNo
licenseNo
sourcesNo

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, while the description adds critical behavioral context: the tool requires a $1 USDC payment via x402. It also discloses dataset size and licensing, which helps set expectations. It does not explain the payment flow or whether payment is automatic, but the key cost and access condition are surfaced.

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 that front-load the core action and cost, then add dataset specifics. Every phrase earns its place with no 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?

The tool is a simple parameterless download with an output schema, so the description need not explain return values. It covers cost, dataset scope, format, and licensing, which is enough to call it correctly. A brief note on how x402 payment is handled would make it complete, but the essential context is present.

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, so the schema offers no parameter semantics to document. The baseline for a parameterless tool is 4, and the description appropriately does not invent parameter 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?

The description uses a specific verb ('Buy') and resource ('full Verified API Directory dataset'), and explicitly distinguishes it from a sample by the word 'full'. It adds concrete details (2,230 rows, JSON, licenses), so an agent can immediately tell what it retrieves.

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 it (when you need the complete dataset) but does not explicitly name an alternative like api_directory_sample or state when not to use this tool. Usage is therefore inferred rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dnsDNS + mail-auth lookupA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). DNS lookup over DNS-over-HTTPS (Cloudflare, Google fallback): A, AAAA, MX, NS, TXT, CNAME, CAA, SOA, SRV, HTTPS, DS... for one domain in one call, plus a mail-auth check (MX hosts, SPF, DMARC policy, warnings) and the DNSSEC-validated flag. When to use: Use dns to read any DNS records of a domain and check its mail setup (MX, SPF, DMARC) in one call. Use email-verify to check a single address.

NameRequiredDescriptionDefault
mailNofalse skips the SPF/DMARC check
typesNocomma list of record types, default A,AAAA,MX,NS,TXT,CNAME,CAA (max 10)
domainYesdomain or hostname, e.g. example.com (URLs and emails are trimmed to the host)

Output Schema

NameRequiredDescription
mailNo
domainNo
existsNo
statusNo
recordsNo
sourcesNo
resolverNo
checked_atNo
dnssec_validatedNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, yet the description still adds real context: the free-tier quota, the x402/card payment path with the exact in-band parameter, the DoH provider and its fallback, and what the mail-auth check reports (MX hosts, SPF, DMARC policy, warnings). It does not describe failure behavior or rate limiting beyond the daily quota, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but nearly waste-free, with the usage guidance and alternative clearly signposted. Minor deduction: the first sentence is pricing/payment boilerplate rather than the tool's purpose, so the front-loading is inverted relative to what an agent most needs first.

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, return-value explanation is unnecessary, and the description covers capabilities, scope, payment prerequisite, and the sibling alternative. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

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, but the description adds two things the schema does not make obvious: only one domain is handled per call, and the full supported record-type vocabulary (SOA, SRV, HTTPS, DS) beyond the schema's default list. It does not explain the semantics of the string-typed mail enum 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?

States a specific verb and resource: DNS lookup over DNS-over-HTTPS with an explicit record-type list, plus a mail-auth check (MX, SPF, DMARC) and DNSSEC-validated flag. It also names the sibling it is not (email-verify), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' clause covering both capabilities and a contrasting alternative ('Use email-verify to check a single address'). The selection condition between the two tools is stated rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domain_whoisDomain WHOIS (RDAP)A
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Domain registration lookup via RDAP (the official whois successor, IANA bootstrap): registered or not, registrar + IANA id + abuse email, created / updated / expiry dates, days to expiry, domain age, EPP status codes, nameservers, DNSSEC. Use it to vet a domain or check expiry. When to use: Use domain-whois to see who registered a domain, when it was created and when it expires (RDAP, official registry data).

NameRequiredDescriptionDefault
domainYesdomain, e.g. example.com (subdomains are reduced to the registered domain)

Output Schema

NameRequiredDescription
dnssecNo
domainNo
handleNo
statusNo
createdNo
expiresNo
sourcesNo
updatedNo
age_daysNo
registrarNo
checked_atNo
registeredNo
registrantNo
nameserversNo
rdap_serverNo
days_to_expiryNo

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, but the description adds substantial non-schema behavior: a 3-call/day free quota, $0.005 USDC payment via x402 or card credits, and the in-band payment channel params._meta["x402/payment"]. It also identifies the data source (IANA bootstrap RDAP), which explains freshness and coverage. Error/failure modes are not described, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Pricing is front-loaded, which is defensible for a paid tool, but the final 'When to use' sentence largely restates the purpose clause already given ('see who registered a domain, when it was created and when it expires'), wasting space. The field enumeration is dense but 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?

Covers what is needed to invoke correctly: input format caveat, data source, cost and quota, and payment mechanism. Because an output schema exists, return values need not be spelled out. Only gap is absence of any failure semantics (invalid domain, rate-limit exhaustion after payment).

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 there is a single parameter with a worked example, so the schema carries the load. The one semantic detail worth knowing ('subdomains are reduced to the registered domain') is already in the schema text, so the description adds nothing beyond it. Baseline 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?

Names a specific verb and resource ('Domain registration lookup via RDAP') and enumerates the returned fields (registrar, IANA id, abuse email, created/updated/expiry, EPP status, nameservers, DNSSEC). This is clearly distinguishable from siblings like dns, ssl_cert, or site_contacts without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use is given twice ('Use it to vet a domain or check expiry', then the 'When to use' sentence naming registrant, creation, and expiry lookups). No when-not guidance or routing away from adjacent tools such as dns or ssl_cert, which keeps it out of 5 territory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_agent_toolsdump/agent-toolsA
Read-only
Inspect

Dataset download: $1 USDC via x402. Full dump: Agent Tool Directory, ~13,000 MCP servers + x402 APIs in one unified schema (JSON). MIT + CC BY 4.0 sources, attribution included.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
rowsNo
countNo
licenseNo
sourcesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and open-world, but the description adds genuinely non-obvious behavior: it costs $1 USDC via x402 and carries MIT/CC BY 4.0 attribution obligations. It stops short of explaining how the x402 payment is actually settled or whether any free preview 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?

Three compact fragments with zero waste; the cost, which is the biggest gating fact, is front-loaded in the first sentence. Nothing could be cut without losing a decision-relevant fact.

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 no parameters, the description only needs to cover scope, format, cost, and licensing, and it does all four. Only the mechanics of the x402 payment flow are left unexplained.

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?

Zero parameters, so the schema carries no semantics burden and the baseline applies. The description correctly does not invent parameter details and instead spends its words on scope and cost.

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?

States a specific resource and scope: a full dump of the Agent Tool Directory (~13,000 MCP servers + x402 APIs) in one unified JSON schema. That distinguishes it in spirit from the sample-scoped siblings (mcp_servers_sample, api_directory_sample, dump_llm_pricing), though it never names those siblings explicitly.

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 word "Full" and the stated scale imply this is the complete dataset rather than a sample, which helps against sample siblings, but the description never says when to pick it over dump_mcp_servers, dump_x402_services, or agent_tools. The $1 price is a useful decision input, yet it is not framed as a trade-off against free alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_llm_pricingdump/llm-pricingA
Read-only
Inspect

Dataset download: $1 USDC via x402. Full dump: list prices of ~3,000 AI models (LiteLLM table, MIT) + verified AI/dev free tiers with limits (JSON).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
modelsNo
licenseNo
sourcesNo
free_tiersNo
generated_atNo

TDQS

A3.7/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 description is not burdened with safety disclosure. It adds important behavioral context by stating the cost ($1 USDC via x402), the dataset size, and the JSON format, which an agent needs to know before invoking a paid download.

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 tight sentences with no wasted text. The payment requirement and dataset contents are front-loaded, so the agent gets the key facts immediately.

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 zero parameters, an output schema, and annotations covering safety/openness, the description supplies the remaining essentials: cost, contents, licensing, and format. It is nearly complete, though it could explicitly position itself against the related pricing and sample tools.

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, so there is no parameter semantics to explain. A baseline of 4 is appropriate because the description does not need to compensate for an input schema gap.

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 resource and scope: a full dump of prices for ~3,000 AI models plus verified free tiers, delivered as JSON. The verb 'Dataset download' and the content are specific, but it does not explicitly differentiate this full dump from sibling tools like llm_pricing or llm_pricing_sample.

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?

There is no explicit guidance on when to use this tool versus alternatives such as llm_pricing, llm_pricing_sample, or free_tiers. The phrase 'Full dump' implies bulk use, but the agent must infer that from context rather than from stated conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_mcp_serversdump/mcp-serversA
Read-only
Inspect

Dataset download: $1 USDC via x402. Full MCP server directory dump (4,259 servers, JSON). Source awesome-mcp-servers (MIT).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
rowsNo
countNo
licenseNo
sourcesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and openWorldHint, but the description adds something material those annotations do not: this call costs $1 USDC via x402, so the agent knows a payment/authorization step is involved before invoking. It also names the upstream source and MIT license, which is useful provenance for a bulk dataset. It does not explain how the payment negotiation is performed, which is the only remaining gap.

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 short clauses, perfectly front-loaded: price first, then scope, then provenance/license. Every fragment carries distinct information (cost, size, format, source, license) with no repetition of the name or title.

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, the description need not explain return shape, and it correctly covers the two things structured fields cannot convey: the $1 USDC x402 payment requirement and the exact dataset contents (4,259 servers from awesome-mcp-servers, MIT). Only the mechanics of the x402 payment handshake are unstated, a minor gap for a known protocol.

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 takes zero parameters and the schema is empty, so there is no parameter semantics to convey; the correct baseline for a 0-param tool applies. The description appropriately spends its words on scope and cost instead of nonexistent inputs.

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?

States a specific resource and scope: 'Full MCP server directory dump (4,259 servers, JSON)', which tells an agent exactly what payload it gets, including the record count and format. It implicitly distinguishes itself from the 'sample' siblings via 'Full', but never names mcp_servers or mcp_servers_sample, so differentiation is left to inference.

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 word 'Full' plus the record count implies this is the bulk/complete option versus the sample siblings, and the $1 USDC price is disclosed up front so an agent can weigh cost. However, there is no explicit 'use this instead of X when Y' routing and no statement of prerequisites beyond the x402 mention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_world_referencedump/world-referenceA
Read-only
Inspect

Dataset download: $1 USDC via x402. Full dump: 252 countries (GeoNames, CC BY 4.0), 418 time zones, ~14,000 public holidays 2026-2027 (python-holidays, MIT). JSON.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
licenseNo
sourcesNo
holidaysNo
countriesNo
timezonesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only and open-world; the description adds the critical operational fact that access costs $1 USDC via x402, plus data provenance and licensing (GeoNames CC BY 4.0, python-holidays MIT). That payment gate is exactly the kind of behavioral context annotations cannot express. It stops short of explaining the payment flow or what happens before payment succeeds.

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?

Dense, front-loaded, and every clause earns its place: cost, coverage, provenance, license, format. No filler and no restatement of the title.

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, return values need not be explained, and the description covers content, cost, and format. It omits any sense of payload size or delivery mechanics for what is explicitly a 'full dump', which matters for an agent deciding to download 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?

Zero parameters, so the baseline is 4. The description adds that the payload is JSON, which is the only relevant detail a parameterless tool can carry.

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?

States a concrete resource (a full world-reference dump) and enumerates its contents with counts: 252 countries, 418 time zones, ~14,000 holidays. The word 'Full dump' implicitly carves it out from the per-item siblings (country, holidays), though it never names them.

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 'Full dump' framing implies you should take this when you want the complete dataset rather than a single record, and the $1 USDC price is a real selection signal. But there is no explicit when-to-use, no named alternative such as country or holidays, and no guidance on when the cost is worth paying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_x402_servicesdump/x402-servicesA
Read-only
Inspect

Dataset download: $1 USDC via x402. Full dump: ~8,900 x402 pay-per-call APIs with category, price, chains and probe status (JSON). Data from nohumans.directory, CC BY 4.0, attribution required.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
rowsNo
countNo
licenseNo
sourcesNo

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. The description adds useful behavioral and operational context beyond that: concrete cost ($1 USDC via x402), approximate volume (~8,900 records), JSON format, data source, and CC BY 4.0 attribution requirement.

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 with cost and purpose. Each phrase carries distinct information: price, dataset scope, record count, fields, format, source, and license.

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 no input parameters and an output schema already present, the description supplies the key non-schema context an agent needs: cost, dataset scope, format, source, and attribution requirement. Nothing essential for selecting or invoking the tool 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?

The tool has zero parameters, so there are no input semantics to document. The baseline for a parameterless tool is 4, and the description appropriately does not waste space explaining nonexistent inputs.

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 states a specific operation and resource: a full dataset download of x402 pay-per-call APIs, with approximate record count and fields. It distinguishes itself from sample/query siblings by emphasizing 'Full dump,' though it does not explicitly name the alternatives.

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?

It implies when to use this tool by saying it is the paid full dump and that the data is JSON. However, it does not explicitly say when to use x402_services or api_directory_sample instead, nor does it outline prerequisites for x402 payment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_verifyemail-verifyA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Email verify: Email address check WITHOUT sending mail or SMTP probing: RFC-style syntax check, domain MX/A records via DNS-over-HTTPS, disposable-domain flag (CC0 blocklist, ~9,900 domains), role-address flag (info@, support@...), free-mail flag. Verdict: deliverable_domain | risky | invalid. Cannot confirm that the mailbox itself exists. Addresses are not stored or logged. When to use: Use email-verify to check syntax, MX and disposable domains for one address (DNS only, no mailbox probe).

NameRequiredDescriptionDefault
emailYesone email address

Output Schema

NameRequiredDescription
mxNo
noteNo
roleNo
emailNo
has_aNo
domainNo
has_mxNo
null_mxNo
reasonsNo
sourcesNo
verdictNo
free_mailNo
syntax_okNo
disposableNo
local_part_lengthNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld annotations, it discloses that no mail is sent, no SMTP probing occurs, DNS is queried via DNS-over-HTTPS, the mailbox existence cannot be confirmed, and addresses are not stored or logged. It also states the free-call limit and payment mechanism, which are valuable operational details.

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 dense but each element—pricing, non-goals, checks, verdicts, data handling, and usage—is relevant to calling or selecting the tool. It is slightly front-loaded with billing information before the tool purpose, but overall it remains compact and information-rich.

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 one simple required parameter, a present output schema, and annotations covering safety and openness, the description is complete. It still adds the key limitations and data-handling behavior an agent would otherwise lack.

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?

There is one required parameter and schema coverage is 100%, with the schema itself describing it as 'one email address.' The description reinforces the single-address scope but adds no format, normalization, or validation details 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 gives a specific verb and resource ('Email verify: Email address check') and spells out exactly what is checked: syntax, MX/A DNS, disposable domain, role address, and free-mail flags. It also states the verdicts and the single-address scope, though it does not explicitly name sibling tools such as email_verify_quick or email_verify_batch to distinguish itself.

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 includes a clear 'When to use' sentence scoped to one address with DNS-only checking and no mailbox probe. It does not explicitly name alternatives or say when another sibling should be preferred, but the single-address/DNS-only framing gives practical selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_verify_batchemail-verify-batchA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Email verification batch: up to 20 email addresses in one call - syntax, MX/A records via DNS-over-HTTPS, null MX, disposable, role and free-mail flags, verdict per address and a summary. No SMTP probing, nothing stored. When to use: Use email-verify-batch to clean a list of up to 20 emails.

NameRequiredDescriptionDefault
emailsYescomma-separated emails, max 20

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint and openWorldHint, and the description adds important behavior beyond them: free-call limits, paid x402/card pricing, in-band payment via params._meta, no SMTP probing, and no data storage. These are exactly the operational details an agent needs before invoking a paid, external-call tool.

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 mostly front-loaded, covering payment terms, capability details, limitations, and usage in only a few sentences. The final 'When to use' sentence is largely redundant, which keeps it from being fully optimal.

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 one input parameter, an output schema, and readOnly/openWorld annotations, the description is complete enough to call the tool correctly. It also summarizes the returned verdict/flags and summary, though the output schema already owns return-value detail.

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?

There is one parameter and schema description coverage is 100%, so the schema already explains the comma-separated email list and the max-20 limit. The description repeats the max-20 batch constraint but adds no extra syntax or formatting details beyond the schema baseline.

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 verb and resource: batch email verification for up to 20 addresses in one call. It also lists the verification checks performed, so an agent can distinguish this from single-email or quick-check siblings.

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?

It includes a 'When to use' sentence, but that sentence mostly restates the tool's batch limit and does not explain when to choose email_verify, email_verify_quick, or this batch tool instead. The max-20 scope implies a list-cleaning use case, but no alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_verify_quickemail-verify-quickA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Email quick check: offline syntax check, disposable-domain flag (~9,900 domains), role address and free-mail flags for one email, no DNS (fastest). Use email-verify for MX checks. When to use: Use email-verify-quick for a fast offline syntax/disposable check; email-verify adds MX; email-verify-batch for lists.

NameRequiredDescriptionDefault
emailYesemail address

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context annotations do not carry: 3 free calls/day across all tools, then $0.0025 USDC via x402 or card credits, with the in-band payment parameter path (params._meta["x402/payment"]) disclosed. It also discloses the no-DNS/fastest trait. Minor tension: openWorldHint=true sits alongside an 'offline, no DNS' claim that is left unexplained, which slightly muddies the external-contact picture.

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?

Front-loads the pricing/quota constraint, then the capability, then the when-to-use routing; all sentences earn their place. Slightly dense and repeats the 'quick' framing across the purpose and usage sentences, but no filler.

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, the description needn't explain return values, and it covers quota, payment, capability scope, and alternatives. The one loose end is the unexamined relationship between the 'offline' behavior and openWorldHint=true, which leaves the agent guessing about external data sources.

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% for the single 'email' parameter, so the schema already does the work. The description only implies single-address scope through "for one email", adding no syntax, normalization, or validation details beyond the schema. Baseline 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?

States a specific resource and the exact checks performed: offline syntax check, ~9,900-domain disposable list, role address and free-mail flags, explicitly "no DNS". It names and contrasts the two sibling tools (email_verify adds MX, email_verify_batch for lists), so an agent can pick it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Has an explicit "When to use" clause plus a direct alternative: "Use email-verify for MX checks" and "email-verify-batch for lists". The condition that selects each sibling is spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ensENS + Basenames resolverA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). ENS + Basenames resolver: name -> address (vitalik.eth, jesse.base.eth) or address -> verified primary name on Ethereum and Base (reverse record checked forward), plus optional text records (avatar, url, com.twitter, com.github, ...). On-chain via public RPC, no keys. When to use: Use ens to turn vitalik.eth / name.base.eth into an address before sending, or to show a verified name for an address.

NameRequiredDescriptionDefault
nameNoENS name (label.eth) or Basename (label.base.eth); or pass address instead
chainNoreverse lookup chains, default all
addressNo0x address for reverse lookup (primary name)
recordsNocomma list of text keys (max 8) or "all"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing the pricing model (3 free calls/day, then $0.0025 USDC via x402 or card credits), the in-band payment mechanism (params._meta["x402/payment"]), and the trust model (public RPC, no keys, reverse record checked forward). These are exactly the operational facts an agent needs to plan a call.

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?

Dense and nearly waste-free, but it leads with pricing before stating what the tool does, which delays the purpose for an agent scanning for capability first. Still, every sentence carries information and the whole thing is short.

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 covering return values and annotations covering the safety profile, the description fills the remaining gaps: payment handling, supported chains, record selection, and what 'verified' means for reverse lookups. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

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, but the description adds real meaning: text-record keys are exemplified (avatar, url, com.twitter, com.github), the chain scope (Ethereum and Base) is stated, and the forward-verification semantics of the reverse lookup clarify what `address` + `chain` actually return.

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 pair: bidirectional resolution of ENS/Basenames names to addresses and verified primary names, with optional text records. The examples (vitalik.eth, jesse.base.eth) and the forward-check detail on reverse records make the capability unambiguous and distinct from any sibling tool.

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?

An explicit 'When to use' clause gives two concrete scenarios: resolve a name before sending funds, or display a verified name for an address. No other sibling tool performs name resolution, so no alternatives need to be excluded; the guidance is clear even without an explicit when-not clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entity_extractentity-extractA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Named entity extraction: people, organizations, locations, dates, money amounts and products from text (max 6,000 chars), plus emails and URLs by regex. Every AI entity is checked to literally occur in the text. GET query or POST JSON body. When to use: Use entity-extract for people, companies, places, dates and amounts; extract-json when you need your own schema.

NameRequiredDescriptionDefault
textYesinput text

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/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 free-call limits, post-limit payment via x402 or credits, the in-band payment location, the 6,000-character cap, GET/POST input modes, and a literal-occurrence validation rule. These are meaningful operational traits that the annotations alone 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but mostly efficient, with no filler. Its only structural weakness is that it leads with pricing before stating the core purpose, pushing the most important identification detail into the second sentence.

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 covers purpose, usage conditions, sibling alternative, input size limit, supported input methods, payment mechanics, and validation behavior. Since an output schema exists, it does not need to explain return values, and no material gap remains 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single required text parameter, and the description adds useful constraints: maximum 6,000 characters plus the payment parameter location under params._meta. It adds value beyond the schema, though the schema coverage is already high.

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 verb and resource: named entity extraction, and explicitly lists the entity types covered. It also names the sibling tool extract-json and distinguishes this tool from it, so an agent can route correctly without opening the schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use entity-extract: people, companies, places, dates, and amounts. It also names the alternative extract-json and the condition that selects it (when you need your own schema), giving both positive and exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_jsonextract-jsonA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.01 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Extract JSON: Messy text + JSON Schema in, clean JSON out. Uses a small LLM (Cloudflare Workers AI, Llama 3.1 8B, JSON mode) when available, else a deterministic key:value/regex extractor; the result is type-checked against your schema and missing fields are null. Limits: text <= 6,000 chars, schema <= 30 top-level properties (flat objects, arrays of scalars); the model can misread ambiguous text, so check important values. Params: text, schema (JSON string), mode=auto|heuristic. GET query or POST JSON body. When to use: Use extract-json for short free text with your own JSON schema; for invoices and receipts use invoice-json.

NameRequiredDescriptionDefault
modeNo
textYesinput text, max 6000 chars
schemaYesJSON Schema (type object with properties) as a JSON string

Output Schema

NameRequiredDescription
dataNo
modelNo
limitsNo
methodNo
missingNo
sourcesNo
not_verbatim_in_textNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far beyond the readOnlyHint/openWorldHint annotations: it discloses the pricing model (3 free calls/day, $0.01 USDC via x402 with payment passed in params._meta), the implementation fallback (Llama 3.1 8B JSON mode vs deterministic key:value/regex extractor), post-processing behavior (type-check against schema, missing fields nulled), and an accuracy caveat that the model can misread ambiguous text. Nothing here contradicts the annotations — the tool is a pure read/extract operation.

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?

Very dense and mostly every sentence earns its place, but the billing/payment preamble is front-loaded ahead of the purpose statement, which is the least useful opening for tool selection. The trailing 'Params: text, schema (JSON string), mode=...' line also partially repeats the schema.

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 values needn't be explained. The description covers what an agent still needs: size limits (6000 chars, 30 top-level properties, flat objects/arrays of scalars), the transport options (GET query or POST JSON body), cost gating, and accuracy risk. Complete for a 3-parameter extraction tool.

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 67%, so the structured fields already document text (max 6000 chars) and schema. The description restates those and lists 'mode=auto|heuristic' without explaining what each mode does, leaving the one parameter undocumented in the schema only half-covered. 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 concrete verb and transformation: 'Messy text + JSON Schema in, clean JSON out.' It also names the closest sibling (invoice_json) and the distinguishing scope (short free text, your own schema), so an agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit 'When to use' clause plus a named alternative with the condition that selects it: 'for invoices and receipts use invoice-json.' This is the when/when-not/alternative pattern done properly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

feed_jsonRSS / Atom feed to JSONA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). RSS / Atom / JSON Feed to clean JSON: give a feed URL (or a web page that links one, auto-discovered) and get feed title/link/language plus normalised items: id, title, link, ISO dates, author, plain-text summary, categories, enclosures (podcast audio, media), image. Filter with since= and limit=; include_content=true adds the full text. When to use: Use feed-json to read an RSS/Atom/JSON feed (or find the feed of a site) as clean JSON items, e.g. to watch a blog, changelog, podcast or news source. Use page-rag for the full text of one article page.

NameRequiredDescriptionDefault
urlYesfeed URL (RSS 0.9x/1.0/2.0, Atom, JSON Feed) or a page with <link rel="alternate"> to one
limitNoitems to return, 1-100, default 20
sinceNoonly items published at/after this ISO date, e.g. 2026-10-01
summary_charsNomax summary length, 0-2000, default 400 (0 omits it)
include_contentNotrue adds content_text (full text, HTML stripped, max 20,000 chars per item)

Output Schema

NameRequiredDescription
urlNo
feedNo
moreNo
noteNo
itemsNo
formatNo
matchedNo
returnedNo
fetched_atNo
item_countNo
newest_itemNo
discovered_fromNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses the quota (3 free calls/day across all tools), the price ($0.0025 USDC), and the exact in-band payment mechanism (params._meta["x402/payment"]). It also documents auto-discovery of feeds from HTML pages and the truncation limit for full content, which the agent cannot learn from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Pricing/limit is front-loaded, then output shape, then usage routing — a sensible order with almost no waste. The middle sentence is long and comma-dense, but each clause conveys distinct API-relevant 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?

For a read-only fetcher with a full output schema, the description covers inputs, filtering, optional full text, return shape, cost, and sibling routing. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description adds value by explaining filtering with since= and limit= and that include_content=true adds full text. It leaves summary_chars strictly to the schema, which is acceptable given full 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?

States a specific verb+resource: converts RSS/Atom/JSON Feed URLs (or pages that link feeds, auto-discovered) into clean normalised JSON items. It enumerates the returned fields, so the agent knows exactly what it is getting, and it is clearly distinguishable from text-extraction siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Has an explicit 'When to use' sentence with concrete scenarios (watch a blog, changelog, podcast, news source) and names the alternative — page-rag for full text of one article page — with the condition that selects it. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

free_tiersfree-tiersC
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.001 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Free tiers: Current free-tier limits for developer services (hosting, DB, auth, email, CI, monitoring) and AI/LLM APIs, with official source URLs. Filter: q, category.

NameRequiredDescriptionDefault
qNo
categoryNo

Output Schema

NameRequiredDescription
countNo
sourceNo
resultsNo
sourcesNo
returnedNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description does add genuinely useful non-schema context — 3 free calls/day across all tools, then $0.001 USDC via x402 or card credits paid in-band via params._meta — which an agent needs before calling. It stops short of describing result shape or how the free-tier quota is tracked, so it is additive but partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and free of filler, but badly front-loaded: the opening sentence is about payment/quota rather than what the tool returns, pushing the actual purpose to the second sentence where it is easy to miss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 values need not be explained, and the payment model is covered. However, for a zero-covered two-parameter filter tool the description leaves the category vocabulary and q semantics undefined, which is the main gap an agent would hit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden, and it only says 'Filter: q, category' without explaining what q matches or what valid category values exist (enums are not present in the schema either). With two undocumented, unenumerated parameters, the agent must guess acceptable values.

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 middle clause names the resource precisely: 'Current free-tier limits for developer services (hosting, DB, auth, email, CI, monitoring) and AI/LLM APIs, with official source URLs.' That is a specific verb+resource, but the description never distinguishes it from overlapping siblings like llm_pricing, llm_pricing_sample, or apis_search, and the first sentence is about billing rather than purpose.

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?

No statement of when to use this versus the many pricing/directory siblings (llm_pricing, apis_search, api_directory_sample). The only usage-adjacent text is 'Filter: q, category,' which describes mechanics, not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gasgasA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Gas price (5 EVM chains): Live gas prices across 5 EVM chains in one call (Ethereum, Base, Arbitrum, Optimism, Polygon): gas price in gwei, latest block, and the cost of an ETH transfer, an ERC-20/USDC transfer and a swap in native coin and USD, plus a ranking of which chain is cheapest right now. Public RPC nodes with failover; no keys. When to use: Use gas to pick the cheapest EVM chain right now or to price a transfer/swap on Ethereum, Base, Arbitrum, Optimism or Polygon in one call. Use base-gas for Base only.

NameRequiredDescriptionDefault
chainsNo"all" (default) or a comma list: ethereum,base,arbitrum,optimism,polygon

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint, it discloses the billing model (3 free calls/day across all tools, then $0.0015 USDC via x402 or card credits, paid in-band through params._meta['x402/payment']) and the data source ('public RPC nodes with failover; no keys'). The no-keys and failover notes tell the agent there is no auth step and that failures are handled upstream.

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?

Two tight sentences carry purpose, scope, return contents, and the alternative, with no filler. The only structural weakness is that the pricing/payment preamble precedes the purpose statement, so the core capability is not fully front-loaded.

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 read-only, zero-required-param tool with an output schema already present, the description supplies everything an agent needs: what it returns, which chains, the routing alternative, auth requirements, and cost implications of calling 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 coverage is 100% on the single 'chains' parameter, so the schema already defines the accepted values. The description names the five chains but adds no syntax or default guidance beyond what the schema states. Baseline 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?

States a specific verb and resource: live gas prices across 5 named EVM chains, with the exact per-chain payload (gwei, latest block, transfer/swap cost in native and USD, cheapest-chain ranking). It explicitly distinguishes itself from the sibling base_gas (Base only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' clause covering both jobs (pick the cheapest chain, price a transfer/swap) and names the alternative with its exclusion: 'Use base-gas for Base only.' Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocodeGeocode + reverse geocodeA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Geocoding with OpenStreetMap Nominatim: address or place name -> coordinates (up to 5 matches, optional country filter), or lat+lon -> structured address (reverse). Structured address fields, country code, bounding box, OSM id. Cached; ODbL attribution included. When to use: Use geocode to turn an address or place into coordinates, or coordinates into an address (OpenStreetMap).

NameRequiredDescriptionDefault
qNoaddress or place name (forward geocoding)
latNolatitude for reverse geocoding (with lon)
lonNolongitude for reverse geocoding (with lat)
langNoresult language, default en
limitNo1-5 matches, default 1
countryNoISO 3166-1 alpha-2 filter, e.g. dk or us,ca

Output Schema

NameRequiredDescription
modeNo
countNo
queryNo
resultsNo
sourcesNo
attributionNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the readOnly/openWorld annotations: free-tier quota (3 calls/day across all tools), price and payment mechanism ($0.0015 USDC via x402 or card, paid in-band through params._meta['x402/payment']), caching, and ODbL attribution requirements. These are behavioral facts an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded and largely waste-free: pricing/quota, then capability, then usage. The pricing clause arriving first slightly buries the actual capability, but every sentence carries information.

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, return values needn't be explained, and the description still names the key returned fields (structured address, country code, bbox, OSM id). Minor gaps: no guidance on error/no-match behavior or whether q and lat/lon are mutually exclusive.

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 reinforces a few semantics — country as an optional filter, limit as 'up to 5 matches', and lat+lon pairing for reverse mode — but adds little that the schema does not already state.

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?

States a specific verb and resource ('Geocoding with OpenStreetMap Nominatim') and covers both directions: address/place -> coordinates and lat+lon -> structured address. An agent can tell what it does, though it never mentions the sibling geocode_batch, so the batch-vs-single distinction is left implicit.

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 'When to use' line restates the purpose rather than giving real selection criteria — it names no alternatives (e.g., geocode_batch for multiple addresses) and no exclusions. Usage is implied by the forward/reverse mode split but not genuinely guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geocode_batchgeocode-batchA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.002 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Geocode batch: up to 5 addresses or place names (separated by |) to coordinates and a structured address in one call, optional country filter. OpenStreetMap Nominatim, cached, ODbL attribution. When to use: Use geocode-batch for up to 5 addresses at once.

NameRequiredDescriptionDefault
qYesaddresses separated by |, max 5
countryNooptional ISO-2 country filter

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/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 substantial behavioral context: free-call quota, per-call price, in-band x402 payment parameter, caching, provider, and ODbL attribution. This goes well beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and mostly front-loaded, but it leads with service-wide pricing before stating the tool's purpose and repeats the 'up to 5' limit in both the purpose and usage sentences. Minor redundancy keeps it below top marks.

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 paid batch geocoding tool with full schema coverage and an output schema, the description covers the essential calling context: quota, pricing, payment mechanism, batch limit, provider, cache, and attribution. It stops short of explaining partial-failure behavior or error cases.

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 the separator, max count, and optional ISO-2 country filter. The description adds that place names are accepted in addition to addresses, but otherwise mostly restates schema semantics; this is the baseline for high-coverage schemas.

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 and resource ('Geocode batch'), the batch size ('up to 5'), the outputs ('coordinates and a structured address'), and the optional country filter. The batch scope clearly distinguishes it from the single-address sibling 'geocode'.

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 explicitly says when to use it: 'Use geocode-batch for up to 5 addresses at once.' However, it does not explicitly name the sibling 'geocode' as the alternative for single-address requests or state when not to use this batch tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

holidaysholidaysA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Public holidays for ~490 countries/territories for 2026 and 2027; optional date=YYYY-MM-DD answers is_holiday. When to use: Use holidays to list public holidays or test one date for a country.

NameRequiredDescriptionDefault
dateNo
yearNo
countryYesISO2

Output Schema

NameRequiredDescription
noteNo
yearNo
countNo
countryNo
sourcesNo
holidaysNo

TDQS

A3.6/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 safety and external-data behavior are covered. The description adds important non-schema context: free-tier limits, paid fallback via x402/card credits, in-band payment location, and the fact that date converts the result into an is_holiday answer. It does not explain error or pagination behavior, but the added pricing/payment context is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably short, but it leads with billing and free-tier details before stating the tool's core purpose. The key 'what it does' sentence comes after payment mechanics, which is less front-loaded than ideal for tool selection.

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 presence of an output schema, the description need not explain return values. It covers the core scope, date behavior, pricing/payment, and country coverage, which is most of what an agent needs for this 3-parameter, read-only lookup tool. Remaining gaps are minor: year default behavior and country code format are left to 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?

Schema description coverage is only 33%: country is described as 'ISO2', year is an enum, and date has no schema description. The description compensates for date by explaining 'date=YYYY-MM-DD answers is_holiday' and implies the year scope, but leaves year default/behavior and country format underexplained in the prose. This is a partial, not full, compensation for the low schema coverage.

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 states a specific resource and scope: 'Public holidays for ~490 countries/territories for 2026 and 2027', and explains the optional date=YYYY-MM-DD behavior. It is clear what the tool returns, though it does not explicitly differentiate itself from any similar sibling tool.

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 'When to use' sentence says to use holidays to list public holidays or test one date for a country, which gives basic usage context. However, it restates the obvious rather than explaining when not to use it or naming an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_jsonInvoice/receipt to JSONA
Read-only
Inspect

Send exactly one of url, text, or file_base64 + mime_type. 3 free MCP calls per day (all tools together), then $0.0075 USDC per page via x402 or card credits (paid in-band: params._meta["x402/payment"]). Invoice or receipt (PDF, PNG/JPEG/WebP image, or plain text) to structured JSON with a fixed schema: vendor (name, address, VAT ID, email, phone, IBAN), customer, invoice number, order number, issue/due date, currency (ISO 4217), subtotal, VAT total, total, amount due, VAT breakdown and line items. Every field has value, the verbatim source quote and a confidence score (0-1: quote found in the document, value matches quote, totals add up). Arithmetic checks included. $0.0075 per page (max 10 pages per call; the 402 quotes pages x $0.0075), 1 free call per caller (up to 3 pages). Runs on Cloudflare Workers AI only (PDF text layer via toMarkdown, OCR for images); documents are not stored. Scanned PDFs without a text layer: send page images. POST JSON {url} or {file_base64, mime_type} or {text}, or POST the raw file (Content-Type application/pdf or image/*); GET ?url= or ?text= also works. When to use: Use invoice-json for invoices and receipts (fixed accounting schema, quotes, arithmetic checks). Use extract-json for any other short text with your own JSON schema. Use page-rag to turn a web page into Markdown for retrieval. Pay by card instead of crypto: put a Gumroad license key from https://freetier.gumroad.com/l/gvyfk in params._meta["x-license-key"] (or HTTP header X-License-Key); 7.5 credits ($0.0075) per page, rounded down per call. Time limit about 22 s per call; on timeout or error nothing is charged or settled.

NameRequiredDescriptionDefault
urlNopublic http(s) URL of a PDF, PNG, JPEG or WebP invoice/receipt (max 8 MB)
textNoinvoice text instead of a file (max 40,000 chars)
mime_typeNowith file_base64: application/pdf, image/png, image/jpeg, image/webp or text/plain
file_base64Nobase64 of a PDF/PNG/JPEG/WebP file (max 8 MB); set mime_type too

Output Schema

NameRequiredDescription
inputNo
modelNo
pagesNo
checksNo
limitsNo
totalsNo
vendorNo
missingNo
sourcesNo
currencyNo
customerNo
due_dateNo
billed_usdNo
issue_dateNo
line_itemsNo
text_charsNo
order_numberNo
document_typeNo
payment_termsNo
vat_breakdownNo
invoice_numberNo
confidence_methodNo
overall_confidenceNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the readOnlyHint/openWorldHint annotations, it discloses pricing and free-tier limits, the in-band x402 payment parameter, a card-licence alternative, the 10-page/8 MB/22 s caps, that documents are not stored, that failures are not charged, and that it runs on Cloudflare Workers AI. These are exactly the operational traits an agent must know before invoking a paid call.

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 critical call-shape constraint (exactly one of url/text/file_base64) is front-loaded, and the use-case routing is placed where it can be scanned. The cost is some redundancy: pricing is stated three times and the free tier twice ("3 free MCP calls per day" vs "1 free call per caller"), which could briefly confuse a reader.

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, yet the description still summarizes the returned fields and the value/quote/confidence triple plus arithmetic checks, so an agent knows what it will get. Combined with transport options (POST JSON, raw upload, GET query) and payment paths, nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

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, but the description adds a constraint the schema does not express: the inputs are mutually exclusive and exactly one must be supplied (schema has no required fields). It also restates the url/text/file_base64+mime_type grouping, which clarifies how mime_type pairs with file_base64. It does not add format detail 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?

States a specific verb and resource: an invoice/receipt (PDF, image, or text) is converted into structured JSON with a fixed accounting schema, and the schema's fields are enumerated. It explicitly distinguishes itself from extract_json (any text, custom schema) and page_rag (web page to Markdown), so an agent can pick it without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit "When to use" block naming two alternatives and the condition that selects each: invoices/receipts here, arbitrary text with a custom schema to extract_json, web pages to page_rag. It also gives concrete fallback guidance for scanned PDFs without a text layer (send page images).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_endpointsList endpoints and pricesAInspect

Free. List every endpoint (core products first) with its price in USDC, description and example query. Core: invoice-json $0.0075/page, token-risk $0.005, tx-explain $0.0025, wallet-profile $0.005, contract-abi $0.0025, site-contacts $0.004, page-rag $0.0025, token-info $0.0025, ens $0.0025, tx-status $0.0015, dns $0.0025, domain-whois $0.005, ssl-cert $0.005, geocode $0.0015; utilities $0.001-$0.01; dataset downloads $1. 1 free call per route per caller.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does real work: it discloses cost ($0.00 to call), the per-route free-call throttle, ordering (core products first), and the fields returned. It stops short of stating rate limits beyond the free-call note or whether the listing is ever cached/stale.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead ('Free. List every endpoint ... example query') is well front-loaded, but the following 14-item price enumeration is a dense inline dump that could be collapsed to a range or deferred to the response. It is informative yet heavy for a description field.

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?

No output schema and no annotations, so the description must describe the return shape, and it does: price, description, and example query per endpoint, with core products ordered first. Only a note on response size/pagination 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?

The tool takes zero parameters, so the baseline is 4; nothing about parameter meaning needs explaining, and the description correctly spends no words on inputs.

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?

States a clear verb and resource ('List every endpoint') plus what each entry contains: price in USDC, description, example query. It implicitly separates itself from the per-endpoint siblings (tx_explain, ens, geocode) as the catalog view, but never names a sibling or the discovery role explicitly.

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?

'Free' and '1 free call per route per caller' hint at when it is cheap to call, but there is no explicit guidance on when to use this versus discovery siblings like apis_search, api_directory_sample, or free_tiers. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

llm_costllm-costA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token & cost calculator: estimate tokens for a text (or pass input_tokens/output_tokens) and price it across several models using provider list prices (LiteLLM price table, MIT). Params: models (comma list of model ids like gpt-4o-mini, claude-sonnet-4-5, gemini/gemini-2.5-flash or search words, max 15), text or input_tokens, output_tokens, calls. When to use: Use llm-cost to compare what a workload costs across models.

NameRequiredDescriptionDefault
textNo
callsNo
modelsNo
input_tokensNo
output_tokensNo

Output Schema

NameRequiredDescription
callsNo
resultsNo
sourcesNo
input_tokensNo
output_tokensNo
estimate_methodNo
input_tokens_estimatedNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond readOnlyHint/openWorldHint by disclosing a concrete commercial constraint (3 free calls per day across all tools, then $0.005 USDC), the exact in-band payment mechanism (params._meta["x402/payment"]), and data provenance (LiteLLM price table, MIT). Rate limit, auth/payment path, and price source are exactly the behavioral facts an agent needs before invoking.

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?

Dense but zero-waste: cost/free-tier framing first, then what it computes, then params, then when-to-use. Four sentences each carrying distinct information, with the commercial constraint front-loaded where it matters most for a paying agent.

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 5-param, 0%-coverage tool with an output schema, the description covers payment, source of truth, model selection syntax, and the two input modes (estimate vs supplied token counts). It omits only what "calls" means semantically and that numeric inputs arrive as strings, so an agent could mis-specify that one parameter.

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 0% schema description coverage, the description carries the full parameter burden and mostly succeeds: models is given format, examples, search-word fallback, and a hard cap of 15; text vs input_tokens is framed as an either/or. The gap is "calls," which is listed but never explained, and the fact that all five params are typed as strings is not flagged.

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?

States a concrete verb+resource: "Token & cost calculator: estimate tokens for a text ... and price it across several models using provider list prices." That is specific enough to act on. It does not, however, distinguish itself from near-neighbors like token_compare, llm_pricing, or dump_llm_pricing, which an agent could easily confuse it with.

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?

Explicit positive routing exists: "When to use: Use llm-cost to compare what a workload costs across models." It also implies the token-estimation path via the text/input_tokens params. It gives no when-not guidance and never names the sibling tool that would be the alternative, 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.

llm_pricingllm-pricingA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). LLM pricing: AI model list prices (USD per 1M input/output/cached tokens, context window, vision/tools/reasoning flags) for ~3,000 models across OpenAI, Anthropic, Google, Mistral, Groq, Bedrock, Azure, Together, Fireworks and more, plus verified free tiers/rate limits of AI APIs. Filters: q, provider, free=yes, max_input_per_m, min_context, vision=yes, tools=yes, sort=input|output|context, limit<=100.

NameRequiredDescriptionDefault
qNo
freeNo
sortNo
limitNo
toolsNo
visionNo
providerNo
min_contextNo
max_input_per_mNo

Output Schema

NameRequiredDescription
countNo
modelsNo
sourcesNo
returnedNo
free_tiersNo

TDQS

A4.3/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 substantial context the annotations cannot convey: a metered quota (3 free MCP calls/day across all tools), a $0.005 USDC charge via x402 or card credits, and that payment is supplied in-band at params._meta["x402/payment"]. This is exactly the kind of billing/authorization behavior an agent must know before calling.

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?

Two dense sentences with no filler; the billing terms lead (arguably the most decision-critical fact) followed by the data scope and filter list. Slightly crowded but every clause carries information, and nothing is repeated from structured fields needlessly.

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 read-only filterable data tool with an output schema already defining return shape, the description covers cost model, dataset breadth, provider coverage, all filter dimensions and the result cap. An agent has everything needed to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 9 parameters, so the description carries the full burden and does: it names every parameter (q, provider, free, max_input_per_m, min_context, vision, tools, sort, limit), gives the enum values for the flag/sort params, and adds the constraint limit<=100 that the schema does not express.

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 resource (AI model list prices: input/output/cached token pricing, context window, capability flags, plus free tiers/rate limits) and its scale (~3,000 models, named providers). It does not explicitly distinguish itself from close siblings such as llm_pricing_sample, dump_llm_pricing or llm_cost, which is the only thing keeping it from a 5.

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?

It enumerates the available filtering modes (free=yes, vision=yes, tools=yes, sort, limit) which implies how to narrow results, but never states when to choose this tool over llm_cost, llm_pricing_sample or dump_llm_pricing, nor any prerequisites beyond the payment note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

llm_pricing_sampleAInspect

Free. List prices of five popular LLMs (USD per 1M tokens, LiteLLM table, MIT).

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry behavioral context; it usefully discloses cost (free), data provenance (LiteLLM table), license (MIT), and price unit. It does not state freshness, caching, or rate behavior, so it is helpful but incomplete for a tool with zero 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?

A single dense sentence, front-loaded with the free/cost qualifier and otherwise carrying only essential scope, unit, and provenance. No waste.

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-param, read-only list tool with no output schema, the description supplies enough (model count, price unit, source) to call it correctly. Slightly more detail on return fields would make it airtight, but nothing critical 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?

Zero parameters, so per the rubric the baseline is 4; the description adds that prices are in USD per 1M tokens, which is useful framing but not a parameter concern.

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 and resource ("List prices") plus scope ("five popular LLMs") and unit (USD per 1M tokens), which separates it from the likely full sibling llm_pricing and the llm_cost sibling. An agent can identify it as a lightweight pricing lookup without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Free" and "sample" of only five models imply a cheap/quick first stop versus llm_pricing or llm_cost, but no alternative is named and no explicit when/when-not condition is given. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_serversmcp-serversA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.001 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). MCP servers search: Search 4,259 MCP (Model Context Protocol) servers by keyword, category, language (python/typescript/go/rust...), scope (cloud/local) and official flag. Returns repo URL and description.

NameRequiredDescriptionDefault
qNo
limitNo
scopeNo
categoryNo
languageNo
officialNo

Output Schema

NameRequiredDescription
countNo
resultsNo
sourcesNo
returnedNo
categoriesNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description goes beyond that with genuinely non-obvious operational context: a 3-call-per-day free quota shared across all tools, then $0.001 USDC via x402 or card credits, paid in-band through params._meta["x402/payment"]. That payment mechanism is exactly the kind of thing an agent cannot learn from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the return-shape clause is a useful close. The main structural flaw is that the long pricing/payment sentence is front-loaded ahead of the actual purpose statement, delaying the agent's answer to "what does this do?" until sentence two.

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, the description needn't document return fields, and its one-line return summary is sufficient. Six optional parameters with zero schema descriptions leave gaps (no default or max for limit, no pagination behavior), but for a read-only search tool with clear filter names the coverage is largely adequate.

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 0%, so the description carries the full burden. It glosses keyword, category, language, scope, and official flag, but never mentions the limit parameter at all, nor explains that limit is typed as a string or that official only accepts "yes" — quirks an agent would otherwise get wrong.

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 gives a specific verb and resource ("Search 4,259 MCP (Model Context Protocol) servers") and enumerates the filterable dimensions, so the agent knows exactly what the tool returns. It does not, however, distinguish itself from the closely related siblings mcp_servers_sample and dump_mcp_servers, which is the only thing keeping it from a 5.

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?

Implicit guidance comes from the enumerated filters and the note that results include repo URL and description, which signals "use this to find a server." There is no explicit when-to-use/when-not statement and no routing to mcp_servers_sample or dump_mcp_servers, so the agent must infer which of the three MCP tools to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_servers_sampleCInspect

Free. Five sample MCP servers from the 4,259-server directory (MIT source).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose two useful traits: cost ("Free") and licensing ("MIT source"). However, it says nothing about how the five are selected (first five, random, curated), the return format, or any pagination/rate 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?

A single tight sentence with no filler, and the distinguishing constraint ("Five sample") appears early. It is arguably too terse rather than bloated, which is a completeness issue, not a conciseness one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no parameters, the description is the only documentation the agent gets. It omits the return shape, how the sample is chosen, and any relation to the full-directory siblings, leaving meaningful gaps for a tool whose entire value is its curated content.

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 takes zero parameters, so the baseline is 4. The description adds nothing parameter-related, but nothing is needed — there are no inputs to disambiguate and schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (MCP servers) and the scope (five samples drawn from a 4,259-server directory), so an agent can guess what comes back. But it is a noun phrase with no action verb, and it never distinguishes itself from siblings mcp_servers or dump_mcp_servers. Purpose is inferable rather than stated.

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?

There is no when-to-use guidance. The word "sample" faintly implies a preview, but the description never says to use this instead of mcp_servers when you only need a few examples, nor names any alternative. An agent must infer the tradeoff on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

news_entitynews-entityA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Entity news last 24h: who is writing about a company, person or project in the last 24 hours - article count, top sources, top countries, headlines - plus a Wikipedia identity check of the entity. Data: GDELT DOC 2.0 + Wikipedia. When to use: Use news-entity for a 24h media snapshot of one company, person or project.

NameRequiredDescriptionDefault
langNoWikipedia language for the identity check, default en
entityYescompany, person, product or project name

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint already declaring the safety and open-world profile, the description still adds meaningful context: the free-call quota (3/day across all tools), the paid continuation path with price and payment mechanism, and the in-band x402 payment parameter location. Still missing are failure behavior for unmatched entities and whether the Wikipedia check can fail independently of the news half.

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?

Dense and short overall, with no filler sentences. The one structural weakness is ordering: the billing/quota paragraph is front-loaded ahead of what the tool actually does, so the purpose statement arrives second when it should lead.

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 two-parameter read-only tool with an output schema and annotations already covering safety and open-world behavior, this covers the remaining essentials: what it returns, which sources back it, and the cost model. Only entity-miss behavior and the independence of the two sub-results (news vs Wikipedia) are left unstated.

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% and both parameters are documented in the schema, so the baseline is 3. The description reinforces the split by describing 'a Wikipedia identity check of the entity', which quietly explains why a language parameter exists, but it adds no format or syntax guidance (entity disambiguation, lang values) 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?

States a specific verb and resource — a 24h entity news snapshot — and enumerates the outputs (article count, top sources, top countries, headlines) plus a Wikipedia identity check, naming the data sources (GDELT DOC 2.0, Wikipedia). This is far more specific than the name alone and implicitly distinguishes it from news_monitor/news_sentiment by scoping to one entity over 24h, but it never names those siblings to rule them out.

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?

An explicit 'When to use' sentence gives the selection condition: a 24h media snapshot of one company, person or project. That is clear positive guidance, but there are no exclusions or pointers to the obvious alternatives (news_sentiment for tone, news_monitor for ongoing tracking, wiki_fact for identity alone).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

news_monitornews-monitorA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). News search and monitor: latest news articles worldwide (65+ languages) matching keywords in a time window (1h to 2 weeks), newest first, with title, URL, source domain, language, country and time. Data: GDELT Project DOC 2.0 API. When to use: Use news-monitor to fetch the latest articles for keywords; news-entity for a 24h who-writes-about-X digest; news-sentiment for tone.

NameRequiredDescriptionDefault
qYeskeywords or "exact phrase"
langNooptional source language, e.g. english, german
limitNomax 50, default 20
timespanNoe.g. 1h, 24h, 3d, 1w (default 24h)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: discloses the exact pricing model (3 free calls/day across all tools, then $0.005 USDC via x402 or card credits), how payment is transmitted in-band via params._meta["x402/payment"], and the upstream data source (GDELT DOC 2.0). Those are operational facts an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, no filler, with pricing and the payment mechanism front-loaded. The capability block is somewhat packed (language count, field list, data provider crammed into one clause), but every element is load-bearing for an agent deciding whether to call.

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 an output schema exists, return values needn't be explained, yet the description still summarizes them (title, URL, source domain, language, country, time). Combined with cost, data provenance, and sibling routing, nothing an agent needs before invoking it 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, but the description adds meaning the schema lacks: the timespan accepts a bounded range from 1h to 2 weeks, results favor recency (newest first), and the corpus spans 65+ languages. It doesn't explain the q syntax beyond what the schema says, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('News search and monitor') with concrete scope: worldwide articles in 65+ languages, keyword match, time window, newest first. It explicitly separates itself from news_entity and news_sentiment by naming what each of those does instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' clause that routes the agent: news-monitor for latest articles by keyword, news-entity for a 24h who-writes-about-X digest, news-sentiment for tone. Both alternatives are named with the condition that selects them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

news_sentimentnews-sentimentA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). News sentiment: average tone of worldwide news coverage about a topic, company or person over a window (default 7 days) with label (negative to positive), trend (improving/worsening/stable) and the tone timeline. Data: GDELT DOC 2.0 tone analysis. When to use: Use news-sentiment to judge whether coverage of a topic is negative or positive, and its trend.

NameRequiredDescriptionDefault
qYestopic, company or person
langNooptional source language
timespanNoe.g. 24h, 7d, 2w (default 7d)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/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 behavioral context beyond that: free-call limits, per-call pricing after the limit, in-band payment location, default timespan, data source, and the shape of the sentiment result. It does not discuss failure modes or data-quality limitations, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the commercial/payment constraints before explaining the sentiment output and use case. Every sentence contributes, though leading with pricing rather than the tool's core analysis slightly delays the primary purpose.

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 simple three-parameter schema, existing output schema, and annotations, the description covers purpose, data source, default window, result fields, cost, and use case. It is complete enough to invoke correctly, with the main missing piece being explicit sibling differentiation.

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 q, lang, and timespan. The description adds the default window of 7 days for timespan and clarifies that q can be a topic, company, or person, but it does not add substantial semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific analyzed resource: average tone of worldwide news coverage about a topic/company/person over a window, with label, trend, and timeline, sourced from GDELT DOC 2.0. This is clear enough to distinguish it from generic search or entity-extraction siblings, though it does not explicitly contrast itself with news_monitor or news_entity.

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 an explicit use case: judging whether coverage of a topic is negative or positive and whether the trend is improving or worsening. It does not state when not to use it or name alternative sibling tools for overlapping news workflows, so it is clear but not fully routing-oriented.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_ai_tool_discoverypack/ai-tool-discoveryA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.012 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier AI Tool Discovery pack: Discover AI-agent tooling in one call: matching MCP servers, x402 pay-per-call services and agent tools for any query. Built for agents that need to find and chain new capabilities at runtime. Info: https://freetier-agent-api.pages.dev/packs/ai-tool-discovery

NameRequiredDescriptionDefault
qYesSearch query, e.g. "pdf parsing" or "onchain data"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavioral context beyond the annotations: a hard rate limit of 3 free calls/day shared across all tools, a $0.012 USDC price, and the exact in-band payment mechanism via params._meta["x402/payment"]. That payment detail is critical and appears nowhere in the annotations or schema. It's consistent with readOnlyHint=true and openWorldHint=true.

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?

Three tight sentences with no filler; the pricing/rate-limit preamble is front-loaded so cost is known before committing. Slight awkwardness in leading with billing before stating what the tool does, but nothing is wasted.

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?

Because an output schema exists, return values needn't be explained, and the description covers cost, quota, payment flow, and scope plus a docs link. The only meaningful gap is sibling routing guidance for an agent choosing among the many discovery 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?

The single 'q' parameter is fully documented in the schema with examples, so baseline is 3 per the coverage rule. The description adds only the unschema'd payment meta-parameter, which is behavioral rather than semantic detail about the search input itself.

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?

States a specific verb and resource set: 'Discover AI-agent tooling in one call: matching MCP servers, x402 pay-per-call services and agent tools for any query.' The tri-resource scope distinguishes it from single-resource siblings like mcp_servers or x402_services, though the sibling names are never mentioned.

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?

'Built for agents that need to find and chain new capabilities at runtime' implies the use case but gives no explicit when-to-use/when-not, and never names the obvious alternatives (mcp_servers, x402_services, agent_tools) that this pack aggregates. An agent has to infer that this is the broad-search option versus the targeted siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_b2b_lead_finderpack/b2b-lead-finderA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.022 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier B2B Lead Finder pack: Find B2B leads on any company website in one call: contact emails and people from the site, a company profile, its tech stack, and quick deliverability verification of up to 3 emails found. Output is ready for outreach tooling. Info: https://freetier-agent-api.pages.dev/packs/b2b-lead-finder

NameRequiredDescriptionDefault
urlNoCompany website URL to scan for contacts, e.g. https://acme.com
domainNoCompany domain for profile and tech stack; derived from url when omitted

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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 cost/limit model is genuinely additive: 3 free calls per day shared across all tools, then $0.022 USDC via x402 or card credits, paid in-band via params._meta["x402/payment"]. That is exactly the kind of operational context structured fields do not carry. Minor gaps remain around what happens on failure or which inputs are guaranteed to yield results.

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?

Two dense sentences with no filler, and the deliverable list is well enumerated. The one structural weakness is front-loading the billing quota and payment mechanics ahead of the statement of purpose, which delays the agent's answer to 'what does this do.'

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?

An output schema exists, so return values need no prose, and the annotations cover safety. The description covers pricing, bundling, and output readiness. The gap is that both parameters are optional, and the description never says what happens when neither url nor domain is supplied.

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 both url and domain, including that domain is derived from url when omitted. The description adds only a loose mapping of url to contacts/people and domain to profile/tech stack, without new syntax or format detail. Baseline 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 names a specific verb and resource ('Find B2B leads on any company website') and enumerates the concrete deliverables: contact emails, people, company profile, tech stack, and up to 3 email verifications. The phrase 'in one call' implies aggregation vs. the individual sibling tools (company_contacts, company_profile, company_techstack), but it never names them, so the differentiation requires inference.

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?

Usage is only implied through 'in one call' — the agent can gather this is the bundled alternative to the individual company_* tools. There is no explicit statement of when to prefer this pack over those siblings, nor any prerequisites or exclusions beyond the daily quota.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_domain_healthpack/domain-healthA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier Domain Health Check pack: Full health check for a domain in one call: WHOIS ownership and expiry, DNS records, SSL certificate status, robots.txt rules and sitemap availability. Use it to vet a site before outreach, purchases or integrations. Info: https://freetier-agent-api.pages.dev/packs/domain-health

NameRequiredDescriptionDefault
urlNoBase URL for the robots-check and sitemap; defaults to https://<domain>
domainYesDomain to check, e.g. example.com

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/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 discloses free-tier limits, paid pricing, and in-band payment mechanics. It also enumerates exactly which checks are performed. It does not describe failure behavior or partial-result semantics, but the output schema likely covers return structure.

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 includes only relevant information: pricing, purpose, coverage, and a use case. The cost sentence is somewhat dense and placed before the purpose, but it remains clear and 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?

Given the output schema, annotations, and full schema coverage, the description provides enough information to understand what the tool returns and when it is useful. The main minor gap is lack of explicit differentiation from sibling single-purpose 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 both the domain and url parameters are already documented in the schema. The description adds little parameter-specific meaning beyond the schema, making a baseline 3 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 names a specific resource (a domain) and specifies an aggregate health check covering WHOIS, DNS, SSL, robots.txt, and sitemap. It clearly distinguishes this tool as a one-call pack rather than a single-purpose check.

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?

It provides a use case: vetting a site before outreach, purchases, or integrations. However, it does not explain when to use this pack versus the many sibling single-purpose tools such as domain_whois, dns, ssl_cert, robots_check, or sitemap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_payment_verificationpack/payment-verificationA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.008 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier Payment Verification pack: Verify a blockchain transaction before you trust it: live status (confirmed, pending or failed) plus a plain-language explanation of what the transaction actually did. One call for agents that handle payments. Info: https://freetier-agent-api.pages.dev/packs/payment-verification

NameRequiredDescriptionDefault
hashYesTransaction hash to verify

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely non-obvious behavior: the free-tier quota (3 calls/day across all tools), the $0.008 USDC x402 / card-credit cost, and that payment is passed in-band via params._meta["x402/payment"]. It does not explain supported chains or behavior on unknown hashes, but the monetization mechanics are a meaningful disclosure.

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 pricing line is front-loaded and the core capability follows immediately, with the info URL last. Minor waste: 'FreeTier Payment Verification pack' restates the tool title, and the pricing boilerplate is longer than the tool-specific content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 values need not be explained, and annotations cover read-only semantics. For a blockchain verification tool, though, the description omits chain coverage and failure behavior for unknown or unmined hashes, which are the details an agent most needs before calling.

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?

There is a single parameter, fully described in the schema at 100% coverage ('Transaction hash to verify'), so the schema already does this job. The description does not add format details (chain scoping, hash length, multichain handling), leaving it at the baseline for full-coverage schemas.

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?

States a specific verb and resource (verify a blockchain transaction) and enumerates the outputs: live status plus a plain-language explanation of what the transaction did. That clearly differentiates it in substance from single-purpose siblings like tx_status and tx_explain, but it never names those siblings, so an agent must infer that this is the combined 'both in one call' option.

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?

'Verify a blockchain transaction before you trust it' and 'One call for agents that handle payments' imply the use case, so usage is inferable. However, given that tx_status and tx_explain exist as overlapping siblings, the description never says when to pick this pack over them, nor does it state exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_wallet_safetypack/wallet-safetyA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.024 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier Wallet Safety Scan pack: Full safety scan of any wallet before you transact: profile and holdings, portfolio value, per-token risk scoring and a rug-pull check, combined into one verdict (low, medium or high risk). One call instead of four, built for AI agents on x402. Info: https://freetier-agent-api.pages.dev/packs/wallet-safety

NameRequiredDescriptionDefault
tokenNoOptional token contract address to run the token risk check on
addressYesWallet address to scan (EVM 0x... format)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnlyHint and openWorldHint; the description adds the critical non-schema behavior: a 3-call/day free quota shared across all tools, then $0.024 USDC via x402 or card credits, and the exact in-band payment mechanism (params._meta["x402/payment"]). That payment/quota disclosure is exactly what an agent needs before invoking a metered tool and is unavailable anywhere else.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pricing preamble occupies roughly the first third of the text and precedes the actual purpose, so the definition is not front-loaded on what the tool does. The trailing URL plus "built for AI agents on x402" partially restates the payment sentence, adding 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?

An output schema exists, so return values need not be explained, and the description still gives the verdict scale (low/medium/high). With metering, payment channel, and scan scope all covered, the remaining gap is only edge behavior (e.g., what a partial scan failure or quota exhaustion returns).

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 both params are documented (address format, optional token contract), so the schema carries the semantics. The description adds only indirect meaning via "per-token risk scoring", which hints at what the optional token param triggers, but does not explain defaults or what happens when token is omitted.

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 and resource ("Full safety scan of any wallet") and enumerates the components: profile and holdings, portfolio value, per-token risk scoring, rug-pull check, plus the output form (one verdict of low/medium/high). The phrase "One call instead of four" explicitly differentiates it from the sibling primitives (wallet_profile, token_portfolio, token_risk, rug_check) that an agent could otherwise chain.

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?

"before you transact" gives a clear trigger condition, and "One call instead of four" tells the agent this replaces a multi-call workflow. It stops short of explicitly naming the sibling tools it supersedes or stating when a single-purpose call would be preferable, so no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_website_to_ragpack/website-to-ragA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). FreeTier Website to RAG pack: Turn any web page into clean AI-ready data in one call: the page as markdown, a RAG-ready index for retrieval, and page metadata (title, description). Built for agents that need to read, quote and answer from a URL. Info: https://freetier-agent-api.pages.dev/packs/website-to-rag

NameRequiredDescriptionDefault
urlYesURL of the page to convert, e.g. https://example.com/about

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, openWorldHint), so the bar is lower. The description still adds real behavioral context the annotations don't: a 3-calls/day free tier, $0.015 USDC pricing, and the in-band payment mechanism via params._meta['x402/payment'].

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pricing sentence is front-loaded ahead of the actual purpose, delaying what the tool does until sentence two. The rest is tight and the trailing docs link is useful, but the lead should be the purpose, not the billing.

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, single-parameter tool with an output schema, this covers purpose, outputs, cost model, and payment path. The remaining gap is routing guidance against the near-identical page_markdown/page_rag/page_meta 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?

Schema coverage is 100% and the single url parameter is fully documented with an example, so the schema does the heavy lifting. The description adds a payment-related meta parameter not in the schema, but gives no syntax for it beyond the key name, so it stays at baseline.

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?

It names a specific verb and resource ('Turn any web page into clean AI-ready data') and enumerates the three outputs (markdown, RAG index, metadata) in one call. That implicitly differentiates it from the sibling trio page_markdown/page_rag/page_meta, but it never names them, so the distinction is left to inference.

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?

'Built for agents that need to read, quote and answer from a URL' gives an implied use case, and the pricing line signals a metered tool. However, it never states when to prefer this pack over the separate page_markdown/page_rag/page_meta siblings, nor any URL-type exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

page_checkpage-checkA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). One-call page audit for agents: HTTP status, redirects, latency, title, meta description, canonical, lang, Open Graph, JSON-LD types, headings, word count, plus agent-friendliness: robots.txt rules for 14 AI crawlers, llms.txt, sitemap, and a 0-100 score with reasons. When to use: Use page-check for status, redirects, headers and SEO basics of a URL; for content use page-rag.

NameRequiredDescriptionDefault
urlYes

Output Schema

NameRequiredDescription
h1No
ogNo
okNo
urlNo
langNo
titleNo
statusNo
fetchedNo
sourcesNo
h2_countNo
canonicalNo
final_urlNo
bytes_readNo
latency_msNo
redirectedNo
word_countNo
descriptionNo
robots_metaNo
content_typeNo
json_ld_typesNo
robots_txt_statusNo
agent_friendlinessNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses the free tier (3 calls/day across all tools), the paid fallback ($0.0025 USDC or card credits), and the exact in-band payment mechanism (params._meta["x402/payment"]). That is precisely the cost/auth/rate-limit context an agent needs before calling, and it is not encoded in any structured field here.

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?

Dense and mostly front-loaded, but the opening sentence is billing mechanics rather than purpose, pushing the actual capability behind pricing detail. Every sentence does carry information, so the waste is minimal — the ordering is the weakness.

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?

Output schema exists, so return shape need not be explained, yet the description usefully enumerates the signals audited. Payment and rate limits are fully covered. Minor gaps remain: no mention of behavior on unreachable/4xx URLs or whether results are cached.

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 single `url` parameter has 0% schema description coverage, so the description bears the burden. It usefully documents the otherwise invisible `_meta["x402/payment"]` field, but never states what form `url` takes (absolute URL required, http vs https, whether it must be publicly reachable). Partial compensation only.

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?

Specific verb+resource: a one-call audit of a URL returning status, redirects, latency, SEO metadata and agent-friendliness signals with a 0-100 score. It distinguishes itself from page-rag by name, but the large family of overlapping siblings (page_meta, robots_check, sitemap, link_check) is not addressed, so an agent may not immediately see why this supersedes them.

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?

Explicit 'When to use' clause with a named alternative: use page-rag for content. Redirects general agents away from the wrong tool for the content case. It stops short of the more likely confusion — page_meta or robots_check, which cover subsets of the same ground — so the routing advice is clear but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

page_markdownpage-markdownA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Page to Markdown: Convert a public web page to clean Markdown (title, headings, paragraphs, lists, links, code), scripts/nav/footer removed, max ~60k chars. robots.txt respected. When to use: Legacy converter. page-rag gives cleaner main-content Markdown plus chunks at the same price.

NameRequiredDescriptionDefault
urlYes

Output Schema

NameRequiredDescription
urlNo
noteNo
charsNo
titleNo
statusNo
sourcesNo
markdownNo
final_urlNo
truncatedNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnlyHint and openWorldHint; the description adds the operationally important facts: 3 free calls/day shared across tools, $0.0025 USDC via x402 or card credits, in-band payment parameter path, robots.txt compliance, and a ~60k character output cap. These are exactly the cost, quota and limit disclosures an agent needs before invoking.

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?

Content is dense and every clause carries information, but the billing boilerplate occupies the leading sentence ahead of the actual purpose, which delays the front-loaded answer to 'what does this do'. The purpose, limits and alternative are otherwise ordered sensibly in three compact sentences.

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, return shape need not be described, and the description covers cost, quota, size cap, robots policy, content filtering and the sibling alternative. What is missing is failure behavior for non-public or blocked pages, a minor gap for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (url) with zero schema description coverage, so the description carries the burden. It adds the meaningful constraint that the page must be 'public', implying no authenticated or paywalled targets, but gives no URL format or normalization guidance.

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 and resource ('Convert a public web page to clean Markdown') and enumerates the retained content (title, headings, paragraphs, lists, links, code) plus what is stripped (scripts/nav/footer). It also distinguishes itself from the closest sibling by name, page_rag, so an agent can tell the two apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'When to use' section that names the alternative (page_rag) and the reason to prefer it ('cleaner main-content Markdown plus chunks at the same price'), which effectively routes the agent away from this tool for most cases. It is slightly ambiguous whether any case remains where this tool is the right pick beyond 'legacy', which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

page_metapage-metaA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Fetch a public web page (robots.txt respected) and return title, meta description, canonical, Open Graph/Twitter tags, language, headings, link counts, HTTP status. When to use: Use page-meta for title, description, Open Graph and headings only; for full content use page-rag.

NameRequiredDescriptionDefault
urlYesabsolute http(s) URL

Output Schema

NameRequiredDescription
h1No
h2No
ogNo
urlNo
langNo
linksNo
titleNo
statusNo
sourcesNo
twitterNo
canonicalNo
final_urlNo
descriptionNo
content_typeNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds crucial operational context that annotations and schema lack, specifically the rate limit and cost structure ($0.0025 USDC and 3 free calls per day). It also mentions it respects robots.txt.

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 efficiently structured into two distinct parts: function/cost and usage guidelines. While it uses two sentences, the information density is extremely high and achieves its goals without unnecessary fluff.

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 enough for an agent to decide if this tool meets the user's needs. Given the clarity on what it fetches (metadata) and its limitations (not full content), the agent has all necessary contextual information to select 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?

Since the input schema provides 100% coverage for the single 'url' parameter, the description offers minimal semantic value beyond the schema itself. It does not provide specialized context for the URL 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 clearly defines the tool's function by stating it fetches a public web page and returns a specific set of meta-data (title, canonical, Open Graph tags, etc.). It successfully differentiates itself from the sibling tool page-rag by specifying it returns only metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a highly actionable usage guideline by contrasting its purpose with that of page-rag. The agent is explicitly instructed to use page-meta for metadata and page-rag for full content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

page_ragWeb Page to RAG ChunksA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Page RAG: Any public web page -> clean LLM-ready Markdown + RAG chunks in one call: main content via Mozilla Readability (no nav/ads/footers), absolute links, title/description/language/canonical/published+modified dates/JSON-LD types, word + token estimates, sha256 content hash for change detection, and heading-aware chunks (configurable size + overlap, each with its heading path). Plain HTTP, robots.txt respected, Markdown/plain text passed through. Flags pages that likely need JavaScript. When to use: Use page-rag to feed a web page into an LLM or a vector store. Use page-meta or page-check for SEO/meta tags and HTTP status only. page-markdown is the older, simpler converter; page-rag is recommended.

NameRequiredDescriptionDefault
urlYespublic http(s) page URL
overlapNochunk overlap in tokens (default 80)
main_onlyNomain content only via Readability (default true)
max_charsNomax Markdown characters (default 100000, max 400000)
chunk_tokensNochunk size in tokens (0 = no chunks, default 800, max 4000)

Output Schema

NameRequiredDescription
okNo
urlNo
titleNo
chunksNo
statusNo
fetchMsNo
sourcesNo
finalUrlNo
languageNo
markdownNo
siteNameNo
canonicalNo
extractorNo
fetchedAtNo
truncatedNo
wordCountNo
modifiedAtNo
contentHashNo
contentTypeNo
descriptionNo
jsonLdTypesNo
publishedAtNo
tokenEstimateNo
truncatedReasonNo
likelyNeedsJavaScriptNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld annotations: discloses rate limits and pricing mechanics (3 free calls/day across all tools, $0.0025 USDC via x402 or card, paid in-band via params._meta), that fetching is plain HTTP with robots.txt respected, that Markdown/plain text pass through, and that JS-dependent pages are flagged. These are operational facts an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph with no filler sentences — pricing, capability, when-to-use, and sibling routing all earn their place. It is slightly front-loaded with the billing preamble before the purpose statement, which delays the core 'what it does' by one clause, but nothing is redundant.

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?

Covers extraction behavior, chunking, limits and payment for a five-parameter open-world fetch tool, and an output schema exists so return structure need not be re-explained. Minor gap: no mention of failure modes (non-HTML responses, blocked/paywalled pages) or what a JS-flagged result looks like, which matters for an open-world scraper.

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; the description earns an increment by explaining what the chunk parameters actually produce ('heading-aware chunks (configurable size + overlap, each with its heading path)') and what main_only toggles ('main content via Mozilla Readability (no nav/ads/footers)'). It does not restate defaults or the 0 = no chunks sentinel, which remain schema-only.

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 concrete verb+resource: 'Any public web page -> clean LLM-ready Markdown + RAG chunks in one call', and enumerates the extracted artefacts (main content, metadata, hash, heading-aware chunks). It explicitly differentiates itself from page-markdown, page-meta and page-check, so an agent can pick it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' block names the use case (feed a page into an LLM or vector store) and the alternatives with their conditions ('page-meta or page-check for SEO/meta tags and HTTP status only'; 'page-markdown is the older, simpler converter; page-rag is recommended'). Routing is fully determined by the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qr_codeQR code generatorA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). QR code generator: text, URL, payment URI (e.g. ethereum:/USDC request) or Wi-Fi credentials (ssid + password) to a QR code as SVG (inline + data URI) and/or GIF data URI. Error correction L/M/Q/H, scale, quiet-zone margin, colours, optional 0/1 module matrix. UTF-8 byte mode, computed locally, nothing stored. When to use: Use qr-code to turn a URL, payment request, Wi-Fi login or any text into a scannable QR image (SVG or GIF data URI).

NameRequiredDescriptionDefault
eccNoerror correction, default M
authNoWi-Fi security, default WPA when a password is given
darkNohex colour, default 000000 (svg only)
ssidNoWi-Fi network name (instead of text) -> WIFI: QR
textNocontent to encode, up to 2,000 characters
lightNohex colour, default ffffff (svg only)
scaleNopixels per module, 1-40, default 8
formatNodefault svg
marginNoquiet zone in modules, 0-20, default 4
matrixNotrue adds rows of 0/1
passwordNoWi-Fi password (with ssid)

Output Schema

NameRequiredDescription
eccNo
svgNo
kindNo
moreNo
noteNo
textNo
bytesNo
scaleNo
marginNo
matrixNo
libraryNo
modulesNo
size_pxNo
versionNo
gif_data_uriNo
svg_data_uriNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly/openWorld; the description adds substantially more: a 3-calls-per-day free quota, the exact paid fallback ($0.0015 USDC via x402 or card credits) and where payment is passed (params._meta['x402/payment']). It also discloses that encoding is computed locally with nothing stored and that output is UTF-8 byte mode, which an agent needs to reason about cost and side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Billing/quota is front-loaded before the capability statement, which is the right priority order, and the whole thing is three dense sentences. The closing 'When to use' sentence partly re-lists the content types already enumerated, a small redundancy that keeps it from a 5.

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 the description needn't explain return values, yet it still sketches the SVG/GIF shapes usefully, and it covers cost, privacy and every parameter family. The one gap is that all 11 params are optional and nothing says what happens if no content parameter is supplied.

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, but the description adds genuine semantics the schema doesn't: that ssid+password map to a WIFI: QR, that payment URIs like ethereum:/USDC are a supported content type, and how ecc/scale/margin/colours/matrix shape the rendered image. It doesn't tie every parameter to an effect, so not a 5.

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 ('QR code generator') and enumerates the input classes it accepts (text, URL, payment URI, Wi-Fi credentials) plus the output forms (SVG inline/data URI, GIF data URI). No sibling tool overlaps with QR generation, so the agent can select it unambiguously from the 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?

An explicit 'When to use:' sentence names the trigger scenarios — URL, payment request, Wi-Fi login, any text — which is clear positive guidance. It stops short of exclusions or named alternatives, but none of the siblings are plausible substitutes, so the missing exclusion costs little.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robots_checkrobots-checkA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.003 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Check whether a URL may be crawled per the site's robots.txt for a given user-agent. Returns allowed, matched rule, crawl-delay, sitemaps. When to use: Use robots-check before crawling a URL with your own user-agent.

NameRequiredDescriptionDefault
uaNouser-agent token, default *
urlYesabsolute http(s) URL

Output Schema

NameRequiredDescription
urlNo
allowedNo
sourcesNo
sitemapsNo
user_agentNo
crawl_delayNo
matched_ruleNo
robots_statusNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and openWorld, but the description adds material context they do not: a free-tier quota of 3 calls per day across all tools, and the paid fallback via x402 or card credits injected through params._meta. The return value fields are also disclosed, though rate-limit behavior after payment and failure modes for unreachable robots.txt are not.

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?

Every sentence carries useful information: pricing, capability, return values, and usage condition. The commercial preamble is front-loaded ahead of the purpose, which slightly delays the core statement but is justified for cost-aware agents.

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 annotations covering safety and an output schema covering return shape, the remaining gaps are small. An agent knows the cost model, the inputs, the outputs, and when to invoke it; only edge-case behavior such as missing or unreachable robots.txt is left unstated.

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 both url and ua documented in the schema, so the schema carries the parameter burden. The description only restates the user-agent concept ('for a given user-agent') without adding format or default guidance.

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?

Names a specific verb and resource: checks whether a URL may be crawled per robots.txt for a given user-agent, and lists the return fields (allowed, matched rule, crawl-delay, sitemaps). It is clearly distinct from URL-fetching siblings like page_check or link_check, though it does not say so explicitly.

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?

Explicitly states when to use it: before crawling a URL with your own user-agent. It gives clear context but no exclusions or named alternatives for cases where robots enforcement is not needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rug_checkrug-checkA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Rug pull check: one ERC-20 token, pass/warn/fail on four groups - honeypot signals (GoPlus simulation, buy/sell tax, cannot sell all), owner rights (mint, blacklist, pause, hidden owner, proxy, renounce, source verified), liquidity (USD, pairs, pair age, LP locked/burned) and holder concentration - plus an overall rugRisk. Base or Ethereum. Data: GoPlus Security public API (contract flags, taxes, honeypot simulation, holders, LP lock) + DexScreener (pairs, liquidity, volume). Every flag names its source field. Not financial advice. When to use: Use rug-check for new or unknown tokens (memecoins, snipes): honeypot, owner rights, liquidity and holder checks with pass/warn/fail.

NameRequiredDescriptionDefault
chainNodefault base
addressYestoken contract address 0x...

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, yet the description adds substantial behavior the agent could not otherwise know: 3 free calls per day across all tools, $0.005 USDC via x402 or card credits paid in-band at params._meta["x402/payment"], and the exact upstream sources (GoPlus and DexScreener) with a note that every flag names its source field. These are real operational constraints that affect whether and how the agent should call it, with no contradiction of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and mostly front-loaded, but the lead sentence is billing mechanics rather than the tool's purpose, and the trailing 'Not financial advice' plus repeated 'pass/warn/fail' phrasing are mild filler. Nearly every sentence still carries load.

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 only two parameters resolved by the schema and an output schema already present, the description covers everything else an agent needs: cost and payment path, supported chains, evaluation groups, and data provenance. Nothing material 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% with a chain enum and a documented address format, so the baseline is 3. The description reinforces 'one ERC-20 token' and 'Base or Ethereum', which usefully bounds cardinality, but adds no format, default, or validation detail 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?

States a specific operation ('Rug pull check') on a specific resource ('one ERC-20 token') with a defined output contract: pass/warn/fail across honeypot signals, owner rights, liquidity and holder concentration, plus an overall rugRisk. The scope and the four evaluation groups separate it from generic siblings such as token_info or token_price without needing to open the schema.

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?

Explicitly supplies a 'When to use' clause: new or unknown tokens, memecoins and snipes. That is a clear positive trigger, but it never names an alternative (e.g. token_risk or token_score) or states when this check is unnecessary, so the routing guidance is one-sided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

site_contactsCompany Website ContactsA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Site contacts: Company website -> one clean contact row: role emails only (info@, sales@ ...) with MX check, phones validated and normalized to E.164 with confidence, schema.org address/name, Danish CVR and EU VAT ids, official social profiles. Respects robots.txt, plain HTTP, home + up to 5 contact pages. Personal emails omitted (GDPR). When to use: Use site-contacts when you need the business contact details of a company from its own website. Use page-rag when you need the text of a page, and email-verify to check one email address you already have.

NameRequiredDescriptionDefault
urlYescompany website
countryNodefault phone country, ISO-2, default DK

Output Schema

NameRequiredDescription
urlNo
nameNo
noteNo
domainNo
emailsNo
phonesNo
addressNo
orgTypeNo
sourcesNo
languageNo
fetchedAtNo
legalNameNo
descriptionNo
pagesFetchedNo
robotsBlockedNo
socialProfilesNo
vatOrCompanyIdsNo
emailsDroppedNoMxNo
phonesOmittedAsLikelyPersonalNo
personalOrUnknownEmailsOmittedNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond readOnlyHint/openWorldHint: discloses crawl scope (home + up to 5 contact pages), robots.txt compliance, plain HTTP only, GDPR exclusion of personal emails, and the full pricing/payment mechanics including the in-band x402 param path. Rate/cost limits and destructive-free read behavior are all explicit.

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?

Dense but every clause carries information; no filler. Minor deduction because the pricing/payment sentence occupies the front-load position ahead of the actual purpose, delaying the one-line answer to 'what does this do'.

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 two-param crawl-and-extract tool with an output schema, everything an agent needs is present: input expectation, crawl limits, compliance constraints, output shape summary, and cost. Return-value detail is correctly delegated to the output 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?

Schema already documents both params at 100% coverage, so the bar is met by default. The description adds real meaning about the 'url' input — it is treated as a site root that gets crawled (home + up to 5 contact pages) rather than a single page — and that phones tie to a default country during E.164 normalization.

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 concrete transformation: 'Company website -> one clean contact row' with enumerated output fields (role emails with MX check, E.164 phones, schema.org address, CVR/VAT, socials). An agent can instantly separate it from page_rag (page text) and email_verify (single address).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' section plus two named alternatives with the exact condition that selects each: page_rag for page text, email_verify for checking an address you already hold. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sitemapSitemap to URL listA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.003 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Sitemap to URL list: give a sitemap URL or just a domain (sitemaps found via robots.txt, then /sitemap.xml). Follows sitemap indexes (newest first, up to 10 child sitemaps), reads .xml, .xml.gz and text sitemaps, and returns every URL with lastmod, changefreq, priority, hreflang alternates, image and news counts. Filter by contains= and since= (lastmod). When to use: Use sitemap to list all pages a site declares (with lastmod) before crawling or to find recently changed pages. Use robots-check for crawl permission of one URL.

NameRequiredDescriptionDefault
urlYessitemap URL, or a site / domain to discover its sitemaps via robots.txt
limitNomax URLs returned, 1-5000, default 1000
sinceNoonly URLs with lastmod at/after this ISO date
containsNoonly URLs containing this text, e.g. /blog/
max_sitemapsNositemap files to read per call, 1-10, default 5

Output Schema

NameRequiredDescription
moreNo
noteNo
siteNo
urlsNo
filtersNo
returnedNo
found_viaNo
truncatedNo
urls_seenNo
fetched_atNo
newest_lastmodNo
sitemaps_fetchedNo
sitemaps_not_fetchedNo
sitemaps_not_fetched_sampleNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld, and the description adds material context beyond them: the free-quota and paid fallback mechanics (3 calls/day, then $0.003 USDC via x402 or card credits in-band), index-following order (newest first, up to 10 child sitemaps), format support (.xml, .xml.gz, text), and the shape of the returned records. Nothing here contradicts the read-only annotation.

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?

Dense but every sentence carries information, and the usage block is clearly delimited. The only structural weakness is that the billing/quota sentence leads, pushing the tool's actual purpose behind commercial boilerplate that an agent needs less than the "what it does" clause.

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?

Five parameters, all schema-documented, an output schema that covers return values, and annotations covering safety. The description fills the remaining gaps an agent needs — cost model, index traversal limits, supported sitemap formats, and filtering options.

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. The description still adds meaning by explaining the dual behavior of the required url parameter (domain triggers robots.txt discovery then /sitemap.xml) and by naming contains= and since= as the filtering levers, though limit and max_sitemaps are left entirely to 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?

"Sitemap to URL list" is a concrete verb+resource pair, and the description immediately specifies accepted inputs (sitemap URL or bare domain), discovery behavior (robots.txt then /sitemap.xml), supported formats, and returned fields. It is clearly distinguishable from robots_check and page_check in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit "When to use" block names the two motivating scenarios (enumerate all declared pages with lastmod before crawling, find recently changed pages) and routes the agent to robots-check for the different question of crawl permission. That is when/when-not plus a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ssl_certSSL certificate checkA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). TLS/SSL certificate check from public Certificate Transparency logs (Cert Spotter, crt.sh fallback): currently valid certificates for a hostname, newest first, with issuer, validity dates, days left, SAN names and an expiring-within-14-days flag. For expiry monitoring and phishing/subdomain vetting. When to use: Use ssl-cert to check TLS certificate expiry and issuer for a hostname from public CT logs.

NameRequiredDescriptionDefault
domainYesexact hostname, e.g. www.example.com

Output Schema

NameRequiredDescription
noteNo
certsNo
domainNo
newestNo
issuersNo
sourcesNo
checked_atNo
valid_countNo
has_valid_certNo
newest_days_leftNo
expiring_within_14dNo

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, but the description adds substantial context they don't cover: a rate limit and pricing model (3 free calls/day across all tools, then $0.005 USDC via x402 or card credits, paid in-band via params._meta), the upstream providers and their fallback order, and the fact that only currently valid certificates are returned, newest first. These are exactly the operational facts an agent needs before calling a paid external tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose sentence is dense and informative, but the definition is bloated by pricing boilerplate placed before the purpose, and the closing "When to use" sentence repeats what the earlier sentences already said. Content is present but not efficiently ordered or de-duplicated.

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 read-only annotations set, the description covers the remaining essentials: data source, filtering semantics (valid certs only), ordering, and cost model. Minor gaps remain around behavior when no certificates exist or when the fallback provider also fails, but nothing critical to correct invocation 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 coverage is 100% and the single parameter already documents "exact hostname, e.g. www.example.com." The description only echoes "for a hostname" and does not clarify edge cases (bare domain vs. www, wildcard handling, IP addresses), so the schema does the real work here.

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 and resource (TLS/SSL certificate check for a hostname) plus the data source (Certificate Transparency logs via Cert Spotter, crt.sh fallback) and exactly what is returned: issuer, validity dates, days left, SAN names, expiring flag. This clearly separates it from siblings like dns, domain_whois, or page_check without opening their schemas.

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?

It gives a use context ("expiry monitoring and phishing/subdomain vetting") and a "When to use" line, but that line merely restates the purpose rather than contrasting with alternatives such as dns, domain_whois, or link_check. No exclusions or negative conditions are offered, so usage is implied rather than disambiguated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarizesummarizeA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Text summarizer: summarize up to 12,000 characters into 3-6 bullet points or one paragraph (max_words 20-250, optional output language). Small LLM (Workers AI Llama 3.1 8B), facts only from the text. GET query or POST JSON body. When to use: Use summarize to condense long text into bullets or a paragraph.

NameRequiredDescriptionDefault
langNooptional output language
textYestext to summarize (max 12,000 chars)
styleNo
max_wordsNo20-250, default 80

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/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 substantial context beyond them: quota (3 free calls/day shared across tools), price ($0.004 USDC) and the in-band payment mechanism via params._meta["x402/payment"], the underlying model (Llama 3.1 8B), a facts-only grounding constraint, and both GET and POST invocation forms.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single dense paragraph with no filler, but it leads with billing rather than the tool's function, and the closing 'When to use' sentence is pure restatement of the earlier definition. Some of the length is duplication rather than information.

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?

An output schema exists, so return values need not be explained, and the description covers the remaining gaps an agent needs: cost, payment path, transport, input limits and the model's grounding behavior. Error or insufficient-payment behavior is the only notable omission.

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 75%, so most parameters are already documented, but the description adds real meaning: the 3-6 bullet output shape that the 'style' enum does not describe anywhere, and the text length ceiling restated as a hard limit. The lang and max_words details largely duplicate 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?

States a specific verb and resource (text summarizer) plus concrete scope: up to 12,000 characters in, 3-6 bullets or one paragraph out, 20-250 words. No sibling tool (classify, entity_extract, translate) does condensing, so the agent can distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' sentence only restates the purpose ('condense long text into bullets or a paragraph') rather than giving conditions or naming alternatives. The useful routing context it does supply is commercial: 3 free calls per day across all tools, then paid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_comparetoken-compareA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0075 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token risk comparison: two ERC-20 tokens side by side: which has the lower risk score and why, flags only one of them has, taxes, holders, liquidity, volume, plus a short AI verdict from the computed facts (rule-based fallback). Base or Ethereum. Data: GoPlus Security public API (contract flags, taxes, honeypot simulation, holders, LP lock) + DexScreener (pairs, liquidity, volume). Every flag names its source field. Not financial advice. When to use: Use token-compare when an agent must choose between two tokens.

NameRequiredDescriptionDefault
aYesfirst token address
bYessecond token address
chainNodefault base

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld; the description adds substantial context beyond them: pricing (3 free calls/day, $0.0075 USDC via x402 or card, paid in-band through params._meta), the data sources (GoPlus flag/honeypot simulation + DexScreener liquidity/volume), and the rule-based AI-verdict fallback. It also notes every flag names its source field, which tells the agent how to trust the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single block is dense and useful, but it front-loads the pricing/payment mechanics ahead of the actual purpose, forcing the agent to read past billing details before learning what the tool does. Every fact earns its place, yet the ordering and the run-on compression hurt scanability.

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 the description needn't restate return shapes, and it still covers data provenance, the AI-verdict/rule-based fallback, payment requirements, and chain scope. An agent has everything needed to decide and call this 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% and all three parameters are described in the schema, including the chain enum. The description only echoes the supported chains ('Base or Ethereum') and adds no address format or semantics beyond what the schema already provides, so the baseline 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 states a specific verb and resource ('Token risk comparison: two ERC-20 tokens side by side: which has the lower risk score and why') and enumerates the compared dimensions. An agent can distinguish this comparative tool from single-token siblings like token_risk or rug_check from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger: 'When to use: Use token-compare when an agent must choose between two tokens.' That is a clear selection condition, but it names no alternatives (e.g., token_risk for a single token) and gives no when-not-to-use case, 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.

token_infoERC-20 token info + USD priceA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). ERC-20 token lookup on Ethereum, Base, Arbitrum, Optimism or Polygon: name, symbol, decimals, total supply (raw + human), live USD price with confidence (DefiLlama) and FDV, for up to 10 token addresses in one call. Use it before showing, pricing or converting a token amount. When to use: Use token-info before displaying, converting or pricing an ERC-20 amount: decimals, symbol, supply and USD price for up to 10 tokens in one call.

NameRequiredDescriptionDefault
chainNodefault base
priceNofalse skips the USD price
addressYesERC-20 contract address, or comma list of up to 10

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnlyHint/openWorldHint annotations by disclosing the commercial model: 3 free calls per day across all tools, then $0.0025 USDC via x402 or card credits, paid in-band through params._meta["x402/payment"]. It also names the price data source (DefiLlama), notes a confidence value accompanies the price, and caps batching at 10 addresses — all behavior an agent needs before deciding to call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The cost/payment disclosure is valuable and front-loaded, but the usage guidance is literally stated twice in near-identical form ("Use it before showing, pricing or converting a token amount" then "When to use: Use token-info before displaying, converting or pricing an ERC-20 amount"). That redundancy plus the title-repeating phrasing wastes roughly a fifth of the text.

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, the description needn't explain return values, and it covers cost, rate limits, chains, batching and data provenance — enough to call correctly. The only soft spot is that "confidence" on the USD price is named but never characterized, leaving the agent unsure how to interpret a low-confidence quote.

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 both enums are documented inline, so the schema already carries the parameter burden. The description reinforces the 10-address comma-list limit and the five supported chains, but adds no syntax, defaulting or format detail beyond what the schema states — baseline 3.

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?

States a specific verb and resource: ERC-20 token lookup returning name, symbol, decimals, total supply, USD price and FDV across five named chains, batchable to 10 addresses. The returned field set implicitly separates it from price-only siblings like token_price or token_prices, but it never names those siblings explicitly, so an agent must infer the boundary.

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?

"Use it before showing, pricing or converting a token amount" gives a clear triggering context, and the supported chains narrow scope usefully. However, it offers no exclusions or alternative routing, despite siblings token_price, token_prices, token_compare and token_risk that an agent could plausibly confuse with this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_portfoliotoken-portfolioA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.01 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token portfolio risk scan: up to 20 ERC-20 tokens in one call, each with risk level, score, top flags, liquidity and price, plus a summary (count per risk level, average score, riskiest tokens). Base or Ethereum. Data: GoPlus Security public API (contract flags, taxes, honeypot simulation, holders, LP lock) + DexScreener (pairs, liquidity, volume). Every flag names its source field. Not financial advice. When to use: Use token-portfolio to risk-rank up to 20 holdings of a wallet in one call.

NameRequiredDescriptionDefault
chainNodefault base
addressesYescomma-separated token addresses, max 20

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld annotations: discloses the quota (3 free calls/day shared across tools), the paid path ($0.01 USDC via x402 or card credits) and exactly where payment goes (params._meta["x402/payment"]), plus the data provenance (GoPlus + DexScreener) and the 'every flag names its source field' guarantee. These are precisely the operational facts an agent needs before calling.

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?

Dense and largely front-loaded, with the usage clause at the back working as a clear call to action. The pricing/quota sentence leads the description, which is defensible for a paid tool but delays the actual purpose statement slightly, making the opening feel like a billing notice rather than a tool summary.

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 an output schema, yet the description still previews the return shape (per-token risk level/score/flags/liquidity/price plus per-risk-level counts and averages). Combined with cost, payment mechanics, data sources, and chain scope, nothing material is missing for a low-complexity, two-parameter tool.

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 baseline is 3, but the description adds real meaning: 'addresses' are token contract addresses (not the wallet itself), comma-separated, max 20, ERC-20 only, and the chain is constrained to Base or Ethereum. The max-20 constraint and token-vs-wallet disambiguation are the kind of clarifications that prevent misuse.

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 and resource ('Token portfolio risk scan'), the scale limit (up to 20 ERC-20 tokens in one call), and the exact per-token payload (risk level, score, flags, liquidity, price). An agent can immediately tell this is the bulk risk-ranking tool rather than a single-token lookup.

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 an explicit 'When to use' clause: risk-rank up to 20 holdings of a wallet in one call. However, it never names the obvious alternatives (token_risk, token_score, rug_check, token_compare), so the agent must infer that those are the single-token or comparison variants from their names alone.

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

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token price: current USD price of one token by contract address from DEX data, plus market cap, FDV, 24h volume, liquidity and 24h change. Base, Ethereum, Solana, Arbitrum, BSC, Polygon, Optimism, Avalanche. Data: GeckoTerminal public DEX API (prices, pools, OHLCV across 8 chains). Not financial advice. When to use: Use token-price for one token, token-prices for up to 30 at once, token-price-history for candles, token-pools for liquidity.

NameRequiredDescriptionDefault
addressYestoken contract address (0x... or Solana mint)
networkNodefault base

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld annotations by disclosing the rate limit (3 free calls/day across all tools), the paid path ($0.0025 USDC via x402 or card credits) and exactly where payment goes (params._meta['x402/payment']), plus the upstream data source (GeckoTerminal). It stops short of describing response shape or failure behavior, but the output schema covers returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pricing/payment boilerplate occupies the opening and pushes the actual tool purpose to the second sentence, hurting front-loading. The eight-chain list is also enumerated twice ('Base, Ethereum, Solana...' and 'across 8 chains'), and 'Not financial advice' is filler for an agent.

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 an output schema exists, the description need not explain returns; it still supplies chain coverage, the data source, cost model, and sibling routing. An agent has everything needed to decide and call 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% and both parameters are documented in the schema, including the enum and the 'default base' note, so baseline is 3. The description's only added context is a prose restatement of the eight supported chains, which duplicates the enum rather than extending it.

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 and resource ('current USD price of one token by contract address from DEX data') plus the extra fields returned (market cap, FDV, volume, liquidity, 24h change). It explicitly differentiates itself from token-prices, token-price-history, and token-pools, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' sentence names all three alternatives and the exact selection condition (one token vs up to 30 vs candles vs liquidity). Nothing about tool choice is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_price_historytoken-price-historyA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token price history: OHLCV candles (daily up to 180, hourly up to 168) for one token from its most liquid DEX pool, with period change, high and low. Data: GeckoTerminal public DEX API (prices, pools, OHLCV across 8 chains). Not financial advice. When to use: Use token-price-history for daily or hourly OHLCV candles of a DEX token.

NameRequiredDescriptionDefault
limitNonumber of candles, default 30 (day) / 48 (hour)
addressYestoken contract address
networkNodefault base
intervalNodefault day

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond readOnlyHint/openWorldHint by disclosing the paid-access model (3 free calls/day across all tools, then $0.005 USDC via x402 or card credits paid in-band through params._meta['x402/payment']), the upstream data source (GeckoTerminal public DEX API, 8 chains), and a 'not financial advice' caveat. It omits pagination/truncation behavior and what happens if no liquid pool exists, which are the remaining behavioral gaps.

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?

Every sentence carries information and the pricing disclosure is compact given its complexity. The structure is slightly off, though: the long billing/x402 sentence occupies the prime front-loaded position, pushing the actual purpose ('Token price history: OHLCV candles…') into the second slot.

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 annotations covering the safety profile, an output schema covering return values, and 100% param coverage, the remaining burden is payment mechanics and data provenance, both of which are addressed. Only minor gaps remain (behavior when no pool exists, candle truncation), which are low-impact 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?

Schema coverage is already 100%, so the baseline is 3, and the description adds real value by stating the hard ceilings the schema omits: limit maxes of 180 (day) and 168 (hour), versus the schema's defaults of 30/48. It also clarifies that candles come from the token's most liquid pool, explaining how address/network are resolved.

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?

States a specific resource (OHLCV candles) with concrete scope: daily up to 180 or hourly up to 168 candles for a single DEX token, sourced from its most liquid pool, including period change/high/low. That implicitly separates it from spot-price siblings like token_price/token_prices, but the description never names those siblings to make the split explicit.

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 'When to use' sentence exists but largely restates the purpose line ('daily or hourly OHLCV candles of a DEX token') rather than giving conditions or exclusions. No alternative sibling is named, and there is no guidance on when to prefer token_price/token_prices or token_compare instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_pricestoken-pricesA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token prices (multi): USD prices for up to 30 tokens on one network in one call, with market cap, 24h volume and 24h change per token. Data: GeckoTerminal public DEX API (prices, pools, OHLCV across 8 chains). Not financial advice. When to use: Use token-prices to price a whole portfolio or watchlist in one call.

NameRequiredDescriptionDefault
networkNodefault base
addressesYescomma-separated token addresses, max 30

Output Schema

NameRequiredDescription

No output parameters

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 description need not repeat safety. It adds material behavioral context absent from annotations: free-call quota, paid x402/card billing, in-band payment parameter, GeckoTerminal data source, and a not-financial-advice caveat. It does not discuss errors, rate limits after payment, or freshness beyond the 24h metrics, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loads billing, then purpose, data source, and usage. The billing details consume substantial space, but they are behaviorally important. It is mostly efficient, with only mild redundancy between the title and the repeated 'token prices' 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?

An output schema exists, so the description need not explain return values, and it still mentions market cap, 24h volume, and 24h change. With annotations covering safety and the schema covering parameters and outputs, the definition is nearly complete. A 5 would require more on failure modes or payment failure behavior.

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 both parameters and the network enum. The description reinforces that one call covers up to 30 addresses on one network and lists per-token outputs, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate when the schema carries parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

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: 'USD prices for up to 30 tokens on one network in one call.' The multi-token, single-network scope clearly distinguishes it from the single-token sibling token_price and from token_portfolio, so an agent can choose correctly 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?

It gives an explicit usage context: 'Use token-prices to price a whole portfolio or watchlist in one call.' That is strong positive guidance, but it does not name the single-token sibling as the alternative when only one address is needed, so the when-not boundary is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_riskERC-20 Token Risk CheckA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token risk: Deterministic ERC-20 risk check on Base or Ethereum from public on-chain data only: privileged functions in bytecode (mint, blacklist, pause, fees, limits, trading switch), upgradeable proxy + implementation, owner and renounce status, Uniswap v2/v3 + Aerodrome liquidity in USD (Chainlink), owner/pool/burned supply share. Every flag has evidence; lists what was NOT checked (no honeypot simulation). Not financial advice. When to use: Use token-risk before an agent buys, lists or recommends an ERC-20 token. It reads public chain data only: it does not simulate buys/sells (no honeypot test) and does not return price history or market data.

NameRequiredDescriptionDefault
chainNo
addressYestoken contract address 0x...

Output Schema

NameRequiredDescription
rpcNo
nameNo
chainNo
flagsNo
ownerNo
proxyNo
methodNo
symbolNo
addressNo
sourcesNo
verdictNo
decimalsNo
liquidityNo
riskScoreNo
disclaimerNo
isContractNo
notCheckedNo
totalSupplyNo
scoreMeaningNo
checkedAtBlockNo
ownerRenouncedNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint/openWorldHint; the description adds the rate limit (3 free calls/day across all tools), the exact price and payment mechanism including the in-band params._meta["x402/payment"] field, the evidence-per-flag guarantee, and an explicit list of what was NOT checked. That is substantial context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but every clause carries information: scope, evidence guarantee, exclusions, pricing. Minor weakness is that the billing/payment sentence leads the description ahead of the tool's actual purpose, and the nested parentheticals make the opening harder to scan.

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 shape need not be described, and the description covers everything else a caller needs: supported chains, data sources, evidence policy, known limitations, cost, and payment channel. Nothing material is missing 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?

Schema coverage is 50%: address is documented, chain is an undescribed enum. The description compensates by naming the supported chains ("Base or Ethereum") and by documenting the undocumented payment parameter, which is otherwise invisible to 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?

States a specific verb and resource ("Deterministic ERC-20 risk check on Base or Ethereum") and then enumerates exactly what is examined: privileged bytecode functions, proxy/implementation, owner and renounce status, liquidity in USD, supply shares. This is far more specific than sibling names like rug_check or token_score and lets an agent distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit "When to use: before an agent buys, lists or recommends an ERC-20 token" plus clear exclusions (no honeypot simulation, no price history or market data). It does not, however, route the agent to or away from the obvious siblings (rug_check, token_score, token_info, token_compare), so the boundary with near-duplicate tools is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_scoretoken-scoreA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Token risk score: one ERC-20 token scored (0-100) with a short AI verdict (Workers AI rephrasing only the computed facts; rule-based fallback), risk level, evidence flags, taxes, holder concentration, owner status and DEX liquidity. Base or Ethereum. Data: GoPlus Security public API (contract flags, taxes, honeypot simulation, holders, LP lock) + DexScreener (pairs, liquidity, volume). Every flag names its source field. Not financial advice. When to use: Use token-score for a quick risk score + AI verdict on one token before a trade. Use rug-check for a pass/fail breakdown, token-compare to pick between two, token-portfolio for up to 20 tokens, token-risk for our own on-chain bytecode analysis.

NameRequiredDescriptionDefault
chainNodefault base
addressYestoken contract address 0x...

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/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 quota (3 free calls/day across all tools), pricing ($0.005 USDC via x402 or card credits), the in-band payment parameter, data provenance (GoPlus + DexScreener), the LLM-rephrasing/rule-based fallback behavior, and a 'not financial advice' disclaimer. This is substantial disclosure beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph split into pricing, output, sources, and usage-routing segments, so it is front-loaded and scannable. It is longer than most definitions and the pricing preamble precedes the purpose statement, costing a little immediacy.

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 2-parameter read-only tool with an output schema and annotations, nothing an agent needs is missing: scope, chains, data sources, payment handling, fallback behavior, and sibling routing are all present. Return-value details are correctly left to the output 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?

Schema coverage is 100% so the baseline is 3, but the description adds meaning not in the schema: the chain parameter is framed as 'Base or Ethereum' and the out-of-schema payment channel params._meta["x402/payment"] is documented. The address parameter itself gains nothing 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?

States a specific verb and resource: scores one ERC-20 token 0-100 with an AI verdict, risk level, flags, taxes, holders, owner status and liquidity. It also names the supported chains and distinguishes itself from four sibling tools by name, so an agent can pick it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' section plus a full routing table to alternatives: rug-check for pass/fail, token-compare for two tokens, token-portfolio for up to 20, token-risk for bytecode analysis. Both the selection condition and the exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translatetranslateA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Text translation: translate up to 3,000 characters into one of 28 languages (en, da, de, fr, es, it, pt, nl, sv, no, fi, pl, ru, uk, tr, ar, hi, ja, ko, zh, id, vi, th, cs, ro, el, he, hu), source auto-detected. Small LLM (Workers AI). GET query or POST JSON body. When to use: Use translate for short texts into 28 languages.

NameRequiredDescriptionDefault
toYestarget language code, e.g. de
fromNooptional source language code
textYestext to translate (max 3,000 chars)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/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 substantial context beyond them: 3 free calls/day across all tools, then $0.005 USDC via x402 or card credits with the payment passed in-band at params._meta["x402/payment"]. It also discloses the underlying model (small LLM on Workers AI), that source language is auto-detected, and that both GET query and POST JSON are accepted.

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?

Compact and information-dense with no filler sentences, but the billing/rate-limit boilerplate is front-loaded ahead of what the tool actually does, delaying the agent's ability to identify the operation. The purpose should lead, with pricing after.

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 values need no explanation, and the description covers everything else an agent needs: input size limit, valid target codes, auto-detection, transport options, cost model, and payment mechanism. Nothing material is missing 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value: it enumerates all 28 valid target language codes even though the schema declares no enums, and it clarifies that source is auto-detected, explaining why 'from' is optional. The 3,000-character cap is repeated from the schema but reinforced as a hard constraint.

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 and resource ('Text translation: translate up to 3,000 characters') with hard limits and the exact language set. It is immediately distinguishable from siblings like classify, summarize, and entity_extract, which are different NLP operations.

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 'When to use' sentence only restates the purpose ('Use translate for short texts into 28 languages') without naming a condition that selects it over alternatives or an exclusion. The word 'short' plus the 3,000-char cap implies the boundary, but no alternative (e.g., page_rag or summarize for long documents) is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tx_explainTransaction Explainer + Payment CheckA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Base or Ethereum transaction hash -> plain JSON: status (success/failed/pending), block time, confirmations, from/to, ETH value, gas used and fee (incl. Base L1 fee), method selector + name, and every ERC-20/ERC-721 Transfer in the receipt with token symbol, decimals and human amounts. Optional payment check: expect_to + expect_token (USDC, ETH, symbol or address) + expect_amount confirms a payment arrived (e.g. verify a USDC or x402 settlement). Public RPC data only. When to use: Use tx-explain to understand one transaction or to verify a payment (USDC, ETH, any ERC-20) before delivering goods. Use wallet-profile for an address, contract-abi for a contract interface and token-risk to judge a token.

NameRequiredDescriptionDefault
hashYestransaction hash 0x + 64 hex
chainNodefault base
expect_toNooptional: recipient address the payment should reach
expect_tokenNooptional: ETH, USDC, USDT, EURC, DAI, WETH ... or a token address (default USDC)
expect_amountNooptional: minimum amount in human units, e.g. 0.001

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/openWorld, but the description adds substantial non-obvious behavior: a hard quota (3 free calls/day across all tools), a price ($0.0025 USDC), two payment rails, the exact in-band payment parameter (params._meta["x402/payment"]), and the data provenance ('Public RPC data only'). Those are exactly the facts an agent needs before invoking a metered call, and none are inferable from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but every sentence carries information; nothing is padding. The only structural flaw is ordering: the description leads with pricing/quota rather than what the tool does, so the purpose arrives after the billing block instead of being front-loaded.

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?

Complete for a metered read tool: input semantics, both chains, output contents, payment assertion behavior, and cost/quota are all covered, and an output schema exists so return shapes need not be spelled out further.

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; the description earns an extra point by explaining that expect_to + expect_token + expect_amount work together as a payment assertion ('confirms a payment arrived'), which is more than the schema's per-field notes convey. It also clarifies that expect_token accepts a symbol or an address and defaults to USDC, reinforcing the enum-ish behavior for a free-text field.

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 and resource ('Base or Ethereum transaction hash -> plain JSON') and enumerates exactly what the output contains: status, block time, confirmations, from/to, value, gas/fee incl. Base L1 fee, method selector and all ERC-20/ERC-721 transfers. It also names the sibling tools it is not (wallet-profile, contract-abi, token-risk), so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit 'When to use' clause gives the primary case (understand one transaction) and the concrete decision case (verify a USDC/ETH/ERC-20 payment before delivering goods). It then names three alternatives with their distinct scopes, which is exactly the when/when-not/alternatives pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tx_statusTransaction status pollerA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0015 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Transaction status for polling: up to 10 tx hashes in one call, searched across Ethereum, Base, Arbitrum, Optimism and Polygon (or one chain): pending / success / failed / not_found, block, confirmations, finalized flag, from/to, gas used, fee in native coin, explorer link. When to use: Use tx-status to poll whether transactions are pending, confirmed, failed or finalized (up to 10 hashes, chain auto-detected). Use tx-explain for a full decode of one tx.

NameRequiredDescriptionDefault
hashYestx hash (0x + 64 hex), or comma list of up to 10
chainNoauto (default) searches all 5 chains

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint; the description goes well beyond them by disclosing the quota (3 free calls/day across all tools), the paid fallback ($0.0015 USDC via x402 or card credits), and the in-band payment parameter location params._meta["x402/payment"]. That is meaningful operational context an agent cannot get from annotations. Slightly short of 5 because it does not say what happens when the quota is exhausted or payment is missing.

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 dense with no filler and the usage/alternative clause is clearly front-loaded after the scope statement. It loses a point because it re-enumerates the full return field list (block, confirmations, finalized flag, from/to, gas used, fee, explorer link) even though an output schema already exists, and it leads with pricing ahead of the core purpose.

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 a two-parameter batch-read tool with full schema coverage, an output schema, and read-only annotations, the description supplies everything needed to call it correctly: batch limit, chain coverage and auto-detection, status semantics, cost model, and the sibling alternative. Nothing an agent needs 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 coverage is 100%, so both parameters (hash, chain) are already fully documented including the 10-hash comma list and the enum for chain. The description mentions 'up to 10 tx hashes' and 'chain auto-detected,' but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Transaction status for polling') with concrete scope: up to 10 hashes, five named chains, and the exact status values returned. It explicitly names the sibling it is not ('Use tx-explain for a full decode of one tx'), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' clause covering polling for pending/confirmed/failed/finalized transactions, plus the disambiguating alternative 'Use tx-explain for a full decode of one tx.' The selection condition between the two is stated outright rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_profileWallet / Address ProfileA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Base or Ethereum address -> profile in one call: EOA, contract or EIP-7702-delegated EOA; ETH balance; nonce (tx count); balances of major tokens (USDC, USDT, EURC, DAI, WETH, cbBTC/WBTC, USDbC); for contracts: bytecode size, EIP-1967/ZeppelinOS proxy implementation, beacon, owner(), ERC-20 name/symbol/decimals/supply and Sourcify verification. Public RPC data only. When to use: Use wallet-profile before sending funds to or trusting an address (is it a contract? does it hold USDC?). Use tx-explain for one transaction and contract-abi for the full interface of a contract.

NameRequiredDescriptionDefault
chainNodefault base
addressYeswallet or contract address 0x...

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/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 pricing model, free-call quota, in-band x402 payment parameter, and that data comes from public RPCs only. These are material behavioral 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and mostly front-loaded, but it begins with billing terms before stating the core purpose. The token list and contract-internals enumeration are long, though they do help an agent understand the profile'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?

With annotations, full schema descriptions, enums, and an output schema present, the description supplies the remaining context an agent needs: payment behavior, data source, intended use, and sibling alternatives. Nothing critical for correct invocation appears to be 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 coverage is 100%, so the input schema already documents both address and chain, including the base default and enum values. The description adds some context by noting Base or Ethereum addresses and that the address may be a wallet or contract, but it does not substantially extend 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 states a specific transformation: 'Base or Ethereum address -> profile in one call,' and enumerates what the profile contains for EOAs, contracts, and EIP-7702-delegated EOAs. It explicitly distinguishes this tool from siblings like tx_explain and contract_abi.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use case: 'Use wallet-profile before sending funds to or trusting an address (is it a contract? does it hold USDC?).' It also names alternatives and when to use them: tx-explain for one transaction and contract-abi for a contract's full interface.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_factwiki-factA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.005 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Wikipedia fact lookup: best-matching Wikipedia article for a query with summary, description, URL and structured Wikidata facts (type, country, headquarters, founded, founders, CEO, website, industry, employees, ticker, population, coordinates). Any Wikipedia language. When to use: Use wiki-fact to ground an entity: summary plus structured facts (founded, HQ, CEO, website).

NameRequiredDescriptionDefault
qYesentity or topic
langNoWikipedia language code, default en

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld annotations by disclosing the commercial model: 3 free calls per day across all tools, then $0.005 USDC via x402 or card credits, with payment passed in-band at params._meta["x402/payment"]. That is operationally critical context an agent cannot get from any structured field, though it says nothing about failure behavior when payment is absent or about result caching.

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 payload and the pricing model are stated up front, and the fact list is compact rather than prose-heavy. There is mild redundancy in restating 'wiki-fact' by name in the 'When to use' sentence, but nothing is wasted at length.

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, the description need not explain return values, and it is complete on inputs, scope (any language), and cost. The only remaining gap is what the agent should expect when the free quota is exhausted or payment is not attached.

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 'q' and 'lang'. The description only adds the loose hint 'Any Wikipedia language', which marginally reinforces the lang parameter but adds no format or constraint detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Wikipedia fact lookup') and enumerates the returned payload (summary, description, URL, Wikidata facts). It is distinguishable from generic grounding siblings like company_profile or entity_extract by its Wikipedia/Wikidata basis, though it never names those alternatives explicitly.

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 'When to use' line gives a concrete trigger: grounding an entity with summary plus structured facts such as founded, HQ, CEO, website. It provides clear positive context but no exclusions or named alternatives for when a different grounding tool is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

x402_servicesx402-servicesA
Read-only
Inspect

3 free MCP calls per day (all tools together), then $0.0025 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). x402 services search: Search ~8,900 live x402 pay-per-call APIs (verified/unverified by nohumans.directory probes, CC BY 4.0): name, endpoint URL, category, price, chains, status, score. Filters: q, category, chain, max_price, status=verified, limit<=100.

NameRequiredDescriptionDefault
qNo
chainNo
limitNo
statusNo
categoryNo
max_priceNo

Output Schema

NameRequiredDescription
totalNo
resultsNo
sourcesNo

TDQS

A3.9/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 quota (3 free MCP calls per day across all tools), pricing ($0.0025 USDC), the exact in-band payment channel (params._meta["x402/payment"]), data provenance (nohumans.directory probes, CC BY 4.0) and the verified/unverified distinction. These are exactly the operational facts an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with no filler, and the filter enumeration is tight. The lead position is spent on billing/quota rather than the tool's purpose, which delays the core statement slightly.

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, return fields needn't be explained, yet the description still lists them; payment, quota and data source are all covered. The main gap is the absence of any disambiguation from the dump_x402_services sibling in a 70-tool namespace.

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 0%, so the description must carry parameter meaning; it names all six filters and adds one real constraint (limit<=100, status=verified). It still leaves q syntax, max_price units/currency, and valid category/chain values undefined, so compensation is partial.

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 gives a specific verb+resource ('Search ~8,900 live x402 pay-per-call APIs') and enumerates the returned fields, so the tool's function is unmistakable. It does not, however, distinguish itself from the sibling dump_x402_services or apis_search, which an agent could easily confuse with a search tool.

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?

Usage is only implied through the filter list; there is no explicit statement of when to pick this over dump_x402_services or apis_search. The one useful constraint, limit<=100, hints at pagination behavior but no alternative routing is offered.

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. 6 tool updates
    • Addedpack_ai_tool_discovery
    • Addedpack_b2b_lead_finder
    • Addedpack_domain_health
    • Addedpack_payment_verification
    • Addedpack_wallet_safety
    • Addedpack_website_to_rag
  2. 18 tool updates
    • Addedclassify
    • Addedcompany_batch
    • Addedcompany_contacts
    • Addedcompany_profile
    • Addedcompany_techstack
    • Addedemail_verify_batch
    • Addedemail_verify_quick
    • Addedentity_extract
    • Addedgeocode_batch
    • Addednews_entity
    • Addednews_monitor
    • Addednews_sentiment
    • Addedsummarize
    • Addedtoken_price
    • Addedtoken_price_history
    • Addedtoken_prices
    • Addedtranslate
    • Addedwiki_fact
  3. 4 tool updates
    • Addedrug_check
    • Addedtoken_compare
    • Addedtoken_portfolio
    • Addedtoken_score
  4. 38 tool updates
    • Changedagent_tools1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedapis_search1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedbase_gas1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedcountry1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedcurrency1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddataset_full1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddns1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-25; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddomain_whois1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-25; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddump_agent_tools1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddump_llm_pricing1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddump_mcp_servers1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddump_world_reference1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changeddump_x402_services1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedemail_verify1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedens1 field changed
      • removedOutput schema / properties
        Removed value: -{
        -  "address": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "at": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "chain": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "method": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "mode": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "name": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "names": {
        -    "items": {
        -      "properties": {
        -        "chain": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "name": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "verified": {
        -          "type": [
        -            "boolean",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "node": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "primary_name": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "resolver": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "sources": {
        -    "items": {
        -      "properties": {
        -        "name": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "url": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "text": {
        -    "properties": {
        -      "avatar": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "com.discord": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "com.github": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "com.twitter": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "description": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "email": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "org.telegram": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "url": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -}
    • Changedextract_json1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Addedfeed_json
    • Changedfree_tiers1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedgeocode1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-25; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedholidays1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedinvoice_json1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedlink_check1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedllm_cost1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedllm_pricing1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedmcp_servers1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedpage_check1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedpage_markdown1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedpage_meta1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedpage_rag1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Addedqr_code
    • Changedrobots_check1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedsite_contacts1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Addedsitemap
    • Changedssl_cert1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-25; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedtoken_info1 field changed
      • removedOutput schema / properties
        Removed value: -{
        -  "at": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "chain": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "count": {
        -    "type": [
        -      "number",
        -      "null"
        -    ]
        -  },
        -  "method": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "rpc": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "sources": {
        -    "items": {
        -      "properties": {
        -        "name": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "url": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "tokens": {
        -    "items": {
        -      "properties": {
        -        "address": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "chain": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "decimals": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "fdv_usd": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "is_contract": {
        -          "type": [
        -            "boolean",
        -            "null"
        -          ]
        -        },
        -        "is_erc20": {
        -          "type": [
        -            "boolean",
        -            "null"
        -          ]
        -        },
        -        "name": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "price_confidence": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "price_time": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "price_usd": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "symbol": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "total_supply": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "total_supply_raw": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -}
    • Changedtoken_risk1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
    • Changedtx_status1 field changed
      • removedOutput schema / properties
        Removed value: -{
        -  "at": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "count": {
        -    "type": [
        -      "number",
        -      "null"
        -    ]
        -  },
        -  "heads": {
        -    "properties": {
        -      "arbitrum": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "base": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "ethereum": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "optimism": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "polygon": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "method": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "sources": {
        -    "items": {
        -      "properties": {
        -        "name": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "url": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "summary": {
        -    "properties": {
        -      "success": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "txs": {
        -    "items": {
        -      "properties": {
        -        "block": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "chain": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "chainId": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "confirmations": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "contract_created": {},
        -        "effective_gas_price_gwei": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "explorer": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "fee_native": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "finalized": {
        -          "type": [
        -            "boolean",
        -            "null"
        -          ]
        -        },
        -        "from": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "gas_used": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "hash": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "logs": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "native_coin": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "nonce": {
        -          "type": [
        -            "number",
        -            "null"
        -          ]
        -        },
        -        "status": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "to": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "value_native": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -}
    • Changedx402_services1 field changed
      • changedOutput schema / description
        Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
  5. 4 tool updates
    • Addeddns
    • Addeddomain_whois
    • Addedgeocode
    • Addedssl_cert
  6. 3 tool updates
    • Addedens
    • Addedtoken_info
    • Addedtx_status
  7. 4 tool updates
    • Addedcontract_abi
    • Addedgas
    • Addedtx_explain
    • Addedwallet_profile
  8. 1 tool update
    • Changedinvoice_json2 fields changed
      • changedInput schema / properties / file_base64 / description
        Previous value: -"POST JSON only: base64 file content"New value: +"base64 of a PDF/PNG/JPEG/WebP file (max 8 MB); set mime_type too"
      • changedInput schema / properties / mime_type / description
        Previous value: -"POST JSON only: application/pdf, image/png, image/jpeg, image/webp or text/plain"New value: +"with file_base64: application/pdf, image/png, image/jpeg, image/webp or text/plain"
  9. 28 tool updates
    • Changedagent_tools1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "chains": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "price_usd": {},
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {},
        +          "type": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedapis_search1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "alive": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "auth": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "checked_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "cors": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "free_tier_details": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "http_status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "https": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kind": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "returned": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "source": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbase_gas1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "block": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "eth_transfer_eth": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gas_price_gwei": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "gas_price_wei": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "network": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rpc": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "usdc_transfer_eth": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "usdc_transfer_gas_estimate": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcountry1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "area_km2": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "capital": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "continent": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "currency_code": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "currency_name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "has_holiday_data": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "iso2": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "iso3": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "iso_numeric": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "languages": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "neighbours": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "phone_prefix": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "population": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "timezones": {
        +      "items": {
        +        "properties": {
        +          "local_time_now": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "timezone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "utc_offset_now": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tld": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcurrency1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "amount": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "base": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "from": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rate": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rate_date": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "result": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "supported": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddataset_full1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rows": {
        +      "items": {
        +        "properties": {
        +          "alive": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "auth": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "checked_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "cors": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "free_tier_details": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "http_status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "https": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kind": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddump_agent_tools1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rows": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "chains": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "price_usd": {},
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {},
        +          "type": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddump_llm_pricing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "free_tiers": {
        +      "items": {
        +        "properties": {
        +          "alive": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "auth": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "checked_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "cors": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "free_tier_details": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "http_status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "https": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kind": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "generated_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "models": {
        +      "items": {
        +        "properties": {
        +          "cached_input_per_m_usd": {
        +            "type": [
        +              "null",
        +              "number"
        +            ]
        +          },
        +          "context_length": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "free": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "function_calling": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "input_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "max_input_tokens": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "max_output_tokens": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "output_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "provider": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "reasoning": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "rpm": {},
        +          "tpm": {},
        +          "vision": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddump_mcp_servers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rows": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "languages": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "official": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "os": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "scope": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddump_world_reference1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "countries": {
        +      "items": {
        +        "properties": {
        +          "area_km2": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "capital": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "continent": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "currency_code": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "currency_name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "iso2": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "iso3": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "iso_numeric": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "languages": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "neighbours": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "phone_prefix": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "population": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "timezones": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "tld": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "holidays": {
        +      "additionalProperties": {
        +        "properties": {
        +          "2026": {
        +            "items": {
        +              "type": [
        +                "array",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "2027": {
        +            "items": {
        +              "type": [
        +                "array",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "object"
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "timezones": {
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "dst_offset_jul": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "gmt_offset_jan": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "raw_offset": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "timezone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddump_x402_services1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rows": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "chains": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "currency": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "endpoint_url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "has_sample": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "last_probed": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "score": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedemail_verify1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "disposable": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "domain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "email": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "free_mail": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "has_a": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "has_mx": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "local_part_length": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "mx": {
        +      "items": {
        +        "properties": {
        +          "host": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "preference": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "null_mx": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "reasons": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "role": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "syntax_ok": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "verdict": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedextract_json1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "data": {
        +      "properties": {
        +        "company": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "due": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "order_id": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "total": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "limits": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "method": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "missing": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "model": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "not_verbatim_in_text": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfree_tiers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "alive": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "auth": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "checked_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "cors": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "free_tier_details": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "http_status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "https": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "kind": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "returned": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "source": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedholidays1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "country": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "holidays": {
        +      "items": {
        +        "properties": {
        +          "date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "year": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinvoice_json1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "billed_usd": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "checks": {
        +      "properties": {
        +        "due_date_not_before_issue_date": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "line_items_sum_equals_subtotal_or_total": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "subtotal_plus_vat_equals_total": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "vat_breakdown_sum_equals_vat_total": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "confidence_method": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "properties": {
        +        "confidence": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "customer": {
        +      "properties": {
        +        "address": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "name": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "vat_id": {
        +          "properties": {
        +            "confidence": {},
        +            "quote": {},
        +            "value": {}
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "document_type": {
        +      "properties": {
        +        "confidence": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "due_date": {
        +      "properties": {
        +        "confidence": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "input": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "invoice_number": {
        +      "properties": {
        +        "confidence": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "issue_date": {
        +      "properties": {
        +        "confidence": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "value": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "limits": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "line_items": {
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "confidence": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "quantity": {},
        +          "quote": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "unit_price": {},
        +          "vat_rate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "missing": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "model": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "order_number": {
        +      "properties": {
        +        "confidence": {},
        +        "quote": {},
        +        "value": {}
        +      },
        +      "type": "object"
        +    },
        +    "overall_confidence": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "pages": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "payment_terms": {
        +      "properties": {
        +        "confidence": {},
        +        "quote": {},
        +        "value": {}
        +      },
        +      "type": "object"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "text_chars": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "totals": {
        +      "properties": {
        +        "amount_due": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "subtotal": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "total": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "vat_total": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "vat_breakdown": {
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "base": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "confidence": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "quote": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "rate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "vendor": {
        +      "properties": {
        +        "address": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "email": {
        +          "properties": {
        +            "confidence": {},
        +            "quote": {},
        +            "value": {}
        +          },
        +          "type": "object"
        +        },
        +        "iban": {
        +          "properties": {
        +            "confidence": {},
        +            "quote": {},
        +            "value": {}
        +          },
        +          "type": "object"
        +        },
        +        "name": {
        +          "properties": {
        +            "confidence": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "quote": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "value": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "phone": {
        +          "properties": {
        +            "confidence": {},
        +            "quote": {},
        +            "value": {}
        +          },
        +          "type": "object"
        +        },
        +        "vat_id": {
        +          "properties": {
        +            "confidence": {},
        +            "quote": {},
        +            "value": {}
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlink_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "broken": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "checked": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "content_type": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "final_url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ms": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "ok": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "redirected": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedllm_cost1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "calls": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "estimate_method": {},
        +    "input_tokens": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "input_tokens_estimated": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "output_tokens": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "context_length": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cost_per_call_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fits_context": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "input_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "model": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "output_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "requested": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "total_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedllm_pricing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "free_tiers": {
        +      "items": {
        +        "properties": {
        +          "checked_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "free_tier": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "provider_model": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "models": {
        +      "items": {
        +        "properties": {
        +          "cached_input_per_m_usd": {},
        +          "context_length": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "free": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "function_calling": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "input_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "max_input_tokens": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "max_output_tokens": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "output_per_m_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "provider": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "reasoning": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "rpm": {
        +            "type": [
        +              "null",
        +              "number"
        +            ]
        +          },
        +          "tpm": {},
        +          "vision": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "returned": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmcp_servers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "categories": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "languages": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "official": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "os": {
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "scope": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "returned": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpage_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "agent_friendliness": {
        +      "properties": {
        +        "ai_bots": {
        +          "properties": {
        +            "Amazonbot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Applebot-Extended": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Bytespider": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "CCBot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ChatGPT-User": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Claude-User": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ClaudeBot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "GPTBot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Google-Extended": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "OAI-SearchBot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "PerplexityBot": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "anthropic-ai": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "cohere-ai": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "meta-externalagent": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "llms_full_txt": {
        +          "properties": {
        +            "present": {
        +              "type": [
        +                "boolean",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "llms_txt": {
        +          "properties": {
        +            "present": {
        +              "type": [
        +                "boolean",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "reasons": {
        +          "items": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "score": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "sitemap": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "sitemaps_in_robots": {
        +          "type": [
        +            "array",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "bytes_read": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "canonical": {},
        +    "content_type": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description": {},
        +    "fetched": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "final_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "h1": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "h2_count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "json_ld_types": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "lang": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latency_ms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "og": {
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "redirected": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "robots_meta": {},
        +    "robots_txt_status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "word_count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpage_markdown1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "chars": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "final_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "markdown": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "truncated": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpage_meta1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "canonical": {},
        +    "content_type": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description": {},
        +    "final_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "h1": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "h2": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "lang": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "links": {
        +      "properties": {
        +        "external": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "internal": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "og": {
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "twitter": {
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpage_rag1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "canonical": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "chunks": {
        +      "items": {
        +        "properties": {
        +          "headingPath": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "index": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "text": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "tokenEstimate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "contentHash": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "contentType": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description": {},
        +    "extractor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "fetchMs": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "fetchedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "finalUrl": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "jsonLdTypes": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "language": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "likelyNeedsJavaScript": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "markdown": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "modifiedAt": {},
        +    "ok": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "publishedAt": {},
        +    "siteName": {},
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "tokenEstimate": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "truncated": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "truncatedReason": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "wordCount": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrobots_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "allowed": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "crawl_delay": {},
        +    "matched_rule": {},
        +    "robots_status": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sitemaps": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "user_agent": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsite_contacts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "address": {},
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "domain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "emails": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "emailsDroppedNoMx": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "fetchedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "language": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "legalName": {},
        +    "name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "orgType": {},
        +    "pagesFetched": {
        +      "items": {
        +        "properties": {
        +          "status": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "personalOrUnknownEmailsOmitted": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "phones": {
        +      "items": {
        +        "properties": {
        +          "confidence": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "country": {},
        +          "e164": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "foundOn": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "national": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "sources": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "type": {},
        +          "validated": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "phonesOmittedAsLikelyPersonal": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "robotsBlocked": {
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "socialProfiles": {
        +      "properties": {
        +        "facebook": {
        +          "items": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "instagram": {
        +          "items": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "linkedin": {
        +          "items": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": "array"
        +        },
        +        "youtube": {
        +          "items": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "vatOrCompanyIds": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtoken_risk1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "address": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "chain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "checkedAtBlock": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "decimals": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "flags": {
        +      "items": {
        +        "properties": {
        +          "evidence": {
        +            "properties": {
        +              "owner": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "selectors": {
        +                "type": [
        +                  "array",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "key": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "label": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "severity": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "isContract": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "liquidity": {
        +      "properties": {
        +        "approxLiquidityUsd": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "burnedPct": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "ethUsd": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "ownerSharePct": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "poolSharePct": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "pools": {
        +          "items": {
        +            "properties": {
        +              "dex": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "pool": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "quote": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "quoteBalance": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "quoteSideUsd": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "tokenBalance": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "method": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "notChecked": {
        +      "items": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "owner": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "ownerRenounced": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "proxy": {},
        +    "riskScore": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rpc": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scoreMeaning": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "totalSupply": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "verdict": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedx402_services1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
        +  "properties": {
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "chains": {
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "currency": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "endpoint_url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "has_sample": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "last_probed": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "score": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "snapshot": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
  10. 3 tool updates
    • Addedpage_rag
    • Addedsite_contacts
    • Addedtoken_risk
  11. 1 tool update
    • Addedinvoice_json
  12. 28 tool updates
    • First observedagent_tools
    • First observedapi_directory_sample
    • First observedapis_search
    • First observedbase_gas
    • First observedcountry
    • First observedcurrency
    • First observeddataset_full
    • First observeddump_agent_tools
    • First observeddump_llm_pricing
    • First observeddump_mcp_servers
    • First observeddump_world_reference
    • First observeddump_x402_services
    • First observedemail_verify
    • First observedextract_json
    • First observedfree_tiers
    • First observedholidays
    • First observedlink_check
    • First observedlist_endpoints
    • First observedllm_cost
    • First observedllm_pricing
    • First observedllm_pricing_sample
    • First observedmcp_servers
    • First observedmcp_servers_sample
    • First observedpage_check
    • First observedpage_markdown
    • First observedpage_meta
    • First observedrobots_check
    • First observedx402_services

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    23 pay-per-call web analysis APIs as MCP tools. Security audits, tech stack detection, email verification, SEO analysis, SSL checks, performance monitoring. Supports x402 and Stripe MPP payments.
    96 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing 10 pay-per-call APIs for web scraping, DNS, email validation, and French business data, with autonomous micropayments via the x402 protocol (USDC on Base).
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources