Skip to main content
Glama

ToolSnap MCP

One connection, superpowers for your agent: deterministic microtools. Pay per call with USDC on Base — no account needed — or buy fiat credits with a card if you'd rather not touch crypto.

toolsnap-mcp MCP server MCP x402 Base Cloudflare Workers

Live endpoint: https://mcp.toolsnap.app/mcp
Server card: /.well-known/mcp.json
Pricing: /.well-known/pricing.json
Docs: toolsnap.app/agents


Why

ToolSnap is built around three ideas:

1. Deterministic — no LLM in the loop. Most agent stacks now "clean" web pages by paying a second model to summarize them. ToolSnap's extraction is pure parsing: exact quotes, stable output, zero added inference cost, reproducible runs. What you extract is what the page said.

2. Context-efficient by design. The biggest cost for AI agents isn't generation — it's context. Loading a raw webpage can burn 50,000+ tokens on HTML boilerplate; connecting a fat MCP server can burn as many in tool definitions. ToolSnap moves the work server-side and keeps discovery compact: tools/list shows a small curated core, and the full catalog of 47 microtools (web, PDFs, CSV/JSON, sitemaps, RSS, images, media generation…) sits one free tool_catalog() call away, executed via use_tool.

Benchmark (11 real pages, June 2026):

Raw HTML

Extracted

Saving

Median tokens

53,820

2,001

98.1%

Cost @ Sonnet ($3/M)

$0.162

$0.006

$0.156/call

Break-even page size

26 KB

fetch_extract is free — this saving costs nothing.

3. No account required (crypto path). Free tools work the second you connect. Paid tools settle per call with USDC on Base via x402 — an agent with a wallet can pay cold: no signup, no subscription, no key management. Rather not touch crypto? Buy fiat credits with a card and get an API key instead — same discounted per-call price, no wallet needed.


Related MCP server: Local SEO Data

Connect

Any agent, one line

Hand your agent this prompt and it can do the rest on its own:

Set up https://mcp.toolsnap.app/SKILL.md — connect the MCP server it describes and save the skill for future sessions.

SKILL.md is a self-contained skill file (connect config, tool discovery, cost guardrails), generated live from the tool registry so it is never stale.

Claude Desktop

{
  "mcpServers": {
    "toolsnap": {
      "url": "https://mcp.toolsnap.app/mcp",
      "transport": "streamable-http"
    }
  }
}

Free tools work immediately with the URL connection above. Paid tools need an x402 payment client — a wallet alone is not enough, because most MCP clients can't satisfy a 402 Payment Required on their own. Use the pay-proxy below.

Claude Code

claude mcp add --transport http toolsnap https://mcp.toolsnap.app/mcp

Or install the Claude Code plugin (MCP connection + the toolsnap skill, bundled):

/plugin marketplace add ToolSnap-app/toolsnap-claude-plugin
/plugin install toolsnap

Paid tools — connect through the pay-proxy

scripts/pay-proxy.mjs is a local stdio MCP server that wraps the remote endpoint, reads your wallet, and signs + retries automatically when the server asks for payment. The private key never leaves your host; only signatures are sent.

{
  "mcpServers": {
    "toolsnap": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/to/toolsnap-mcp/scripts/pay-proxy.mjs"]
    }
  }
}

No wallet yet? Call the wallet_setup tool — it generates a wallet you control, helps your human fund it with USDC on Base, and wires this proxy. Key resolution order: TOOLSNAP_WALLET_KEY~/.toolsnap/wallet.key → macOS Keychain (toolsnap-agent-wallet/default).

Useful env: TOOLSNAP_MAX_PRICE_USDC (per-call spend cap, default 0.10), TOOLSNAP_PREPAID=1 + TOOLSNAP_AUTO_DEPOSIT_USDC (use the cheaper prepaid balance).

Paid tools — no wallet, pay with a card

Buy credits at mcp.toolsnap.app/checkout (handled by Polar, our Merchant of Record). You'll get an API key in a one-time pop-up — connect with it directly, no proxy needed:

{
  "mcpServers": {
    "toolsnap": {
      "url": "https://mcp.toolsnap.app/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Clients that can't send custom headers (some claude.ai connectors) can embed the key in the URL instead: https://mcp.toolsnap.app/mcp/sk_live_... (the key may then appear in that client's request logs — prefer the header when your client supports it).

Direct MCP call

curl -X POST https://mcp.toolsnap.app/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Tools

41 tools total. tools/list shows a curated core (~19); discover everything else with the free tool_catalog tool and run it with use_tool(name, args).

Paid (x402) — real per-call COGS only

Tool

Description

Price

screenshot_url

Capture a page → public image URL.

$0.04 USDC

keyword_research

Google Ads volume/CPC/competition via DataForSEO.

$0.04 USDC

remove_background

Remove an image's background → transparent PNG URL.

$0.03 USDC

No first-call-free: these three tools have real per-call cost, so every call settles from the start. Pay-per-call is $0.03–$0.04 USDC on Base using x402 v2 (EIP-3009 transferWithAuthorization); prepaid (deposit once, debit off-chain, crypto or card) is cheaper per call.

Free (always)

Flagship: fetch_extract (URL → clean text, median 98.1% fewer tokens than raw HTML) and fetch_html (URL → clean structured HTML). Plus a wide utility catalog:

Tool

Description

pricing

Machine-readable pricing menu. Call this first.

tool_catalog

Discover the full tool catalog (families → detail).

use_tool

Execute any tool not in your tools/list.

memory_snippet

Get the ToolSnap habit block for your harness's persistent memory.

task_recipes

Ready-to-run multi-tool workflows for whole tasks.

uuid_generate

1–100 random UUID v4 values

hash_text

SHA-256 / SHA-1 / SHA-512 (hex)

base64_encode / base64_decode

Base64 encode/decode

url_encode / url_decode

Percent-encode/decode

json_format

Parse + pretty-print or minify JSON

timestamp_convert

Unix ↔ ISO 8601 (auto-detects direction)

text_stats

Chars, words, lines, sentences

Call tool_catalog() for the complete, current list with schemas and prices.


Payment (x402)

When an agent calls a paid tool (e.g. screenshot_url) without payment, the server returns:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 402,
    "message": "Payment required",
    "data": {
      "x402Version": 2,
      "accepts": [{
        "scheme": "exact",
        "network": "eip155:8453",
        "amount": "40000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
      }]
    }
  }
}

An x402-enabled client reads accepts[0], signs an EIP-3009 TransferWithAuthorization, and retries with _meta["x402/payment"] set. See x402 spec.


Run locally

npm install
cp .dev.vars.example .dev.vars  # fill in wallet secrets
npm run dev
# Worker at http://localhost:8787

Type-check

npm run typecheck

Deploy

npm run deploy

Stack

  • Runtime: Cloudflare Workers (edge, 0 ms cold start)

  • Protocol: MCP streamable-http (JSON-RPC 2.0)

  • Payment: x402 v2 · EIP-3009 on Base mainnet · USDC

  • Verification: off-chain EIP-712 signature recovery (viem)

  • Settlement: on-chain transferWithAuthorization via relayer wallet

  • Anti-replay: Cloudflare KV nonce store (7-day TTL)

  • First-call-free: mechanism exists in code (KV key first_free:{address}) for future flat-rate tools; all current paid tools have real COGS and are excluded, so every call settles


Contributing

PRs welcome for new free tools in src/tools/. Follow the pattern in src/tools/text-stats.ts and add the tool to src/tools/index.ts.

For paid tools or changes to the x402 payment logic, open an issue first.

Do not commit wallet private keys, .dev.vars, or any secrets.


toolsnap-mcp MCP server


License

MIT

Available Tools

33 tools
account_balanceAInspect

Check the prepaid USDC balance for an address. Free. Returns remaining balance, the discounted prepaid per-call price, and how many paid calls it covers. Deposit once with account_deposit to pay a discounted per-call rate with no 402 round-trip and no gas per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe 0x EVM address whose prepaid balance to look up (the address that funded the deposit).

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool is free, non-destructive (checking a balance), and what it returns (balance, discounted price, number of calls). It doesn't cover edge cases like empty balance but is otherwise transparent.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the main purpose, and each sentence adds value (purpose, cost/benefit, return details). No wasted words.

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 simple one-parameter read tool with no output schema, the description covers purpose, parameters, return values, and integration with the sibling tool. It is complete for effective selection and 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% for the single parameter 'address', with a clear description from the schema. The tool description adds no additional meaning beyond the schema, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly states the action 'Check the prepaid USDC balance for an address', specifying the resource and scope. It distinguishes itself from the sibling tool 'account_deposit' by focusing on checking balances versus depositing.

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

Usage Guidelines4/5

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

The description provides clear context: it's free, avoids 402 errors and gas costs, and mentions depositing via 'account_deposit' first. It implies when to use (after deposit) but lacks explicit exclusions or alternative usage scenarios.

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

account_depositAInspect

Open or top up a prepaid balance by depositing USDC on Base via x402 (one on-chain settlement). After depositing, paid tools are debited off-chain at the discounted prepaid price with no per-call 402 and no per-call gas, until the balance runs out. Non-refundable credits. Minimum deposit $0.50. Call with the signed x402 PaymentPayload in _meta["x402/payment"] for the amount you want to deposit (>= minimum); the full deposited amount is credited to the paying address.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

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

Discloses behavioral traits: one on-chain settlement, non-refundable credits, off-chain debiting after deposit, no per-call 402/gas. Also mentions minimum deposit. Very detailed given no 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?

Description is dense but all information is relevant. Front-loaded with main action. Slightly long but efficient.

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?

Lacks description of return value or output format. No output schema provided. Describes usage well but omits post-call response details.

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

Parameters4/5

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

Input schema has zero parameters; description adds context by explaining how to pass payment via meta. Baseline for 0 params is 4, and description compensates appropriately.

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

Purpose5/5

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

Clearly states the tool opens or tops up a prepaid balance by depositing USDC on Base via x402. Distinguishes from sibling account_balance which likely reads balance.

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

Usage Guidelines4/5

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

Provides clear context on when to use: to deposit USDC. Specifies minimum deposit and how to call with signed PaymentPayload. Does not explicitly state when not to use, but implications from siblings are clear.

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

base64_decodeAInspect

Decode a Base64 string back to UTF-8 text. Handles non-ASCII characters correctly. Returns the decoded UTF-8 string, or an error if the input is not valid Base64. Has no side effects. Use to recover the original text from a Base64-encoded value. Do NOT use to decode binary data — output is always interpreted as UTF-8 text.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe Base64-encoded string to decode.

TDQS

A5/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavior: 'Has no side effects', error handling ('Returns ... or an error if the input is not valid Base64'), encoding assumption, and return type. This is comprehensive for the tool's simplicity.

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 concise at 4 sentences, with the core purpose first, followed by important details and a warning. Every sentence adds necessary information without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (1 param, no output schema), the description is complete. It covers purpose, parameters, behavior, error handling, and limitations. No additional information is needed for correct invocation.

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 coverage is 100% with a clear description for the single parameter. The description adds value by noting that non-ASCII characters are handled correctly, which is not indicated in 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 explicitly states 'Decode a Base64 string back to UTF-8 text', clearly indicating the verb (decode) and resource (Base64 string to UTF-8 text). It distinguishes from the sibling base64_encode by focusing on the reverse operation.

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 description gives explicit when-to-use: 'Use to recover the original text from a Base64-encoded value.' and when-not-to-use: 'Do NOT use to decode binary data — output is always interpreted as UTF-8 text.' This provides clear guidance on appropriate contexts.

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

base64_encodeAInspect

Encode a UTF-8 text string to Base64. Handles non-ASCII characters correctly. Returns the Base64-encoded string. Has no side effects. Use when you need to embed binary or unicode data in JSON, URLs, or HTTP headers. Do NOT use to encode binary files — this tool accepts UTF-8 text only.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe UTF-8 text to encode as Base64.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, but description discloses no side effects, handles non-ASCII correctly, and only accepts UTF-8 text. Fully transparent for a simple encoding tool.

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

Conciseness5/5

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

Four sentences, all informative with no wasted words. Front-loaded with action and resource.

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 simple tool. No output schema needed as return value is described. All necessary context provided given low complexity.

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% with clear parameter description. Description adds value by clarifying non-ASCII handling and side-effect behavior, but baseline is 3 due to high schema coverage.

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

Purpose5/5

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

Clearly states 'Encode a UTF-8 text string to Base64' with specific verb and resource. Distinguishes from sibling tools like base64_decode and url_encode.

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?

Explicitly states when to use (embed binary/unicode in JSON, URLs, HTTP headers) and when not to use (binary files). Provides clear context for agent decisions.

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

count_tokensAInspect

Estimate the number of tokens a text will consume when sent to an LLM. Uses a byte-pair encoding approximation compatible with cl100k_base (GPT-4, Claude, and most modern models). Accurate to ±10% on English prose. Returns token count, character count, byte count, and a cost estimate footnote. Does NOT send text to any LLM — estimation is purely local. Has no side effects. Free. Use before sending long context to an LLM to avoid surprises. Do NOT use to count characters or words — use text_stats instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to count tokens for.
modelNoModel name hint (default "cl100k_base"). Accepted: cl100k_base, gpt-4, gpt-4o, gpt-3.5-turbo, claude, claude-3, claude-sonnet, claude-haiku, claude-opus, text-embedding-ada-002. All currently use the same cl100k_base approximation.

TDQS

A5/5.0
Behavior5/5

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

Discloses no side effects, purely local estimation, does not send to LLM, free, and accuracy range. No annotations provided, so description covers all behavioral aspects.

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?

Concise, well-structured description with essential information front-loaded. Every sentence adds value.

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 low complexity and complete schema coverage, description sufficiently covers return values and usage context. No output schema needed; description mentions returned fields.

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 coverage is 100%, but description adds meaning by explaining the model parameter's accepted values and noting they all use the same approximation. Adds value beyond 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?

Clearly states the tool estimates token count for LLM consumption, specifying the algorithm and accuracy. Distinguishes from sibling text_stats which counts characters/words.

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?

Explicitly states when to use (before sending long context) and when not to (for characters/words, use text_stats). Also clarifies no side effects and free.

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

csv_queryAInspect

Fetch a CSV from a URL (or accept raw CSV text) and query it: select columns, filter rows, sort, and limit results. Provide exactly one of url or csv — not both. Returns a JSON array of objects (default) or CSV text when format=csv. Returns an error if the URL is unreachable, returns a non-2xx status, or the content cannot be parsed as CSV. Has no side effects. Use instead of loading the full CSV into your context — send only the data you need.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNoRaw CSV text (alternative to url).
urlNoURL of the CSV file to fetch (http/https).
limitNoMaximum number of rows to return (default 500, max 5000).
filterNoRow filter expression: 'column op value'. Operators: = != > >= < <= contains startswith endswith. E.g. 'age > 30' or 'country = US'.
formatNoOutput format: 'json' (default) or 'csv'.
selectNoComma-separated column names to include (e.g. 'name,age,country'). Omit to include all columns.
sort_byNoColumn name to sort by.
sort_dirNoSort direction: 'asc' (default) or 'desc'.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: output formats (JSON or CSV), error conditions (unreachable URL, non-2xx, unparseable CSV), and states it has no side effects. This is comprehensive and clear.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: overall function, usage constraint, and output/error behavior. No unnecessary words, well-structured.

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 8 parameters with no required ones and no output schema, the description covers the main flow and error cases. It omits details like default limit and sort behavior, but these are in the schema. Overall adequate.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the mutual exclusivity of url and csv, which is not in the schema. This improves usability beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool fetches CSV from URL or raw text and queries it with select, filter, sort, and limit. It distinguishes itself from siblings by focusing on CSV querying rather than general fetching or extraction.

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

Usage Guidelines4/5

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

The description provides explicit guidance: provide exactly one of url or csv, and recommends using this tool to avoid loading full CSV into context. However, it does not explicitly mention when not to use it or name alternative tools.

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

diff_textAInspect

Compare two text strings and return a unified diff showing additions (+), deletions (-), and context lines. Returns a unified diff string, or '(no differences)' when inputs are identical. Has no side effects — does not modify either input. Free. Use for review agents, changelog generation, and patch creation. Input is capped at 5000 lines per string.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesThe "before" text (original).
bYesThe "after" text (modified).
contextNoNumber of unchanged context lines around each change (default 3, max 10).
label_aNoLabel for the "before" file header (default "a").
label_bNoLabel for the "after" file header (default "b").

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, description covers idempotency ('Has no side effects — does not modify either input'), cost ('Free'), and limits ('Input is capped at 5000 lines per string'). Adequate behavioral disclosure.

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

Conciseness5/5

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

Three sentences cover output, side effects/cost, and use cases/limits. No wasted words, key info 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?

Despite no output schema, description fully specifies return value ('unified diff string, or '(no differences)' when inputs are identical') and input constraints. For a 5-param tool with schema coverage, it is complete.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description does not add new parameter details beyond what schema provides; only implies context lines and labels via mention of 'context lines'.

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

Purpose5/5

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

Description clearly states 'Compare two text strings and return a unified diff', using a specific verb and resource. It distinguishes from sibling tools like count_tokens or hash_text by being the only diff 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?

Explicitly lists use cases: 'Use for review agents, changelog generation, and patch creation.' No exclusions mentioned, but context is clear.

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

fetch_extractAInspect

Fetch a URL and return clean text, stripped of HTML, scripts, styles, and navigation. Benchmark (11 real pages): median 98.1% token reduction (53 820 → 2 001 tokens); saves ~$0.156/call at Sonnet pricing ($3/M tokens) vs loading raw HTML. Break-even at 26 KB pages — virtually all real pages qualify. Deterministic, parallel-safe, zero-setup. Note: does NOT run JavaScript — for client-side-rendered SPAs use screenshot_url or fetch_html instead (fetch_extract detects this and returns an error WITHOUT charging). Cost: $0.02 USDC on Base. First call free per wallet address.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to fetch and extract text from
maxCharsNoMax characters to return (default 8000, max 32000)

TDQS

A4.5/5.0
Behavior5/5

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

No annotations exist, so description fully discloses behavior: no JavaScript execution, deterministic, parallel-safe, zero-setup, cost details, and benchmark efficiency. It also notes error detection without charge, ensuring the agent understands limitations.

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 relatively long but well-structured, starting with main purpose, then benchmarks, then usage notes. Each sentence adds value, though some benchmark details could be condensed. Overall effective communication.

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 no output schema and only 2 parameters, the description covers purpose, behavior, usage guidance, and cost. It could mention return format implicitly, but for a straightforward tool it is fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with good descriptions for both parameters. The description adds context about default/max for maxChars and stripping behavior, but does not add substantial new semantics beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool fetches a URL and returns clean text stripped of HTML, etc. It distinguishes from siblings like fetch_html and screenshot_url, making its purpose specific and distinct.

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?

Explicitly notes when not to use (client-side-rendered SPAs) and provides alternatives (screenshot_url, fetch_html). It also mentions error handling without charging for unsupported pages, giving clear guidance on suitability.

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

fetch_htmlAInspect

Fetch a URL and return clean HTML with structure preserved — tags, classes, ids and semantic layout kept, but scripts, styles, comments, SVG/iframe blobs and inline JS handlers removed. Unlike fetch_extract (flattens to text) or html_to_markdown (converts to Markdown), this keeps the DOM skeleton so an agent can reconstruct the page as static HTML. Ideal for site migration (e.g. WordPress → static). Cost: $0.02 USDC on Base. First call free per wallet address.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to fetch (http:// or https://).
maxCharsNoMax characters to return (default 16000, max 64000).

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses what is removed (scripts, styles, comments, SVG/iframe blobs, inline JS handlers) and what is preserved (tags, classes, IDs). Also notes cost ($0.02 USDC on Base) and first free call.

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?

Single paragraph with efficient structure: main action first, then details, comparisons, use case, and cost. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given 2 parameters and no output schema, description fully explains output (clean HTML with structure preserved, what is removed) and provides cost and use context. Complete for agent decision-making.

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 has 100% coverage for both parameters (url, maxChars). Description adds value by specifying default and max for maxChars (default 16000, max 64000), which is not in schema. Provides practical context beyond 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?

Clearly states the tool fetches a URL and returns clean HTML with structure preserved. Explicitly distinguishes from sibling tools (fetch_extract, html_to_markdown) by describing what is kept vs removed. Provides specific use case (site migration).

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 explicit comparisons with fetch_extract and html_to_markdown, telling when to use this tool instead. Mentions ideal for site migration. Does not explicitly state when not to use, but comparisons offer clear guidance.

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

fetch_metadataAInspect

Fetch a URL and extract its metadata: title, meta description, Open Graph tags (og:title, og:image, og:type…), Twitter Card tags, canonical URL, robots directive, author, keywords, JSON-LD structured data, and lang/charset. Returns a structured JSON object; missing fields are omitted. Returns an error if the URL is unreachable. Has no side effects. Much cheaper than loading the full page — ideal for link previews, SEO audits, and content classification. Do NOT use to extract page body text — use fetch_extract or html_to_markdown instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to fetch (http:// or https://).

TDQS

A4.4/5.0
Behavior4/5

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

States it has no side effects and returns an error if the URL is unreachable. However, does not detail behavior regarding redirects, timeouts, or authentication, though given the tool's simplicity, the disclosed traits are sufficient.

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 well-structured and front-loaded, listing extracted metadata clearly. It is concise but could be slightly shorter; still effective.

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 simple single-parameter tool with no output schema, the description fully covers input, output shape (structured JSON with omitted missing fields), error conditions, and usage context.

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% with a clear parameter description. The tool description adds no additional meaning beyond what the schema provides, so baseline score applies.

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

Purpose5/5

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

The description clearly states the tool fetches a URL and extracts metadata including title, meta description, Open Graph tags, etc. It explicitly distinguishes from siblings by warning not to use for body text and recommending fetch_extract or html_to_markdown 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?

Provides explicit when-to-use guidance ('ideal for link previews, SEO audits, and content classification') and when-not-to-use with alternatives ('Do NOT use to extract page body text — use fetch_extract or html_to_markdown instead').

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

fetch_structuredAInspect

Fetch a URL and extract structured data matching a JSON Schema — title, author, date, price, description, rating, image, and more. Reads JSON-LD, Open Graph, Twitter Cards, and Schema.org microdata embedded in the page; returns only the extracted JSON object. No LLM required: extraction is deterministic. Returns an empty object if the page has no matching semantic markup. Returns an error if the URL is unreachable or the schema parameter is not valid JSON. Has no side effects. Ideal for articles, products, recipes, and events with semantic markup. Do NOT use for pages without structured markup — use fetch_extract or html_to_markdown instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to fetch and extract data from.
schemaYesJSON Schema (as a JSON string) describing the fields to extract. E.g. {"type":"object","properties":{"title":{"type":"string"},"price":{"type":"number"}}}

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: no side effects, returns empty object if no matching markup, returns error if URL unreachable or schema invalid, and deterministic extraction. This is comprehensive.

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 appropriately sized; every sentence adds value. It is front-loaded with the main action, followed by details, error cases, side effects, and alternatives. No unnecessary words.

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

Completeness5/5

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

Given the complexity of URL fetching, schema-based extraction, and multiple markup formats, the description covers inputs, expected output, error handling, side effects, and alternatives. It is complete without needing an 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?

Input schema has 100% coverage. Description adds extra context: specifies schema must be a JSON string, gives an example, and clarifies the schema describes fields to extract. While the schema already describes parameters, the description adds useful guidance beyond the schema.

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

Purpose5/5

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

The description clearly states it fetches a URL and extracts structured data matching a JSON Schema. It specifies the types of data (title, author, etc.) and sources (JSON-LD, Open Graph, etc.). It also distinguishes from siblings by noting deterministic extraction and explicitly naming alternatives like fetch_extract and html_to_markdown for pages without structured markup.

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 description explicitly states when to use (pages with semantic markup) and when not to (pages without structured markup, directing to fetch_extract or html_to_markdown). It also mentions ideal use cases: articles, products, recipes, and events.

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

hash_textAInspect

Compute a cryptographic hash (SHA-256, SHA-1, or SHA-512) of any text string. Returns the hash as a lowercase hex string. Has no side effects. Use for integrity checks, content fingerprinting, or generating deterministic IDs from content. Do NOT use for password storage — use a dedicated KDF (bcrypt, argon2) instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to hash.
algorithmNoHash algorithm to use. Default "SHA-256".SHA-256

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It declares 'Has no side effects,' which is transparent. It also describes the output format. It doesn't mention rate limits or auth, but for a hash computation tool, this is sufficient.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, then return type, side effects, and usage guidance. No redundancy or 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?

For a simple hashing tool with no output schema, the description covers purpose, parameters (via schema), usage guidelines, side effects, and return format. It is fully complete.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal extra meaning. It mentions algorithms and default, but the schema already does that. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: compute a cryptographic hash (SHA-256, SHA-1, or SHA-512) of any text string and return a lowercase hex string. It is specific and distinguishable from sibling tools like base64_encode or uuid_generate, as it focuses on hashing.

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?

Explicitly states use cases (integrity checks, fingerprinting, deterministic IDs) and a critical non-use case (password storage) with an alternative (bcrypt, argon2). This provides clear guidance for when to use or avoid the tool.

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

html_to_markdownAInspect

Convert a URL or raw HTML string into clean Markdown. Strips navigation, ads, scripts, and boilerplate; preserves headings, lists, links, code blocks, and emphasis. Provide exactly one of url or html — not both. Returns the Markdown string. Returns an error if the URL is unreachable. Has no side effects. Use instead of loading raw HTML into context — saves 85–98% of tokens. Do NOT use for JavaScript-rendered SPAs — use fetch_html or screenshot_url instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to fetch and convert (http:// or https://).
htmlNoRaw HTML string to convert directly (alternative to url).
maxCharsNoMax characters of Markdown to return (default 12000, max 50000).

TDQS

A4.9/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses behavior: strips navigation, ads, etc., preserves key elements, has no side effects, returns Markdown string, and errors on unreachable URLs.

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

Conciseness5/5

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

Four focused sentences, no fluff. Front-loaded with purpose, then details in logical order. Every sentence adds value.

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?

Comprehensive for a tool with 3 params and no output schema: covers input constraints, output format, error handling, side effects, and alternative tools for different use cases.

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 covers all parameters at 100% coverage. Description adds value by specifying mutual exclusivity of url and html, and the default and max for maxChars.

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

Purpose5/5

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

The description clearly states the tool converts URLs or raw HTML to Markdown, with specific verb and resource. It also distinguishes from siblings like fetch_html and screenshot_url by noting not to use for JS-rendered SPAs.

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?

Explicitly says to provide exactly one of url or html, and gives clear guidance on when to use (saves tokens) and when not to use (JS-rendered SPAs) with alternatives provided.

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

json_formatAInspect

Parse and reformat a JSON string with a configurable indent level (0 = minified, 2 = standard pretty-print). Returns the reformatted JSON string, or an error if the input is not valid JSON. Has no side effects. Use to pretty-print, validate, or minify JSON. Do NOT use to query or transform JSON values — use json_query instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonYesThe JSON string to parse and reformat.
indentNoIndentation spaces (0–8). 0 = minified. Default 2.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description fully covers behavior: declares no side effects, describes return value (reformatted JSON or error), and implies idempotence.

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

Conciseness5/5

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

Two short sentences with no wasted words. Front-loaded with core purpose, then usage guidance.

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 no output schema, description clearly states return value and error behavior. Covers all use cases (validate, pretty-print, minify) without gaps.

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 3. Description adds extra meaning for indent parameter ('0 = minified, 2 = standard pretty-print'), which helps agent choose values.

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

Purpose5/5

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

Specifies action (parse and reformat), object (JSON string), and result (reformatted JSON). Distinguishes from sibling json_query by stating it is for pretty-print/validate/minify, not for querying.

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?

Explicitly states when to use (pretty-print, validate, minify) and when not to use (query or transform), with direct reference to alternative json_query.

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

json_queryAInspect

Fetch JSON from a URL (or accept raw JSON) and query it with a JSONPath-lite expression. Supports property access, array indexing, wildcards ([*]), recursive descent (..), and filter expressions ([?(@.price < 10)]). Provide exactly one of url or json — not both. Returns only the matching values as JSON. Returns an error if the URL is unreachable, the response is not valid JSON, or the query expression is invalid. Has no side effects. Use instead of loading large JSON payloads into your context.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL returning JSON to query (http/https).
jsonNoRaw JSON string to query (alternative to url).
limitNoMax number of results to return (default 100, max 1000).
queryYesJSONPath-lite expression. Examples: '$.users[*].name', '$..price', '$.items[?(@.stock > 0)].id', '$.store.books[0].title'

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but description discloses return format, error conditions (unreachable URL, invalid JSON, invalid query), and states no side effects. Could add timeout/rate limit info but sufficient.

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?

Single paragraph with key info front-loaded. Every sentence adds value: purpose, query language, usage rule, returns, errors, side effects, recommendation. No fluff.

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

Completeness4/5

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

Given 4 parameters, no output schema, and no annotations, description covers essentials: query language, input constraints, error behavior, and side effects. Could mention size limits but overall complete.

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 coverage is 100%, description adds significant meaning: explains mutex of url/json, details JSONPath-lite syntax with examples, and clarifies default/max limit.

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

Purpose5/5

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

Description clearly states the tool fetches/queries JSON using JSONPath-lite, with specific verb and resource. Distinguishes from siblings by focusing on JSON querying and recommends use case instead of loading large payloads.

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 explicit rule to provide exactly one of url or json, and recommends using instead of loading large JSON. Lacks explicit when-not alternatives but is still helpful.

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

keyword_researchAInspect

Query Google Ads data via DataForSEO for 1–20 keywords and get per-keyword: monthly search volume, CPC (USD), competition score (0–1 + level label), 12-month trend, and top-5 related keyword suggestions. Returns JSON with all results. Returns an error if keywords is empty, exceeds 20 items, or the upstream API is unavailable. Has no side effects. Cost: $0.04 USDC pay-per-call on Base ($0.025 prepaid) — real COGS per batch. No first-call-free. Ideal for SEO audits, content planning, and PPC budget estimation.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsYesOne keyword (string) or up to 20 keywords (array of strings, max 20). Pass a single string for one keyword or an array for multiple keywords in one API call.
language_codeNoISO 639-1 language code for Google Ads data. Default "es" (Spanish). Use "en" for English, "fr" for French, etc.es
location_codeNoDataForSEO location code for Google Ads geo-targeting. Default 2724 (Spain). Use 2840 for USA, 2826 for UK. Full list: https://api.dataforseo.com/v3/keywords_data/google_ads/locations
include_suggestionsNoWhether to fetch top-5 related keyword suggestions per seed keyword. Default true. Set false to skip the suggestions call and reduce latency.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses error conditions (empty/excessive keywords, API unavailability), side effects (none), and cost ($0.04 USDC pay-per-call, no free first call). This is exceptionally transparent for an AI agent.

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 concise yet comprehensive, front-loading the action and output, and including error handling, side effects, cost, and use cases in a single paragraph. No unnecessary 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?

Given there is no output schema, the description fully explains the return JSON structure (specific metrics). It also covers all error scenarios and side effects, making it complete for an AI agent to understand usage.

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 description adds little beyond the schema, except for noting that include_suggestions affects latency. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it queries Google Ads data via DataForSEO for 1-20 keywords and lists the specific metrics returned (search volume, CPC, competition, trend, suggestions). It is distinct from sibling tools which are mostly utilities like encoding, fetching, or finance tools.

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 mentions ideal use cases (SEO audits, content planning, PPC budget estimation) but does not explicitly state when not to use or list alternatives. However, no sibling tools overlap with keyword research, so the context is clear.

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

page_assetsAInspect

Fetch a URL and return a JSON inventory of every asset it references — images (incl. srcset), stylesheets, scripts, fonts, icons/favicons and media — all resolved to absolute URLs and deduplicated. Returns an error if the URL is unreachable. Has no side effects. Free. Ideal for auditing or migrating a site: get the full asset manifest in one cheap call instead of loading the page into context. Do NOT use to list hyperlinks — use page_links instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to fetch (http:// or https://).

TDQS

A4.5/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It discloses that the tool has no side effects, is free, and returns an error on unreachable URLs. It could mention rate limits or that it only fetches the initial HTML, but the current disclosure is good.

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 extremely concise (two sentences) yet covers purpose, usage, and behavior. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description fully explains the output format (JSON inventory of assets), error behavior, and mentions no side effects and cost, making it complete for an agent.

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 only parameter 'url' is fully described in the input schema (100% coverage). The description does not add additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description starts with a clear, specific verb ('Fetch a URL and return a JSON inventory') and details the asset types (images, stylesheets, etc.) with deduplication. It explicitly distinguishes the tool from its sibling 'page_links' by stating what it does and does not do.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use ('Ideal for auditing or migrating a site') and when not to use ('Do NOT use to list hyperlinks — use page_links instead'). This leaves no ambiguity for the agent.

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

pdf_text_extractAInspect

Fetch a PDF from a URL and extract its text content. Handles FlateDecode-compressed streams and RC4-encrypted PDFs that open with an empty password. Returns clean plain text. Returns an error if the URL is unreachable, the response is not a PDF, or the PDF is password-protected with a non-empty password. Has no side effects. Works on text-based PDFs (Word, LaTeX, web-generated); does NOT perform OCR on scanned/image-only PDFs. Use instead of loading raw PDF bytes into your context.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the PDF to fetch (http/https). Must be a PDF file.
maxCharsNoMax characters to return (default 20000, max 100000).

TDQS

A4.7/5.0
Behavior5/5

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

Even without annotations, the description thoroughly discloses behavior: no side effects, handles FlateDecode and RC4 encryption with empty password, returns clean plain text, and errors on unreachable/non-PDF/password-protected PDFs. No contradictions.

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

Conciseness5/5

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

Three sentences, all valuable. First sentence states primary action, second adds specifics on handling, third contrasts with alternatives. No redundancy.

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

Completeness5/5

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

Given two parameters (well-documented), no output schema, and no annotations, the description covers purpose, usage, error handling, limitations (no OCR), and side effects. Fully sufficient for an agent to decide when to invoke.

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 baseline is 3. The description does not add new meaning beyond schema descriptions for parameters, but the schema itself is clear. The description supplements context on default maxChars and error handling, but parameter semantics are adequately covered by 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?

Clearly states the tool fetches a PDF from a URL and extracts text, distinguishes from siblings by advising to use instead of loading raw PDF bytes. Handles specific compression and encryption, and explicitly states it does not perform OCR on scanned PDFs.

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?

Provides explicit when-to-use (text-based PDFs), when-not-to-use (scanned/image-only PDFs), error conditions (unreachable URL, non-PDF, password-protected with non-empty password), and a sibling alternative suggestion: 'Use instead of loading raw PDF bytes into your context'.

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

pricingAInspect

Returns the machine-readable pricing menu for this server: which tools are free vs paid, pay-per-call vs discounted prepaid pricing, how to deposit and spend a prepaid balance, payment method, and quantified value (token savings, ROI). Always returns immediately — has no side effects and costs nothing. Call this first to understand what is available and at what cost before using paid tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided; description handles transparency well by stating 'Always returns immediately — has no side effects and costs nothing.' This discloses the tool's safety and performance traits. No additional behavioral details needed for a simple read-only tool.

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

Conciseness5/5

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

Three sentences, front-loaded with the core purpose, then elaborates on contents and careful use. No filler; every sentence adds value.

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 no parameters, no output schema, and low complexity, the description fully covers what the tool does, its return value, and usage context. It explains why and when to use it, making it complete for an AI agent.

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?

No parameters exist, so the description adds value by explaining what the tool returns, effectively covering the tool's semantics. Baseline score of 4 applies as no further param info is needed.

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

Purpose5/5

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

The description clearly states it returns a 'machine-readable pricing menu' listing free vs paid, prepaid, etc. It uses specific verbs and resources, and distinguishes itself from sibling tools like account_balance by focusing on tool pricing, not user balance.

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 advises to 'Call this first to understand what is available and at what cost before using paid tools.' It also clarifies it has no side effects and costs nothing, implying safe to call anytime. Lacks explicit when-not or alternatives, but the guidance is clear.

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

regex_extractAInspect

Run a regular expression against text and return all matches. Supports capture groups, named groups, and multiline input. Returns a JSON array of match objects — each has match (full match) and groups (array or object for named groups). Returns an empty array if no matches are found. Returns an error if the pattern is not a valid regular expression. Has no side effects. Free. Use for extracting emails, URLs, codes, patterns, or any structured data from unstructured text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to search.
flagsNoRegex flags string (default "gi"). Common: g=global, i=case-insensitive, m=multiline, s=dotAll.
patternYesRegular expression pattern (without delimiters).
maxMatchesNoMax matches to return (default 100, max 500).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses no side effects, free status, error handling (invalid pattern returns error), and return format. It does not explicitly mention the maxMatches limit (default 100, max 500) from the schema, but the return behavior for no matches is stated.

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 moderately concise, front-loaded with the main purpose, and well-structured. It covers key points in a few sentences but includes some redundancy (e.g., 'supports capture groups, named groups' repeated in different ways).

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 exists, but the description explains the return format (JSON array with match and groups objects). It covers I/O (text, pattern, flags, maxMatches), return values, errors, and side effects. For a tool with 4 parameters, this is fairly complete.

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

Parameters4/5

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

Schema coverage is 100% (all 4 parameters have descriptions). The description adds value by explaining: pattern without delimiters, flags default 'gi' with common options, maxMatches defaults and limit. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's action: 'Run a regular expression against text and return all matches.' It specifies the resource (text) and the verb (extract using regex). The use cases listed (extracting emails, URLs, codes) help distinguish it from sibling tools like text stats or json_query.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when to use: 'for extracting emails, URLs, codes, patterns, or any structured data from unstructured text.' It does not explicitly state when not to use or mention alternatives, but the context is clear enough for an agent.

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

remove_backgroundAInspect

Remove the background from an image (U²-Net model via fal.ai) and return a transparent PNG hosted on a public URL — never raw bytes, so it does not bloat context. Returns JSON with url (public PNG, expires ~24 h — download promptly) and file_size_bytes. Returns an error if the image_url is not publicly accessible or the image format is unsupported. Has no side effects on the source image. To pass a local image, first upload it with upload_file and pass the returned URL here. Cost: $0.03 USDC pay-per-call ($0.02 prepaid). No first-call-free.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlYesPublic URL of the source image (JPEG, PNG, or WEBP). Must be accessible from the internet — local paths and data: URIs are not supported.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: returns JSON with url (public PNG, expires ~24h) and file_size_bytes, error conditions (bad URL or format), no side effects, no raw bytes (avoids context bloat), and cost ($0.03 per call). This is comprehensive.

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

Conciseness4/5

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

The description is a single paragraph but packs essential information: what, how, output, errors, side effects, cost. It could be slightly more structured (e.g., bullet points) but is not overly long or rambling.

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 no output schema, the description adequately covers output format (url, file_size_bytes), expiration (24h), error handling, side effects, and cost. It also provides workflow guidance for local images. No gaps remain.

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 image_url well (100% coverage), and the description adds valuable context: must be public, accessible from internet, no local paths/data: URIs, and the workflow to pass local images via upload_file.

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

Purpose5/5

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

The description clearly states it removes background from an image using U²-Net via fal.ai, returning a transparent PNG on a public URL. This is distinct from sibling tools like screenshot_url or fetch_html, all of which are text/structure/fetch tools, making it unique and unambiguous.

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

Usage Guidelines4/5

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

The description explains when to use (to remove background), how to pass local images (upload first via upload_file), and cost details. It does not explicitly mention alternatives or when not to use, but that is acceptable given no similar sibling tools.

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

rss_parseAInspect

Fetch and parse an RSS 2.0 or Atom 1.0 feed URL. Returns structured JSON with feed metadata (title, description, language, last-build date) and an array of items (title, link, pubDate, author, categories, description, enclosure). Returns an error if the URL is unreachable or the response is not valid RSS/Atom XML. Has no side effects. Use instead of fetching raw XML — saves 90%+ of tokens. Ideal for news aggregation, content monitoring, and feed-based workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesRSS or Atom feed URL (http:// or https://).
maxItemsNoMax feed items to return (default 20, max 200).

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully covers behavior: it discloses error conditions (unreachable URL, invalid RSS/Atom XML) and explicitly states 'has no side effects'. This is thorough for a read-only 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 concise with three sentences, each adding distinct value: main action, error/side effects, and use cases. Slightly verbose in listing output fields, but still efficient.

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 no output schema, the description adequately explains the return structure (feed metadata and items with fields). Together with the input schema, it provides complete context for a two-parameter tool.

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 coverage is 100% but the description adds value by clarifying default and max for 'maxItems' (20, max 200) and describing the output structure (feed metadata, items with specific 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 clearly states it fetches and parses RSS 2.0 or Atom 1.0 feeds and returns structured JSON. It distinguishes from sibling tools like 'fetch_structured' and 'fetch_html' by specifying the exact feed formats.

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 advises using this tool instead of fetching raw XML to save tokens, and lists ideal use cases (news aggregation, content monitoring). It lacks explicit when-not-to-use or alternatives, but the context is clear.

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

screenshot_urlAInspect

Capture a screenshot of a web page (full-page or viewport) and return a PUBLIC image URL — not the bytes — so it never bloats your context. Returns JSON with the hosted URL, size, and dimensions. Returns an error if the URL is unreachable or the page fails to load. The hosted image expires after ~24 h — download it promptly if you need it longer. Has no side effects on the target page. Cost: $0.04 USDC pay-per-call on Base ($0.025 prepaid). First call free per wallet. Ideal for site migration/reconstruction (visual reference) and visual QA.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the page to screenshot (http:// or https://).
widthNoViewport width in pixels (default 1280, 100–4000).
formatNoImage format: "png" (default) or "jpeg".png
heightNoViewport height in pixels (default 800, 100–4000). Ignored when fullPage is true.
qualityNoJPEG quality 1–100 (only applies when format is jpeg).
fullPageNoCapture the entire scrollable page instead of just the viewport. Default false.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behaviors: returns public URL (not bytes), 24h expiration, no side effects, cost ($0.04), first call free. This is comprehensive for a screenshot tool.

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

Conciseness5/5

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

The description is efficient: 6 sentences cover purpose, behavior, output, errors, cost, and use cases. Front-loaded with main action. No wasted words.

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 6 parameters, 100% schema coverage, no output schema, the description explains return structure (JSON with URL, size, dimensions), error conditions, and cost. Complete context for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters have descriptions in the schema. The description adds context about full-page vs viewport (already in schema) and mentions output format. It adds some value but is not significantly beyond schema.

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

Purpose5/5

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

The description clearly states 'Capture a screenshot of a web page' and specifies the return type (public image URL). It distinguishes from sibling tools, none of which perform screenshots.

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 explicit use cases: 'Ideal for site migration/reconstruction (visual reference) and visual QA.' Also mentions error handling. Lacks explicit when-not, but the unique function makes that less critical.

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

sitemap_parseAInspect

Fetch and parse an XML sitemap (urlset or sitemapindex). Returns structured JSON: for urlsets — array of URLs with loc, lastmod, changefreq, priority, plus image/news sitemap extensions; for sitemapindex — list of child sitemap URLs. Returns an error if the URL is unreachable or the response is not valid XML sitemap format. Has no side effects. Use to enumerate all pages of a site, find recently updated content, or build a crawl queue — without loading raw XML into context.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSitemap URL (http:// or https://). Accepts sitemap.xml, sitemap_index.xml, or any XML sitemap.
maxUrlsNoMax URLs to return from a urlset (default 100, max 1000). Has no effect on sitemapindex (all child sitemaps are always returned).

TDQS

A4.6/5.0
Behavior5/5

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

Discloses no side effects, error conditions (unreachable URL, invalid XML), and behavior for both sitemap types. Explains maxUrls limit and its effect. With no annotations, the description fully covers behavioral traits.

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 clear sentences: main function, error handling, use cases. Front-loaded with primary purpose. No unnecessary words. Each sentence serves a distinct 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 two parameters, no output schema, and no annotations, the description is quite complete. It explains input, return format, errors, and use cases. Minor omission: exact JSON structure not fully described, but the mention of fields suffices.

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. The description adds extra value by specifying default (100) and max (1000) for maxUrls, and clarifying it has no effect on sitemapindex. This goes beyond schema details.

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

Purpose5/5

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

Clearly states it fetches and parses XML sitemaps, returning structured JSON for urlset or sitemapindex. Distinguishes itself from generic fetch tools by specifying its exact purpose: enumerating pages, finding updated content, building crawl queues.

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 lists use cases (enumerate pages, find updated content, build crawl queue). Implicitly suggests not to use for raw HTML fetching. However, does not explicitly mention when not to use or compare to siblings, though the context makes it clear.

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

task_recipesAInspect

Returns a menu of pre-designed complex tasks that ToolSnap makes easy (e.g. replicate a website as static HTML, run an SEO audit), each as a ready-to-run prompt that orchestrates the right ToolSnap tools end-to-end. Call with no arguments to list available recipes; call with recipe='' to get the full ready-to-paste prompt, the tools it uses and an estimated cost. Always returns immediately — has no side effects and costs nothing. Use this when the user asks for a whole task (migrate/clone a site, audit SEO) rather than a single operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipeNoThe recipe id to expand (e.g. 'replicate_website', 'seo_audit'). Omit to list the menu.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, but the description fully discloses behavior: 'Always returns immediately — has no side effects and costs nothing.' This covers safety and performance expectations comprehensively.

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 concise with three clear sentences: first states purpose, second explains usage patterns, third covers behavioral transparency. No redundancy.

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

Completeness5/5

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

Given the tool's simplicity and lack of output schema, the description adequately explains return values (full prompt, tools, cost) and when to use it. No gaps remain.

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% with a clear description for the single parameter. The description adds value by giving examples of recipe IDs ('replicate_website', 'seo_audit') and explaining the effect of omitting vs including the 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 states it returns a menu of pre-designed complex tasks and distinguishes between listing recipes and retrieving a specific recipe. It differentiates from sibling tools like 'screenshot_url' or 'fetch_html' which are single operations.

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?

Explicitly tells when to use the tool ('when the user asks for a whole task') and provides two calling patterns: no arguments to list, or with 'recipe' parameter. No alternative tools mentioned, but context is clear.

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

text_statsAInspect

Count characters, words, lines, and sentences in a text string. Returns a JSON object with counts for characters, words, lines, sentences, and average word length. Has no side effects. Free. Use when you need to analyse or report on the size and structure of a body of text. Do NOT use to count LLM tokens — use count_tokens instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyse.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It states 'Has no side effects. Free.', which discloses safety and cost. However, it could mention other traits like speed or determinism.

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?

Description is concise (three sentences), front-loaded with the core action, and every sentence adds value without 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?

Given the simple input (one parameter) and no output schema, the description fully explains what the tool does, what it returns (JSON with specific counts), when to use it, and when to avoid it. It is complete for this tool's complexity.

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%, baseline 3. The description adds meaning beyond the schema by explaining the computed metrics (characters, words, lines, sentences), which enhances understanding of the text parameter's purpose.

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

Purpose5/5

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

The description clearly states the tool counts characters, words, lines, and sentences in a text string, with a specific verb and resource. It explicitly distinguishes from the sibling count_tokens tool by warning not to use for token counting.

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 explicit when to use (analyse text size/structure) and when not to use (LLM token counting), including the alternative tool count_tokens.

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

timestamp_convertAInspect

Convert between Unix timestamps (seconds) and ISO 8601 date strings. Auto-detects direction: numeric input → ISO string, date string input → Unix seconds. Accepts Unix in seconds or milliseconds (auto-detected by magnitude). Returns an error if the input cannot be parsed as a timestamp or date. Has no side effects. Free. Use when you need to convert epoch values to human-readable dates or vice-versa.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo"iso" to force output as ISO 8601, "unix" to force output as Unix seconds. Omit to auto-detect.
inputYesThe value to convert. Either a Unix timestamp (as a number or numeric string, seconds or ms) or an ISO/date string like "2024-01-15T10:30:00Z".

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description covers key behaviors: auto-detection of direction and input format (seconds/milliseconds), error handling ('Returns an error if input cannot be parsed'), and side-effect-free operation ('Has no side effects. Free.'). It does not detail rate limits or return format, but the tool is simple.

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 five sentences, each providing essential information. It is front-loaded with the main purpose, and every sentence earns its place—no fluff or redundancy.

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

Completeness5/5

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

For a simple two-parameter tool with no output schema, the description covers input formats, auto-detection, error handling, side effects, and cost. It is complete and leaves no ambiguity about how the tool behaves.

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%, but the description adds value beyond it by explaining auto-detection logic and that Unix timestamps can be in seconds or milliseconds, auto-detected by magnitude. This helps the agent understand how to use the 'input' parameter correctly.

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 explicitly states 'Convert between Unix timestamps (seconds) and ISO 8601 date strings', using a specific verb and resource. It clearly distinguishes from sibling tools like base64_encode or json_format, which handle different conversions.

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

Usage Guidelines4/5

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

The description explains auto-detection of direction and input formats, and provides a clear use case: 'Use when you need to convert epoch values to human-readable dates or vice-versa.' However, it does not explicitly state when not to use or mention alternatives, though the tool's simplicity makes this less critical.

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

upload_fileAInspect

Upload a base64-encoded image to ToolSnap temporary storage and receive a short-lived URL to pass to tools like remove_background. The file is automatically deleted once consumed by a tool. Returns JSON with url (temporary), key, content_type, file_size_bytes. Returns an error if the base64 data is malformed or the content_type is not supported. Do NOT use this URL as a permanent link. Accepts JPEG, PNG, WEBP, or GIF up to 10 MB. Free — no payment required.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesBase64-encoded image data (no data: URI prefix — just the raw base64 string).
content_typeYesMIME type of the image: "image/jpeg", "image/png", "image/webp", or "image/gif".

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Discloses that file is auto-deleted once consumed, returns JSON with specific fields, errors on malformed data or unsupported content_type. Full behavioral transparency.

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?

Concise, no redundant sentences. Front-loaded with main purpose. Well-structured with constraints and return info following logically.

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 simplicity (2 params, no nested objects, no output schema), description covers all needed: purpose, input format, constraints, return shape, and error conditions. No gaps for an AI agent to misuse.

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%, baseline 3. Description adds extra guidance for 'data' parameter (no data: URI prefix), which adds value beyond schema. For content_type, schema already clear. Overall slight improvement.

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

Purpose5/5

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

Description clearly states the tool uploads a base64-encoded image to ToolSnap temporary storage and returns a short-lived URL. It distinguishes itself from siblings like remove_background by naming the purpose (to pass to such tools). Uses specific verb and resource.

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?

When to use: when you have a base64 image needing a temporary URL for tools like remove_background. Constraints: only JPEG, PNG, WEBP, GIF up to 10 MB, free. Warns against using URL as permanent link. Lacks explicit when-not-to-use but context implies.

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

url_decodeAInspect

Decode a percent-encoded URL string back to plain text (decodeURIComponent). Returns the decoded string, or an error if the input contains an invalid percent-escape sequence. Has no side effects. Free. Use to recover the original text from a URL-encoded value.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe URL-encoded string to decode.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It states 'Has no side effects. Free.' which addresses safety and cost. It also explains error behavior ('or an error if the input contains an invalid percent-escape sequence'). This fully informs an agent about the tool's behavior.

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

Conciseness5/5

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

The description is three sentences long, each carrying essential information. It front-loads the action and result, followed by behavior and usage. Every sentence earns its place without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema), the description covers all necessary aspects: purpose, usage, behavior (side effects, cost, error handling). No gaps are apparent.

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% with a clear description of the 'text' parameter. The tool description adds context ('percent-encoded', 'decodeURIComponent') that enriches the schema description, helping the agent understand the expected input 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?

The description clearly states the action ('Decode'), the resource ('percent-encoded URL string'), and the result ('plain text'). It also references the JavaScript function decodeURIComponent, providing precise technical context. This clearly distinguishes it from sibling tools like url_encode.

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 tells when to use the tool ('Use to recover the original text from a URL-encoded value'). It does not explicitly mention when not to use it or alternative tools, but the sibling context (url_encode) and the clear purpose make usage guidelines sufficient.

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

url_encodeAInspect

Percent-encode a string for safe inclusion in a URL query parameter or path segment (encodeURIComponent). Returns the encoded string. Has no side effects. Free. Use when building URLs that contain special characters, spaces, or non-ASCII text. Do NOT use to encode a full URL — only encode individual query values or path segments.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to URL-encode.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses no side effects and free cost, which is valuable since no annotations are provided. Could mention that the encoded string is returned, but the core behavioral traits are covered clearly.

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

Conciseness5/5

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

Two sentences with zero waste: first sentence states purpose and behavior, second gives usage guidelines. Every sentence earns its place, front-loaded with the key action.

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

Completeness5/5

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

Given the tool's simplicity (1 param, no output schema), the description covers all necessary aspects: function, usage, side effects, cost, and parameter semantics. Complete for its complexity level.

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%, baseline 3. Description adds value by specifying the encoding algorithm (encodeURIComponent) and reiterating that the input is the text to encode, though the schema already describes it as 'The text to URL-encode.'

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

Purpose5/5

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

Clearly states the verb 'percent-encode' and resource 'a string' with explicit purpose for safe URL inclusion. Distinguishes from sibling tools like url_decode by specifying encoding standard encodeURIComponent.

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?

Provides explicit when-to-use ('building URLs containing special characters, spaces, or non-ASCII text') and when-not-to-use ('do NOT encode a full URL'). Offers clear alternative guidance for encoding individual values only.

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

uuid_generateAInspect

Generate one or more random UUID v4 values. Returns a newline-separated string of UUIDs (or a single UUID string when count=1). Has no side effects. Free. Use when you need unique identifiers for records, sessions, tokens, or any entity requiring a globally unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of UUIDs to generate (1–100, default 1).

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It states 'Has no side effects. Free,' which clearly discloses behavioral traits. The output format is also explained based on the count parameter.

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

Conciseness5/5

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

The description is three sentences, well-structured, with no unnecessary words. Every sentence adds value: what it does, output format, side effects, and when to use.

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

Completeness5/5

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

Given the tool has one parameter, no output schema, and no annotations, the description covers all necessary aspects: purpose, usage guidance, behavior, and output format. It is complete for an agent to select and invoke correctly.

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

Parameters4/5

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

Schema coverage is 100% and the parameter count already has a description. The description adds value by explaining the output format (newline-separated vs single UUID) and the side-effect-free nature, going beyond schema.

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

Purpose5/5

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

The description clearly states the tool generates random UUID v4 values, specifies output format (newline-separated string or single UUID when count=1), and distinguishes from sibling tools which are unrelated.

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: 'when you need unique identifiers for records, sessions, tokens, or any entity requiring a globally unique ID.' It does not mention alternatives or when not to use, but the context of siblings makes it clear.

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

wallet_setupAInspect

Returns the step-by-step procedure for you (the agent) to generate your own wallet on your host and have your human fund it with USDC on Base. ToolSnap never sees, stores, or transmits the private key — it is born and lives on your machine. Call this after receiving a no_payment_method error from any paid tool. The procedure covers: OS detection, choosing the best secret store (macOS Keychain / Windows Credential Manager / Linux Secret Service / file fallback), generating and storing the key without it ever appearing in context, printing the public address + QR for the human to fund, verifying the on-chain balance, and — critically — wiring the ToolSnap pay-proxy so paid tools actually work (a funded wallet alone is not enough: most MCP clients can't satisfy x402 on their own).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

No annotations provided, but description fully discloses behavioral traits: private key never seen/stored/transmitted, covers OS detection, secret store choices, and warns that funded wallet alone is insufficient. Very transparent.

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?

Single paragraph, front-loaded with purpose, dense but every sentence adds value. Could be slightly more structured, but efficient overall.

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?

No annotations or output schema, yet description covers purpose, trigger condition, output contents, and critical caveats (local key generation, pay-proxy wiring). Very complete for the tool's simplicity.

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?

No parameters in input schema (0 params). Description doesn't need to add param info but compensates by detailing output structure (the procedure steps). Baseline 4 for zero parameters.

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

Purpose5/5

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

Clearly states the tool returns a step-by-step procedure for wallet generation and funding on Base, with specific context (after no_payment_method error). Uniquely identifies purpose among siblings.

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 says 'Call this after receiving a no_payment_method error', providing clear usage context. Does not mention alternatives but siblings are unrelated.

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. Dates show when Glama detected each change.

  1. 10 tool updates
    • Removedextract_structured
    • Addedfetch_metadata
    • Addedfetch_structured
    • Addedkeyword_research
    • Addedremove_background
    • Addedscreenshot_url
    • Addedtask_recipes
    • Addedupload_file
    • Addedwallet_setup
    • Removedwebpage_metadata
  2. 27 tool updatesv0.1.0
    • First observedaccount_balance
    • First observedaccount_deposit
    • First observedbase64_decode
    • First observedbase64_encode
    • First observedcount_tokens
    • First observedcsv_query
    • First observeddiff_text
    • First observedextract_structured
    • First observedfetch_extract
    • First observedfetch_html
    • First observedhash_text
    • First observedhtml_to_markdown
    • First observedjson_format
    • First observedjson_query
    • First observedpage_assets
    • First observedpage_links
    • First observedpdf_text_extract
    • First observedpricing
    • First observedregex_extract
    • First observedrss_parse
    • First observedsitemap_parse
    • First observedtext_stats
    • First observedtimestamp_convert
    • First observedurl_decode
    • First observedurl_encode
    • First observeduuid_generate
    • First observedwebpage_metadata

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose. Even similar tools like fetch_extract, fetch_html, and html_to_markdown produce different output types (text, HTML, Markdown), so an agent can reliably select the right one.

Naming Consistency5/5

All 33 tool names follow a consistent snake_case pattern with a verb_noun structure (e.g., account_balance, base64_decode, fetch_extract). No mixing of conventions or vague verbs.

Tool Count3/5

33 tools is on the high side for a single server. While each tool has a clear role, the sheer number may overwhelm agents and suggests the server could be split into smaller, more focused servers.

Completeness4/5

The tool set covers a broad range of common utility operations: encoding, web scraping, data extraction, SEO, text analysis, etc. Minor gaps exist (e.g., no symmetric encryption, no image generation), but the surface is largely sufficient for its purpose.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    42 local SEO tools for AI assistants. SERP tracking, Google Business Profile data, review monitoring, keyword research, AI visibility scoring, geogrid rank scans, citation audits, and competitive analysis.
    8
    42
    50
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Read any public web page as a clean AIDocument: Markdown plus title, description, and structure, with navigation and boilerplate stripped. Reads resolve through Lyrenth's shared cache, so it is far fewer tokens than raw HTML and origin-friendly.
    2
    3
    296
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Pay-per-call MCP server for WebberSites x402 Data API, offering 45 tools for AI agents: web scraping, document extraction, SEO audits, linting, crypto data, and more, with payment via USDC on Base.
    63
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/icosaedro-git/toolsnap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server