Benchline
Server Details
72 free, open-source (MIT) developer tools over a stateless, no-key MCP server: JSON/YAML/CSV conversion, PDF and image processing, JWT/hash/UUID utilities, DNS/TLS/HTTP checks, llms.txt and AI SEO checks, and more.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 82 tools
Most of the 82 tools have clearly distinct, narrow purposes with detailed descriptions that make misselection unlikely. A few clusters overlap somewhat (e.g. convert_image vs compress_image vs resize_image, and convert_json_to_types vs validate_json_schema both emit TS/Zod), but the descriptions give enough guidance to choose correctly.
Nearly all tools use snake_case with a predictable verb_noun or action_resource pattern (build_, convert_, generate_, validate_, read_, check_). A few outliers are topic-first rather than verb-first (aes_crypt, base64_codec, url_codec, images_to_pdf), but the set remains readable and consistent overall.
At 82 tools, Benchline is far above the sweet spot for an agent-facing utility set, even one that covers many domains. Each tool is individually useful, but the sheer volume creates a large selection burden and makes the server feel like a catalog rather than a coherent toolkit.
The surface covers an unusually broad range of developer utilities: crypto, text/data conversion, web inspection, images, PDFs, SEO, time, and validation. Only minor gaps remain, such as a generic REST client and richer audio/video handling beyond WAV trimming, but these are edge cases for the apparent scope.
Available Tools
82 toolsaes_cryptEncrypt or decrypt with AES-GCMARead-onlyIdempotentInspect
AES-256-GCM encryption with PBKDF2-SHA256 key derivation. Encrypt returns a base64 bundle (salt, IV, ciphertext); decrypt reverses it.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| text | No | Plaintext to encrypt (encrypt mode) | |
| bundle | No | Base64 bundle from a previous encryption (decrypt mode) | |
| iterations | No | ||
| passphrase | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| bundle | No | |
| plaintext | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/idempotentHint, so the safety profile is covered. The description adds real value by disclosing the algorithm and key-derivation scheme and the structure of the encrypt output (salt, IV, ciphertext). However, it omits behaviorally important facts: encrypt output is non-deterministic (fresh salt/IV), and decrypt fails with an authentication error on a wrong passphrase or tampered bundle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the algorithm/scope statement comes first and the round-trip contract second. Every clause carries information the agent cannot get from the name alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be explained, and the annotations cover safety. For a 5-parameter cryptographic tool at 40% schema coverage, though, the definition should say how mode selects between text and bundle, what iterations trades off, and what a failed decrypt looks like; those gaps leave it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description partially compensates by implying the passphrase (via PBKDF2 key derivation) and the bundle contents (salt, IV, ciphertext). It still says nothing about the 'mode' enum, the 'iterations' knob (default 100000, range 10000-2000000) or the text-vs-bundle exclusivity, leaving meaningful gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb pair (encrypt/decrypt) and the exact primitives used (AES-256-GCM, PBKDF2-SHA256), which cleanly separates it from hashing siblings like hash_data/hash_password and encoding siblings like base64_codec. It stops short of explicitly routing against those alternatives, so it is clear but not full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Encrypt returns a base64 bundle...; decrypt reverses it' tells the agent the two modes exist and roughly what each produces, but never states when to choose this tool over hash_data, base64_codec, or generate_keypair, nor when not to use it. No prerequisites or security caveats are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_harAnalyze a HAR fileARead-onlyIdempotentInspect
Parse a HAR (HTTP Archive) capture and summarize it: request counts, status distribution, slowest and largest requests, top hosts, and per-request timings.
| Name | Required | Description | Default |
|---|---|---|---|
| har | Yes | HAR file contents as JSON text | |
| top | No | How many slowest/largest requests and top hosts to include |
Output Schema
| Name | Required | Description |
|---|---|---|
| largest | Yes | |
| slowest | Yes | |
| topHosts | Yes | |
| truncated | Yes | |
| totalBytes | Yes | |
| totalTimeMs | Yes | |
| statusGroups | Yes | |
| totalRequests | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral value by disclosing exactly what the analysis computes (status distribution, slowest/largest, top hosts, timings), telling the agent this is a deterministic local parse-and-summarize rather than a fetch. It omits any note on large-file handling or truncation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the verb and resource lead, and the output enumeration follows efficiently. Nothing can be trimmed without losing informational content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are fully documented at 100% coverage. With annotations carrying the safety profile, the description provides everything an agent needs to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both 'har' and 'top' are fully documented in the schema, including minLength and 1-20 bounds for 'top'. The description's mention of 'slowest and largest requests, top hosts' echoes the purpose of the 'top' parameter but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse/summarize) and resource (HAR HTTP Archive capture), then enumerates the exact outputs: request counts, status distribution, slowest/largest requests, top hosts, per-request timings. No sibling tool does HAR analysis, so it is unambiguously distinguishable from the rest of the catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Parse a HAR (HTTP Archive) capture' – an agent knows this applies when it has HAR JSON to analyze. However, it names no alternatives or exclusions, and does not say how it relates to adjacent tools like check_http_headers, check_ssl, or fetch_page_markdown that also surface HTTP performance information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64_codecEncode or decode Base64ARead-onlyIdempotentInspect
Encode UTF-8 text as Base64, or decode Base64 and data URIs. URL-safe output uses - and _ and omits padding. Decode reports the sniffed media type and whether the bytes are UTF-8 text.
| Name | Required | Description | Default |
|---|---|---|---|
| mime | No | text/plain;charset=utf-8 | |
| text | Yes | Text to encode, or Base64 or a data URI to decode. | |
| action | No | encode | |
| dataUri | No | ||
| urlSafe | No | Encode with the URL-safe alphabet and no padding. Data URIs stay on the standard alphabet. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| mime | Yes | |
| error | Yes | |
| binary | Yes | |
| output | Yes | |
| filename | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior: URL-safe output uses '-'/'_' and omits padding, and decode reports the sniffed media type plus whether bytes are UTF-8 text. It does not discuss error behavior on invalid input, but the added context is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core encode/decode capability, then the two behavioral nuances. Every sentence carries information; no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description still helpfully notes what decode surfaces (media type, UTF-8 status). It is nearly complete for a 5-param codec, with the only gap being the unmentioned mime parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (mime, action and dataUri have no schema descriptions), so the description must compensate. It does cover data-URI decoding and URL-safe semantics, but never mentions the mime parameter or the interaction between action and dataUri, leaving some parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (encode, decode) and the exact resource (Base64 / data URIs), and it is easily distinguished from nearby siblings like url_codec or convert_data_format. An agent knows immediately what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Encode ... or decode ...' plus the default action=encode. There is no explicit when-to-use or when-not-to-use guidance, and no mention of an alternative (e.g. url_codec) for related work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_cspBuild a Content-Security-PolicyARead-onlyIdempotentInspect
Build a Content-Security-Policy from directives, or lint an existing policy. Returns the header line, a Next.js headers() snippet, and warnings for unsafe sources.
| Name | Required | Description | Default |
|---|---|---|---|
| policy | No | An existing Content-Security-Policy value to lint. When set, directive fields are ignored. | |
| sources | No | ||
| blockAllMixedContent | No | ||
| upgradeInsecureRequests | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | Yes | |
| header | Yes | |
| policy | Yes | |
| nextConfig | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds some value by noting that warnings are emitted for unsafe sources, but it does not disclose formatting constraints (e.g., source token syntax, semicolon joining) or limits on lintable policies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the primary purpose is front-loaded ahead of the secondary lint mode and the return-value note. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values (though it does). The real gap is on the input side: with 4 parameters, nested required directive keys, and 25% schema coverage, two boolean switches remain completely unspecified, leaving an agent guessing how to configure mixed-content and insecure-request handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: only the `policy` parameter carries a schema description, and the two booleans (`blockAllMixedContent`, `upgradeInsecureRequests`) are undocumented everywhere. The description gestures at "directives" and linting a "policy" but adds no meaning for the boolean flags or the required directive keys, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ("Build a Content-Security-Policy") and explicitly covers the second mode ("or lint an existing policy"), which separates it cleanly from sibling builders like build_json_ld or build_open_graph. An agent can identify the tool's domain and dual mode without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two operating modes are named, so usage is implied: supply directives to generate, or supply a policy to lint. However, it never states which mode takes precedence, what prerequisites exist, or when an agent should prefer this over a manual check_http_headers-style tool. Guidance is present but inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_json_ldBuild JSON-LDARead-onlyIdempotentInspect
Build schema.org JSON-LD for one type, plus a script tag and a list of missing fields. Use this when you already know the fields. It does not fetch a page.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| values | Yes | Fields for the chosen schema.org type. Repeatable fields are arrays of objects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| json | Yes | |
| checks | Yes | |
| script | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, so the safety profile is covered. The description usefully adds that the call does no page fetching and returns three artifacts including a missing-fields list, which tells the agent to expect partial output rather than a validation error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the output contract stated first and the usage caveat second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover the safety profile. For a two-parameter, read-only builder the description supplies everything an agent needs: what it produces, when to use it, and that it performs no fetching.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the enum on `type` is self-documenting and `values` carries a schema description about repeatable fields being arrays. The description adds nothing about parameter shape, formats, or how `values` keys must match the chosen type, so it neither compensates nor regresses. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: builds schema.org JSON-LD for a single type, and it names its outputs (script tag, missing-fields list). An agent can distinguish it from conversion siblings like build_open_graph, though the description never explicitly contrasts with the closest neighbour. Clear, but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when you already know the fields" gives a real selection condition, and "It does not fetch a page" excludes the fetch-based siblings (fetch_page_markdown, inspect_meta_tags) by implication. It stops short of naming the alternative tool an agent should use when it does not already know the fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_nextjs_dockerfileBuild a Next.js DockerfileBRead-onlyIdempotentInspect
Generate a production Dockerfile, dockerignore, compose file, and next.config snippet for a Next.js app. Defaults match a pnpm standalone image.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | slim | |
| node | No | 22 | |
| port | No | ||
| turbo | No | ||
| prisma | No | ||
| migrate | No | ||
| healthPath | No | /api/health | |
| publicEnvs | No | ||
| standalone | No | ||
| cacheMounts | No | ||
| healthcheck | No | ||
| packageManager | No | pnpm | |
| telemetryDisabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| image | Yes | |
| compose | Yes | |
| commands | Yes | |
| dockerfile | Yes | |
| nextConfig | Yes | |
| dockerignore | Yes | |
| estimatedSize | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the agent knows this is a pure, repeatable generation with no side effects. The description adds that defaults target a 'pnpm standalone image', which is useful context, but it doesn't disclose what happens if the flags conflict (e.g. migrate without prisma) or how the multiple artifacts are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, artifact list front-loaded, no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output format is covered by the output schema and the safety profile by annotations, so those needn't be restated. However, for a tool exposing 13 undocumented configuration parameters, the description is thin and leaves most option semantics to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage across 13 parameters, the description carries the full burden but only hints at two defaults (packageManager=pnpm, standalone=true). It says nothing about base, node, port, turbo, prisma, migrate, healthPath, publicEnvs, cacheMounts, healthcheck, or telemetryDisabled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and enumerates the exact artifacts produced: Dockerfile, dockerignore, compose file, and next.config snippet. No sibling tool overlaps this domain, so the tool is easily identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only scoping is 'for a Next.js app'. There is no statement of when to reach for this versus hand-writing a Dockerfile, no mention of prerequisites (existing package.json, pnpm lockfile), and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_open_graphBuild an Open Graph cardARead-onlyIdempotentInspect
Render one of the Open Graph templates as a PNG and a Next.js opengraph-image.tsx file. Pass a template id from list_og_templates, the fields that template uses, colors, a size, and optional base64 images.
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | ||
| url | No | ||
| date | No | ||
| hero | No | Hero image as base64, a data URI, or a public URL. | |
| logo | No | Logo image as base64, a data URI, or a public URL. Private addresses are refused. 10 MB cap. | |
| meta | No | ||
| role | No | ||
| size | No | 1200x630 | |
| stat | No | ||
| time | No | ||
| after | No | After image as base64, a data URI, or a public URL. | |
| badge | No | ||
| brand | No | Brand name shown on templates that have a brand row. | |
| price | No | ||
| quote | No | ||
| steps | No | One step per line. | |
| title | No | ||
| author | No | ||
| avatar | No | Portrait image as base64, a data URI, or a public URL. | |
| before | No | Before image as base64, a data URI, or a public URL. | |
| colors | No | ||
| caption | No | ||
| command | No | ||
| episode | No | ||
| eyebrow | No | ||
| imageUrl | No | Public URL written into og:image. This does not fetch the file. | |
| readTime | No | ||
| subtitle | No | ||
| template | No | Template id from list_og_templates. | editorial |
| versions | No | One version per line, as v2.3 | Note. | |
| statLabel | No | ||
| afterValue | No | ||
| beforeValue | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| png | Yes | PNG bytes, base64 encoded. |
| width | Yes | |
| height | Yes | |
| source | Yes | |
| metaTags | Yes | |
| mimeType | Yes | |
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds only that images are optional and that output is a PNG plus a Next.js file; it does not explain rendering failures, size/weight limits, or what happens with fields not used by the chosen template.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and outputs, then the required inputs. No filler or restated boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a 33-parameter, 18-template tool with zero required parameters, the description gives no sense of which fields belong to which template, forcing the agent to guess or re-query list_og_templates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 30% across 33 parameters, but the description does group them conceptually (template-specific fields, colors, size, optional base64 images) and notes that only 'the fields that template uses' matter, which is real semantic guidance. It stops short of enumerating the many text fields (quote, steps, versions, before/after values) that are undocumented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (render Open Graph templates) plus both output artifacts (PNG and opengraph-image.tsx). It also ties itself to the sibling list_og_templates for template ids, so an agent can distinguish it from build_json_ld and list_og_templates at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes a clear workflow precondition: get the template id from list_og_templates, then pass the fields that template uses. There is no explicit when-not-to-use or exclusion, but the routing to the sibling is concrete and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_cidrCalculate a CIDR blockARead-onlyIdempotentInspect
Return the network, broadcast, host range, and host count for an IPv4 or IPv6 CIDR. Optionally test whether an address is inside it, split it, or merge it with other CIDRs.
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | IPv4 or IPv6 CIDR, such as 192.168.1.0/24 or 2001:db8::/32. A dotted mask may follow the address. | |
| merge | No | Extra CIDRs to aggregate with cidr. | |
| contains | No | Address to test for membership. | |
| splitPrefix | No | Longer prefix to split into, at most 256 networks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| split | Yes | |
| merged | Yes | |
| summary | Yes | |
| contains | Yes | |
| splitCount | Yes | |
| containsDetail | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, and closed-world behavior, so the safety profile is covered. The description adds useful semantic detail by stating which values are computed and which optional transformations are available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core return values and followed by optional operations. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a pure calculation tool whose output schema details the return shape and whose annotations define the safety profile. Nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents cidr, merge, contains, and splitPrefix. The description maps loosely to contains, splitPrefix, and merge, but adds no format or syntax detail beyond the schema, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: return network, broadcast, host range, and host count for an IPv4 or IPv6 CIDR. It also names optional operations, so an agent can clearly distinguish this from unrelated calculator siblings like calculate_emi or calculate_percentage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the optional modes: test membership, split, or merge. There are no alternative tools to route between and no exclusions, but the context for when to use those optional parameters is explicit enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_emiCalculate a loan EMIARead-onlyIdempotentInspect
Calculate a reducing-balance loan installment and its amortization schedule. Money is rounded half up to cents. An optional extra monthly payment reduces principal.
| Name | Required | Description | Default |
|---|---|---|---|
| months | Yes | Term in months. | |
| principal | Yes | Amount borrowed, such as 100000. | |
| annualRate | Yes | Annual interest rate in percent, such as 10. | |
| extraMonthly | No | Extra principal paid every month. |
Output Schema
| Name | Required | Description |
|---|---|---|
| csv | Yes | |
| emi | Yes | |
| schedule | Yes | |
| payoffMonths | Yes | |
| totalPayment | Yes | |
| totalInterest | Yes | |
| totalPrincipal | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world, so the safety profile is covered. The description adds real behavioral detail beyond that: half-up rounding to cents and the fact that extraMonthly reduces principal, which materially affects results. It stops short of explaining how the amortization schedule is shaped, but the output schema carries that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core purpose front-loaded, then rounding semantics, then the optional parameter's effect. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and annotations cover safety; the remaining essentials (purpose, rounding, extra payment) are stated. Minor gap: no stated rate/term assumptions or error behavior, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented, giving a baseline of 3. The description tangentially reinforces extraMonthly's effect on principal but adds no syntax or unit detail beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Calculate) plus resource (reducing-balance loan installment and amortization schedule), which is far more precise than the generic 'calculate' siblings like calculate_percentage. An agent can immediately tell what the tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the specialized domain (loan EMI), and no sibling overlaps meaningfully, but there is no explicit when-to-use or when-not-to-use guidance. The description never states assumptions such as fixed-rate or that it is not a general percentage calculator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_percentageCalculate a percentageARead-onlyIdempotentInspect
Calculate percent of a value, what percent one number is of another, percent change, the reverse, an increase or decrease, and margin versus markup.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First value. For of and increase, this is the percent. | |
| b | Yes | Second value. For of and increase, this is the amount. | |
| mode | No | of, is, change, reverse, increase, decrease, or margin. | of |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | Yes | |
| parts | Yes | |
| result | Yes | |
| formula | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that – no note on rounding/precision, how string inputs are parsed, or error behavior for incompatible mode/value combinations. The one useful addition is the margin-vs-markup distinction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence led by the verb, with no filler or repetition of the title. It is a dense enumeration, but every clause maps to a real mode, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema is fully documented, so return-format explanation is not needed. With annotations covering safety and the enum covering modes, the definition is nearly self-sufficient; only precision/error-handling behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including role assignment for a and b per mode, so the schema already carries the semantics. The description's re-listing of the modes largely duplicates the enum rather than adding meaning (e.g., it never clarifies the argument order for 'reverse' or how 'margin' consumes a and b). Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Calculate') plus the resource (percentage) and enumerates the exact computation modes offered, which cleanly separates it from the other calculators in the sibling list (calculate_cidr, calculate_emi, calculate_programmer). An agent can identify the tool's domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode list implies which scenario each variant covers ('what percent one number is of another', 'percent change', 'margin versus markup'), giving some usage signal. But there is no explicit when-to-use/when-not statement and no routing to alternatives such as convert_units or calculate_programmer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_programmerEvaluate a programmer expressionARead-onlyIdempotentInspect
Evaluate integer expressions with C-like precedence (hex/octal/binary literals, bitwise ops, shifts) and report base conversions plus signed/unsigned interpretations.
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | First operand, e.g. '0xFF' or '255' | |
| b | No | Second operand (not needed for 'not') | |
| op | No | Bitwise operation (alternative to expression) | |
| bits | No | Bit width for masking and signed interpretation | 64 |
| expression | No | Integer expression, e.g. '0xFF & 0x0F | (1 << 4)' |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | Yes | |
| bits | Yes | |
| octal | Yes | |
| binary | Yes | |
| signed | Yes | |
| decimal | Yes | |
| unsigned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context (C-like operator precedence, literal formats, masking and signed/unsigned interpretation), but with an output schema present the 'reports base conversions' sentence largely restates the return contract rather than disclosing new behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero filler, front-loading the evaluation semantics and the literal formats an agent needs to construct a valid input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the annotations cover the safety profile; the description supplies the operator-precedence and literal-format context that the schema cannot. The one gap is that the dual input mode (expression vs a/b/op) is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries its own description and example, so the baseline is 3. The description adds no parameter-level meaning: it never clarifies that op/a/b are an alternative to expression, nor what 'bits' masking does beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (evaluate) and a well-scoped resource (integer expressions with C-like precedence, hex/octal/binary literals, bitwise ops), which cleanly separates it from calculate_cidr, calculate_percentage and calculate_emi. It never names a sibling explicitly, so the differentiation is by domain rather than by direct contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'evaluate integer expressions' and 'report base conversions plus signed/unsigned interpretations' tells the agent what it gets, but not when to pick this over e.g. convert_units or calculate_percentage. No exclusions, prerequisites, or note that the tool supports two alternative input modes (expression vs a/b/op).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_http_headersCheck HTTP response headersARead-onlyIdempotentInspect
Fetch a public URL, follow redirects, and grade HSTS, Content-Security-Policy, framing, nosniff, and Referrer-Policy. Private addresses are refused. The body is not stored.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http or https URL. Private addresses are refused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| grade | Yes | |
| checks | Yes | |
| status | Yes | |
| headers | Yes | |
| finalUrl | Yes | |
| elapsedMs | Yes | |
| redirects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, but the description adds meaningful behavioral context beyond them: it follows redirects, grades specific headers, refuses private addresses, and states the body is not stored. The privacy note about the body not being stored is especially valuable and not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and constraints. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with 100% schema description coverage and an existing output schema, the description provides everything an agent needs: purpose, behavior, constraints, and privacy handling. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself already documents the only parameter, including that private addresses are refused. The description repeats 'Public http or https URL' and the private-address restriction without adding new syntax or format details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: fetch a public URL, follow redirects, and grade five named security headers. This clearly distinguishes it from siblings like check_ssl and check_robots_txt, which target different resources. An agent can identify the exact operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context ('Fetch a public URL') and an explicit when-not condition ('Private addresses are refused'). However, it does not name alternative tools or explain when to prefer this over check_ssl or inspect_meta_tags, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_robots_txtCheck robots.txtARead-onlyIdempotentInspect
Fetch a public robots.txt and report whether the wildcard group blocks the site and whether Sitemap lines are absolute. Use this when you have a URL, not a pasted file.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A public page or a robots.txt URL. A page URL is resolved to /robots.txt on that origin. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| issues | Yes | |
| status | Yes | |
| document | Yes | |
| finalUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description adds useful context: it operates on *public* URLs (implying a live network fetch and no auth), and it discloses the two specific checks performed rather than just saying 'check'. No rate-limit or failure-mode detail is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the operation and immediately follow with the usage condition. Every clause earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary, and the description still names the two reported facts. Combined with annotations covering the safety profile, an agent has enough to call it correctly; only edge-case behavior (e.g., missing/404 robots.txt) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single url parameter is fully documented, including the page-URL-to-/robots.txt resolution behavior. The description's URL guidance largely restates the schema, so it adds little beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (public robots.txt) and specifies exactly what it reports: whether the wildcard group blocks the site and whether Sitemap lines are absolute. This is more precise than most siblings, though it does not explicitly contrast itself with adjacent tools like validate_sitemap or check_http_headers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use condition ('when you have a URL') and a when-not exclusion ('not a pasted file'), which steers input format correctly. It stops short of naming an alternative sibling tool, so it isn't a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sslCheck a TLS certificateARead-onlyIdempotentInspect
Connect to a public host on port 443 and report certificate expiry, subject alternative names, protocol, and chain. Private addresses are refused. The handshake times out after 8 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Public hostname or https URL. Only port 443 is contacted. Private addresses are refused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bits | Yes | |
| host | Yes | |
| sans | Yes | |
| chain | Yes | |
| grade | Yes | |
| checks | Yes | |
| issuer | Yes | |
| serial | Yes | |
| subject | Yes | |
| validTo | Yes | |
| protocol | Yes | |
| validFrom | Yes | |
| authorized | Yes | |
| commonName | Yes | |
| fingerprint | Yes | |
| daysRemaining | Yes | |
| authorizationError | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), but the description adds real operational context: private addresses are refused and the handshake times out after 8 seconds. That timeout and the refusal rule are things an agent cannot infer from the schema or annotations, though no rate-limit or redirect/TLS-version caveats are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each load-bearing: the first gives action and outputs, the second and third give hard constraints. No preamble or restated title waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value documentation is not required, yet the description still names the reported fields. Combined with the timeout and address rules, an agent has everything needed to call it correctly and predict failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'host' parameter, so the schema already documents that only port 443 is contacted and private addresses are refused. The description largely restates that constraint rather than adding new semantics such as accepted URL forms or IPv6 handling, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource: 'Connect to a public host on port 443 and report certificate expiry, subject alternative names, protocol, and chain.' It enumerates exactly what is returned, which cleanly separates it from network-adjacent siblings like lookup_dns and check_http_headers without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope constraints (public host, port 443 only, private addresses refused), which tells the agent when the tool will fail. However, it never explicitly says when to choose this over lookup_dns or check_http_headers, and gives no exclusions beyond the address restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_imageCompress an imageARead-onlyIdempotentInspect
Re-encode an image at a quality from 1 to 100, optionally capping the longest edge. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the image as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. | |
| choice | No | original | |
| maxEdge | No | Longest edge in pixels. Omit it to keep the size. | |
| quality | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Compressed image as base64. |
| mime | Yes | |
| after | Yes | |
| bytes | Yes | |
| label | Yes | |
| width | Yes | |
| before | Yes | |
| format | Yes | |
| height | Yes | |
| quality | Yes | |
| filename | Yes | |
| extension | Yes | |
| savedBytes | Yes | |
| savedPercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is partly covered. The description adds genuinely useful behavior beyond them: private/local addresses are refused (SSRF guard), decoded input is capped at 10 MB, and the result is returned as base64. It does not mention rate limits or what happens to non-image input, but the additions are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying distinct information (operation, inputs, limits, return). Constraints and inputs are front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description still notes the base64 return. Inputs and size/SSRF limits are covered, so an agent can call it correctly; the only gap is the unexplained output-format enum.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description compensates for the undocumented 'quality' parameter by stating the 1-100 range (the schema gives it no description). However, the 'choice' enum (original/jpeg/png/webp/avif) is never explained, leaving the output-format parameter uninterpreted in both places. A 3 reflects partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (re-encode/compress an image) plus scope details: quality range and optional longest-edge capping. It separates itself somewhat from resize_image and convert_image by emphasizing re-encoding at a quality level, but never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives input guidance ('Send base64 or a public URL') and constraints, but never says when to reach for this over resize_image, convert_image, or optimize_svg. Usage is implied by the tool's function rather than routed against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_pdfCompress a PDFARead-onlyIdempotentInspect
Recompress embedded images in a PDF. Presets are light, medium, and strong. Send base64 or a public URL. Private addresses are refused. An optional target size tries harder. Returns the PDF and the sizes before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| preset | No | medium | |
| filename | No | ||
| mimeType | No | ||
| targetBytes | No | Optional size ceiling in bytes, such as 102400. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | PDF bytes as base64. The original is returned when compression would grow the file. |
| note | Yes | |
| after | Yes | |
| pages | Yes | |
| saved | Yes | |
| before | Yes | |
| images | Yes | |
| percent | Yes | |
| metTarget | Yes | |
| keptOriginal | Yes | |
| recompressed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, and the description goes beyond them usefully: "Private addresses are refused" discloses an SSRF guard, "An optional target size tries harder" explains a behavioral tradeoff, and it states the return payload. It omits failure behavior when the target cannot be met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short, front-loaded sentences with no filler; the core action leads, input/security/behavior notes follow. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 6-param PDF tool with an output schema, the description covers input methods, presets, the private-address guard, target sizing, and return contents. It could still clarify what each preset actually trades off, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description compensates: it names the preset values (light/medium/strong, which the enum leaves undescribed) and explains that targetBytes is an opt-in effort ceiling, adding meaning beyond the schema's terse "Optional size ceiling in bytes." filename and mimeType remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Recompress embedded images in a PDF" is a specific verb+resource that clearly separates it from compress_image and the other PDF siblings by operating on the PDF itself. It does not explicitly name alternatives or scope boundaries, but the resource framing makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies operating context (presets, base64-or-URL input, an optional target size) but never states when to pick this over compress_image, resample elsewhere, or which preset to prefer for a given goal. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_caseConvert text caseARead-onlyIdempotentInspect
Convert text to camelCase, snake_case, kebab-case, CONSTANT_CASE, and AP or Chicago title case. Returns every style unless one is requested.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to convert. Each line is converted on its own. | |
| style | No | Return one style. Omit it to return every style. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cases | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world behavior, so the safety profile needs no restating. The description adds one behavioral fact — the default of returning every style when none is requested — but that fact is already duplicated in the schema's 'style' description, so the net new information is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the capability set front-loaded and the default behavior stated last. Nothing needs to be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema present, return values need no explanation, and the description covers purpose and default behavior adequately. A minor gap remains: it never notes the per-line conversion semantics (only present in the schema) or the 100k length cap, though those are documented elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description names only 6 of the 16 enum values (omitting lower, upper, sentence, capital, pascal, dot, path, train, alternating, inverse) and adds no format or edge-case semantics beyond what the schema already documents for text and style.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Convert) and resource (text) plus concrete output styles (camelCase, snake_case, kebab-case, CONSTANT_CASE, AP/Chicago title case), which is far more informative than the title alone. An agent can distinguish this from neighbors like convert_units, convert_data_format, or convert_color at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'Returns every style unless one is requested', which tells the agent that omitting 'style' is a valid call. However, it gives no guidance on when to prefer a single style, what to do for mixed/ambiguous input, or when a sibling tool (e.g. format_json) would be more appropriate. Usage is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_colorConvert a color and check contrastARead-onlyIdempotentInspect
Convert HEX, RGB, HSL, OKLCH, or CMYK into every format, name the nearest Tailwind token, and report the WCAG 2 contrast ratio against a background.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | HEX, rgb(), hsl(), oklch(), cmyk(), or a CSS color name. | |
| background | No | Background used for the WCAG contrast ratio. | #ffffff |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| hex | Yes | |
| hsl | Yes | |
| rgb | Yes | |
| cmyk | Yes | |
| oklch | Yes | |
| aaLarge | Yes | |
| aaNormal | Yes | |
| aaaLarge | Yes | |
| tailwind | Yes | |
| aaaNormal | Yes | |
| contrastText | Yes | |
| contrastRatio | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: it performs three distinct operations (multi-format conversion, Tailwind token lookup, WCAG 2 contrast computation) and notes the contrast is measured against a background, which is not obvious from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; every clause names a capability (conversion, token naming, contrast) without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety profile. The description is complete for a simple two-parameter tool; the only minor gap is the absence of usage routing against siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters and their accepted formats. The description only vaguely gestures at the background parameter ('against a background') without adding format or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (convert) and resource (color), and enumerates the input formats (HEX, RGB, HSL, OKLCH, CMYK) plus two additional capabilities (Tailwind token naming, WCAG contrast). This clearly distinguishes it from near-neighbors like convert_units and convert_case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose strongly implies the use case, but there is no explicit when-to-use/when-not-to guidance and no mention of alternatives such as convert_units for non-color conversions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_csv_jsonConvert CSV and JSONARead-onlyIdempotentInspect
Convert CSV to JSON or JSON to CSV. Supports comma, tab, semicolon, and pipe delimiters, an optional header, type inference, and dotted flattening. Inferred numbers that do not fit in a JavaScript number keep their digits.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| header | No | ||
| flatten | No | Used when converting JSON to CSV. Nested keys become dotted columns. | |
| delimiter | No | Comma, tab, semicolon, pipe, or auto. Auto is a comma when writing CSV. | auto |
| direction | No | csv-to-json | |
| inferTypes | No | Used when converting CSV to JSON. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| rows | Yes | |
| error | Yes | |
| output | Yes | |
| columns | Yes | |
| warning | Yes | |
| delimiter | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, so the bar for adding context is lower. The description clears it by disclosing real behavioral traits beyond the annotations: supported delimiters, type inference, dotted flattening, and notably that inferred numbers too large for a JavaScript number retain their digits (precision handling). Missing edge-case detail on malformed input is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the primary action, then supported options, then a precision caveat. No wasted words; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations carry the safety profile. The description is nearly complete for calling correctly, though it omits the schema's note that 'auto' delimiter resolves to comma when writing CSV and gives no guidance versus the convertible sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description compensates by naming delimiters, optional header, type inference, and dotted flattening, which map onto the delimiter/header/inferTypes/flatten parameters and effectively cover most fields. The direction parameter is implied by 'CSV to JSON or JSON to CSV'. It adds meaning beyond the schema for the un-covered fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (convert CSV↔JSON) and even disambiguates both directions, so the core purpose is unambiguous. It does not, however, differentiate itself from the overlapping sibling convert_data_format, which likely covers format conversion too.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative mentions. Notably the sibling convert_data_format is left unaddressed, so an agent has no guidance on which converter to pick. The description explains capabilities but not selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_curlConvert a curl command to codeARead-onlyIdempotentInspect
Parse a curl command and generate equivalent JavaScript fetch, Python requests, Go, PHP, or Rust code.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | fetch | |
| command | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| body | No | |
| method | Yes | |
| headers | Yes | |
| snippet | Yes | |
| warnings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds nothing behavioral on top of the name/title — no note on invalid-command handling, input size limits, or which curl features are unsupported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action, input, and outputs. Zero waste, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter converter with an output schema present, the description is close to sufficient: it says what is converted and to which languages. Minor gaps remain around edge cases and unsupported curl constructs, but nothing essential to calling it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries some burden. It names all five target languages matching the enum, which helps confirm the 'target' parameter's meaning, and 'command' is transparently the curl string. However, it adds no syntax, format, or size-limit (20000 chars) detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Parse') and resource ('a curl command') with the concrete output forms ('JavaScript fetch, Python requests, Go, PHP, or Rust code'). This clearly distinguishes it from generic siblings like convert_data_format or analyze_har.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (translating a curl command into code), but there is no explicit when/when-not guidance and no mention of sibling alternatives such as analyze_har or convert_data_format. Adequate but not instructive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_currencyConvert an amount between currenciesARead-onlyIdempotentInspect
Convert money between ISO 4217 currencies using live exchange rates from the Frankfurter API, fetched through the SSRF-safe outbound guard. Supports historical dates.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO 4217 currency code. | EUR |
| date | No | Historical date; omit for the latest rates. | |
| from | No | ISO 4217 currency code. | USD |
| amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| to | No | |
| date | No | |
| from | No | |
| rate | No | |
| error | No | |
| amount | No | |
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuine context beyond that: rates come live from the Frankfurter API and pass through an SSRF-safe outbound guard, which is useful for understanding latency and external dependency. It omits failure modes for invalid currency codes, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler; the core operation leads and supporting detail follows. The mention of the SSRF-safe outbound guard is slightly implementation-flavored but still informative and brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description covers the source of rates and the historical-date capability, which is nearly everything an agent needs; only error behavior for unknown currency codes is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% and all four parameters are constrained (ISO codes with min/max length, date regex, amount bounds). The description's 'ISO 4217 currencies' and 'historical dates' restate what the schema already says, adding no format or interpretation detail. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Convert) and resource (money between ISO 4217 currencies), which cleanly separates it from convert_units, convert_color, and convert_data_format. The rate source is named, so an agent knows exactly what operation it is getting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to prefer this tool over neighbors such as convert_units, and no exclusions or prerequisites. 'Supports historical dates' hints at a use case but does not frame selection between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_data_formatConvert JSON, YAML, TOML, or XMLARead-onlyIdempotentInspect
Convert between JSON, YAML, TOML, and XML. Auto-detects the source. Numbers that do not fit in a JavaScript number keep their digits. Errors include a line and column. TOML refuses null and a non-table root.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | json | |
| from | No | auto | |
| text | Yes | The source document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| line | Yes | |
| error | Yes | |
| column | Yes | |
| output | Yes | |
| detected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond them: large numbers preserve digits, errors carry line and column, and TOML rejects null and non-table roots. These are real gotchas an agent would otherwise discover only by hitting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, format scope front-loaded, each one carrying distinct information (scope, detection, numeric precision, error shape, TOML constraint). No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description covers inputs, detection, and error/edge behavior. Minor gap: no mention of any size limits or hints on choosing a target format, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only `text` is documented), but both `to` and `from` are enums with defaults that the schema already enumerates. The description adds that source detection is automatic, matching the `from: auto` default, and nothing about `to` beyond the format list. Adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Convert") plus the exact resource formats (JSON, YAML, TOML, XML), which implicitly separates it from siblings like format_json (formatting only) and convert_csv_json (CSV involved). An agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies "Auto-detects the source," which hints that the `from` parameter can be left alone, but it never states when to choose this over format_json or validate_json_schema. Usage is implied through the behavior, not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_imageConvert an imageARead-onlyIdempotentInspect
Convert an image to JPEG, PNG, WebP, or AVIF. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the image as base64. HEIC is not decoded here.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. | |
| target | No | jpeg |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Encoded image as base64. |
| mime | Yes | |
| bytes | Yes | |
| width | Yes | |
| height | Yes | |
| source | Yes | |
| filename | Yes | |
| extension | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral detail beyond those annotations: private-address refusal, a 10 MB decoded size cap, base64 output, and the HEIC limitation. It does not describe auth or rate-limit behavior, keeping it at 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each carrying a distinct useful fact, with the core action and supported formats front-loaded. There is no repetition, filler, or buried constraint; the operational limits follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, output schema, and 50% schema description coverage, the description covers the essential calling information: input forms, address restriction, size cap, output form, and an important unsupported case. It could still mention the target default and the optional filename/mimeType parameters, but nothing critical for a successful invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%. The description reinforces that input is base64 or a public URL and lists the target formats, but those details largely mirror the existing schema descriptions and enum values. It adds the HEIC-not-decoded limitation, yet never mentions filename, mimeType, or the target default, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Convert) and resource (image), names the supported output formats, and makes clear it handles base64 or public URLs. An agent can distinguish this from sibling image tools like compress_image, resize_image, and crop_image because the stated purpose is format conversion rather than compression or geometric editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: input via base64 or public URL, private addresses refused, 10 MB decoded cap, and HEIC not decoded. It does not explicitly name alternatives for unsupported cases or state when to prefer compress_image or resize_image, so it stops short of full when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_json_to_typesConvert JSON to type definitionsARead-onlyIdempotentInspect
Infer types from a JSON document and generate TypeScript interfaces, Zod schemas, Python Pydantic models or dataclasses, and Go structs.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | ||
| targets | No | ||
| rootName | No | Root |
Output Schema
| Name | Required | Description |
|---|---|---|
| outputs | Yes | |
| warnings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds that the tool infers types and produces code, but says nothing about how the source JSON is treated (sample vs. full document), size limits, or behavior on malformed input, so it adds only modest context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the core verb and the deliverable outputs are stated immediately and nothing is repeated from the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format explanation is unnecessary, and annotations cover the safety profile. The definition is close to complete for this simple codegen tool; the remaining gap is the undocumented rootName parameter and the absence of any input-validity note for the JSON payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. The enumerated output targets do map usefully onto the 'targets' enum, but 'rootName' is never mentioned and the required 'json' parameter's format (a valid JSON document string, capped at 500000 chars) is undocumented in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (infer types from JSON and generate type definitions) and enumerates the exact outputs: TypeScript interfaces, Zod schemas, Pydantic models/dataclasses, and Go structs. This is easily separable from the many generic convert_* siblings such as convert_data_format and convert_csv_json, which do value transformations rather than code generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description: you bring a JSON document and receive generated type definitions. However, there is no explicit when-to-use guidance and no routing against nearby siblings (e.g. format_json, validate_json_schema, convert_data_format) that an agent might otherwise consider for JSON work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_markdown_htmlConvert Markdown and HTMLBRead-onlyIdempotentInspect
Convert GitHub-flavored Markdown to HTML, or HTML to Markdown. to is html or markdown. sanitize strips scripts from the text output. The conversion does not fetch a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | html | |
| text | No | # Hello | |
| sanitize | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| output | Yes | |
| direction | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld=false, so the safety profile is covered. The description adds that sanitize strips scripts from the output and that no URL is fetched, but it never states whether sanitization applies to HTML→Markdown as well, nor what happens to unsupported Markdown constructs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary action. 'to is html or markdown' is telegraphic and slightly awkward, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the safety profile is annotation-covered. Still missing for a 3-parameter tool: any description of the 'text' input and whether sanitize is ignored in the Markdown direction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It explains 'to' (redundant with the enum) and 'sanitize' (genuinely additive beyond the boolean name), but says nothing about 'text' — the core input payload — so coverage is only partial. Partial compensation lands at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, with both directions named ('Markdown to HTML, or HTML to Markdown'), and adds the scope boundary that it does not fetch a URL, which implicitly separates it from fetch_page_markdown. It stops short of naming any sibling explicitly or differentiating from convert_data_format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The direction is selected via 'to is html or markdown', which is usable guidance, and the no-URL-fetch sentence rules out the fetching sibling. There is no explicit when-to-use/when-not statement or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_unitsConvert unitsARead-onlyIdempotentInspect
Convert length, mass, volume, temperature, area, speed, time, and data size. Decimal bytes (kB, MB) and binary bytes (KiB, MiB) are separate categories.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target unit id from the same category. | |
| from | Yes | Source unit id, such as m, C, MB, or MiB. | |
| value | Yes | ||
| category | Yes | ||
| precision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so safety behavior is fully covered structurally. The description adds only the decimal-vs-binary category caveat and says nothing about rounding behavior or how the precision default (6) affects results — useful but thin on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the scope enumeration front-loaded and the disambiguating caveat immediately after. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations carry the safety profile; the description covers scope and the tricky data-size split. The remaining gap is behavioral detail on precision/rounding, which an agent would need to produce predictable output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%: 'to' and 'from' are documented in the schema, while 'value' (string|number), 'category', and 'precision' are not. The description partially compensates by disambiguating the two data-size categories, which is the highest-risk parameter choice, but it says nothing about precision, rounding, or the accepted value formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Convert) plus the resource (units) and enumerates the nine supported categories, which cleanly separates it from look-alike siblings such as convert_data_format, convert_color, and convert_unix_timestamp. It stops short of naming which sibling to prefer for adjacent tasks, so it is clear but not sibling-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not statement, but the category list implies the applicability surface, and the note that decimal (kB, MB) and binary (KiB, MiB) bytes are separate categories is real selection guidance that prevents a common category mistake. Still, nothing tells the agent how to choose between this tool and e.g. calculate_programmer or convert_data_format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_unix_timestampConvert a unix timestampARead-onlyIdempotentInspect
Convert epoch seconds, milliseconds, microseconds, or nanoseconds to ISO-8601 and RFC 2822 in an IANA time zone, or convert a calendar time back to epoch.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | ||
| hour | No | ||
| unit | No | auto | |
| year | No | ||
| input | No | Unix timestamp, ISO-8601, RFC 2822, or now. Leave it empty when year, month, and day are set. | |
| month | No | ||
| minute | No | ||
| second | No | ||
| timeZone | No | IANA time zone, such as UTC or America/New_York. | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | Yes | |
| isoUtc | Yes | |
| offset | Yes | |
| rfc2822 | Yes | |
| seconds | Yes | |
| weekday | Yes | |
| isoLocal | Yes | |
| relative | Yes | |
| timeZone | Yes | |
| milliseconds | Yes | |
| alternateIsoUtc | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, closed-world), so the bar is lower. The description usefully adds the output formats and time-zone-aware conversion behavior, but says nothing about how ambiguous epoch values are disambiguated under unit='auto' or how conflicts between 'input' and the calendar fields are resolved, which is the risky part of this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs the input units, both output formats, time-zone scoping, and the bidirectional capability with zero filler. Nothing can be cut without losing semantic content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations handle safety. However, for a 9-parameter tool with 22% schema coverage and a dual input mode, the description omits how to supply calendar input, how the five unit options interact with 'auto', and that 'input' also accepts ISO-8601/RFC 2822/'now' — gaps an agent would hit on first use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22%, so the description carries most of the burden — and it does not. Six numeric calendar parameters (year, month, day, hour, minute, second) and the 'unit' enum are never mapped to meaning, and the crucial mode-selection rule (leave 'input' empty when calendar fields are set) appears only in the schema, not the description. The unit and time-zone mentions largely restate enum/default values already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (convert) and resource (unix timestamp/epoch) plus the exact accepted units (s, ms, us, ns) and output formats (ISO-8601, RFC 2822). It also declares the reverse direction ('calendar time back to epoch'), which clearly separates it from the sibling date_difference without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the two usage modes (epoch input vs. calendar components) so an agent can infer direction, but it never states when to prefer this tool over date_difference or convert_data_format, nor does it explain the 'auto' unit-detection behavior that governs the no-unit case. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_textCount words and charactersARead-onlyIdempotentInspect
Count words, code points, graphemes, sentences, and paragraphs, and compare the length with SEO and social limits.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to count. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| words | Yes | |
| graphemes | Yes | |
| platforms | Yes | |
| sentences | Yes | |
| characters | Yes | |
| paragraphs | Yes | |
| uniqueWords | Yes | |
| readingLabel | Yes | |
| speakingLabel | Yes | |
| charactersNoSpaces | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is fully covered. The description does add a genuine behavioral trait beyond the name — the SEO/social limit comparison — but omits the 200,000-character input cap and says nothing about how results are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero padding, front-loading the enumeration of counted units before the comparison feature. Only minor awkwardness in the trailing clause keeps it from being exemplary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. The description covers the tool's capability set adequately; only the input size limit and the count methodology remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already documents 'text'. The description adds no syntax, formatting, or edge-case guidance (e.g., how graphemes vs code points are counted) beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count) and enumerates the exact units measured: words, code points, graphemes, sentences, paragraphs, plus an SEO/social limit comparison. This implicitly separates it from the nearest sibling count_tokens, though it never names that alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of SEO and social limits suggests the use case of validating copy against platform limits, but there is no explicit when-to-use statement, no exclusions, and no pointer to count_tokens for token-based counting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_tokensCount tokensARead-onlyIdempotentInspect
Count tokens with the o200k or cl100k encoder and price the count against the published model table. Claude and Gemini rows are estimates, not those vendors' tokenizers.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The prompt or document to count. | |
| encoding | No | o200k | |
| modelIds | No | Price rows to return. Unknown ids are rejected. | |
| cachedRatio | No | ||
| outputTokens | No | ||
| requestsPerDay | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| chars | Yes | |
| count | Yes | |
| words | Yes | |
| prices | Yes | |
| encoding | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds genuine value beyond that by disclosing that Claude and Gemini rows are estimates rather than those vendors' real tokenizers — an important accuracy caveat an agent needs when reporting numbers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the core capability plus the encoder choice are front-loaded. The caveat sentence is short and earns its place by preventing a misread of the estimate rows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The remaining gap is the cost-modeling parameters (cachedRatio, outputTokens, requestsPerDay), which an agent cannot interpret from either the description or the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it partially does: 'o200k or cl100k encoder' explains encoding, and 'published model table' explains modelIds. However, cachedRatio, outputTokens, and requestsPerDay — the parameters that shape the cost model — are left entirely unexplained in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Count tokens') and adds scope the siblings lack: the o200k/cl100k encoder choice and pricing against a model table. This implicitly separates it from count_text (character/word counting), though it never names that sibling explicitly, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative tool is mentioned despite count_text being a plausible competitor for text-length tasks. The accuracy caveat about Claude/Gemini rows is a limitation note, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crop_imageCrop an imageARead-onlyIdempotentInspect
Crop an image to a pixel box or a 0 to 1 ratio box. circle cuts a round mask. format is png, jpeg, or webp. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the image as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| file | Yes | The image. Provide url or data. | |
| unit | No | px is source pixels. ratio is a 0 to 1 share of the source. | px |
| width | No | ||
| circle | No | ||
| format | No | png | |
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Cropped image as base64. |
| mime | Yes | |
| bytes | Yes | |
| width | Yes | |
| height | Yes | |
| filename | Yes | |
| extension | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, and the description still adds real operational context: private/local addresses are refused, the decoded file is capped at 10 MB, and the result is returned as base64. Those limits and the output encoding are not derivable from the annotations and directly affect how an agent prepares the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six short, information-dense sentences, front-loaded with the core action and then limits and output, with almost no filler. There is some duplication of what the schema enum fields already say about px/ratio and format, which keeps it from being maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return structure, yet it still flags the base64 return. It covers both input modes and the size/address restrictions, leaving only the coordinate fields (x/y/width/height) under-explained for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description needs to compensate, and it does for file (base64 or public URL), unit (px vs ratio, restated), circle, and format. However x, y, width, and height have no schema descriptions and no explanation in the description — the default of 1 for both width and height is especially ambiguous — so the compensating coverage is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Crop an image') and scopes it ('to a pixel box or a 0 to 1 ratio box'), which is enough to separate it from convert_image or resize_image without opening a schema. It stops short of explicitly naming which sibling handles the non-cropping cases, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description mentions the px vs ratio choice, the circle mask, and the format options, which hints at the decisions a caller makes. There is no when-to-use-this-vs-an-alternative guidance and no statement of prerequisites or exclusions beyond the input-source restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date_differenceDifference between two datesARead-onlyIdempotentInspect
Count calendar days, elapsed time, and business days between two dates. Business days skip weekends and any YYYY-MM-DD holidays you list.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date as YYYY-MM-DD. | |
| endTime | No | End time as HH:MM or HH:MM:SS. Defaults to midnight. | |
| holidays | No | Weekday holidays to exclude from business days, one YYYY-MM-DD per line. | |
| startDate | Yes | Start date as YYYY-MM-DD. | |
| startTime | No | Start time as HH:MM or HH:MM:SS. Defaults to midnight. | |
| includeEnd | No | Count the end date as well as the days between. |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | |
| sign | Yes | |
| hours | Yes | |
| weeks | Yes | |
| years | Yes | |
| months | Yes | |
| minutes | Yes | |
| seconds | Yes | |
| extraDays | Yes | |
| totalDays | Yes | |
| totalHours | Yes | |
| countedDays | Yes | |
| holidayDays | Yes | |
| weekendDays | Yes | |
| businessDays | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so safety is covered. The description adds genuine semantic behavior: business days exclude weekends and user-listed holidays, clarifying what the calculation actually does beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler, and the primary operation is front-loaded ahead of the business-day qualification. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations carry the safety profile. The description is complete for calling the tool correctly; only minor edge-case semantics (e.g. includeEnd interaction) are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents startDate, endDate, startTime, endTime, holidays and includeEnd with formats and defaults. The description restates the holidays format already present in the schema and adds nothing new, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count) applied to a specific resource (calendar days, elapsed time, business days between two dates), and even enumerates the three distinct counting modes. There is no sibling tool doing date arithmetic, so no differentiation is needed and the purpose is fully self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the business-day mode is useful ('skip weekends and any holidays you list') but gives no explicit when-to-use guidance or exclusion criteria. With no competing sibling for date math, implied usage is the realistic ceiling here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_jwtDecode a JWTARead-onlyIdempotentInspect
Decode a signed JSON Web Token into its header, payload, and registered claims. Dates are absolute ISO timestamps. The signature is not checked.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | A signed JWT, with or without a Bearer prefix. The signature is not verified. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| kind | Yes | |
| error | Yes | |
| claims | Yes | |
| header | Yes | |
| payload | Yes | |
| signature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-open-world, so the safety profile is covered. The description adds meaningful context beyond that: that signature verification is NOT performed and that dates are rendered as absolute ISO timestamps – both are non-obvious behavioral facts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the two most decision-relevant caveats (timestamp format, unverified signature). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only utility with an output schema and full annotation coverage, the description covers purpose, output shape, and the key security caveat. Only explicit routing/usage guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single token parameter, and the schema itself documents the optional Bearer prefix. The description adds no parameter-specific detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Decode) and resource (a signed JSON Web Token), and enumerates what the agent gets back: header, payload, and registered claims. Since no sibling tool decodes JWTs, this is unambiguously distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'signature is not checked' caveat implicitly steers the agent away from using this for verification, but there is no explicit when-to-use or alternative named (e.g., where to verify a signature). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_textDiff two textsARead-onlyIdempotentInspect
Compare two texts by line, word, or character, or compare JSON so object key order does not matter. Returns an inline diff, side-by-side rows for line and JSON modes, and a unified patch.
| Name | Required | Description | Default |
|---|---|---|---|
| left | Yes | The original text. | |
| mode | No | line | |
| right | Yes | The changed text. | |
| ignoreWhitespace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| rows | Yes | |
| unit | Yes | |
| added | Yes | |
| error | Yes | |
| patch | Yes | |
| pieces | Yes | |
| removed | Yes | |
| unchanged | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and idempotentHint, so the safety profile is covered. The description adds that output format varies by mode (inline diff, side-by-side rows, unified patch), which is useful context, but with an output schema present this is somewhat redundant and no auth/rate-limit/permission behavior is discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler: the first states what is compared and the available modes, the second states what is returned. It is front-loaded and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shapes need not be described, and the description still usefully notes the mode-dependent formats. The main gap is the undocumented ignoreWhitespace parameter; otherwise it is adequate for a four-parameter, read-only comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (left and right are described; mode and ignoreWhitespace are not). The description partially compensates by naming the mode values and explaining JSON mode's key-order insensitivity, but ignoreWhitespace is left completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Compare) and resource (two texts) plus the supported granularities (line, word, character, JSON). No sibling tool is a diff tool, so an agent can identify this one unambiguously from the tool list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it lists modes and gives one selection hint for JSON mode ('so object key order does not matter'). There is no explicit when-to-use, when-not-to-use, or prerequisite guidance, leaving mode choice mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_graphqlExecute a GraphQL queryARead-onlyIdempotentInspect
Send a GraphQL query with optional variables and headers to a public http or https endpoint on port 80 or 443 and return the response data or errors. Local, private, and internal addresses are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| headers | No | ||
| endpoint | Yes | ||
| timeoutMs | No | ||
| variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| errors | No | |
| status | Yes | |
| durationMs | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds genuine value beyond that: the SSRF-style refusal of local/private/internal addresses and the note that it returns 'response data or errors', which is not derivable from the annotations. It still omits auth handling and timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action first and the security boundary second. Every clause earns its place; there is no filler or repetition of the name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the description still briefly signals data-or-errors. For a 5-parameter tool with nested objects and no schema descriptions, it is mostly complete for invocation, with timeoutMs and header/auth conventions being the notable omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the whole burden. It flags variables and headers as optional and constrains the endpoint to public http/https on 80/443, but timeoutMs (default 15000, range 1000-60000) is entirely undocumented and no format or default hints are given for the others. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Send) and resource (a GraphQL query) and pinpoints the target scope (public http/https endpoint on port 80/443). No sibling tool performs GraphQL requests, so the agent can identify it immediately without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the operational boundary ('public http or https endpoint on port 80 or 443') and an explicit exclusion ('Local, private, and internal addresses are refused'), which implies when it can be used. However, it never names alternatives or states when to prefer this over a sibling like fetch_page_markdown for non-GraphQL HTTP work, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_chmodExplain a chmod modeARead-onlyIdempotentInspect
Convert an octal or symbolic file mode into octal, symbolic notation, and a chmod command, including setuid, setgid, and the sticky bit.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Octal such as 755 or 4755, or symbolic such as rwxr-xr-x. | |
| path | No | file |
Output Schema
| Name | Required | Description |
|---|---|---|
| octal | Yes | |
| setgid | Yes | |
| setuid | Yes | |
| sticky | Yes | |
| command | Yes | |
| symbolic | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description usefully adds that setuid, setgid, and the sticky bit are handled, but says nothing about invalid-input handling or the effect of the path parameter, so it clears the annotation-lowered bar only modestly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the input, the outputs, and the special-bit coverage with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and annotations cover the safety profile, so the core is complete. The one gap is the undocumented path parameter and any note on malformed-mode behavior, which is minor for this simple converter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the mode parameter is documented in the schema (and its octal/symbolic forms are merely restated in the description), while the path parameter has only a default of 'file' and no description anywhere. The description adds no syntax or format detail beyond what the schema already provides, so the baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Convert) plus the exact resource (an octal or symbolic file mode) and enumerates the output forms (octal, symbolic notation, chmod command). This distinguishes it cleanly from the similarly-named explain_cron sibling, which operates on a different resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its own use case by naming the input and output forms, but it never states when to reach for this tool versus an alternative, nor any exclusions or prerequisites. An agent gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_cronExplain a cron expressionARead-onlyIdempotentInspect
Turn a cron expression into English, the next UTC run times, and snippets for crontab, GitHub Actions, Vercel, Kubernetes, and node-cron.
| Name | Required | Description | Default |
|---|---|---|---|
| now | No | ISO timestamp used as the clock. Omit it to use the current time. | |
| dialect | No | standard | |
| timeZone | No | IANA time zone used to list the next runs. Hosted schedules stay in UTC. | UTC |
| expression | Yes | A cron expression, including @daily or @reboot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| runs | Yes | |
| error | Yes | |
| valid | Yes | |
| fields | Yes | |
| english | Yes | |
| snippets | Yes | |
| hostedNote | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds the useful fact that output spans multiple target formats, but says nothing about how invalid or ambiguous expressions are handled, which is the main behavioral question for a parser.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the output list second. No filler, no redundancy, appropriately sized for a read-only utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotation set fully covers safety for this read-only tool. The remaining shortfall is the undocumented dialect parameter and the absence of any note on error handling for malformed expressions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says nothing about the four parameters; all meaning comes from the schema, which documents expression, now, and timeZone (75% coverage). The dialect enum has no description in either place, so the description leaves that ambiguity unaddressed rather than compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb-and-resource ('Turn a cron expression into English') and enumerates the concrete artifacts produced: next UTC run times plus snippets for crontab, GitHub Actions, Vercel, Kubernetes, and node-cron. No sibling tool covers cron parsing, so the agent can route unambiguously from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (you have a cron expression and want it explained), but there is no explicit when/when-not guidance, no statement about invalid-expression behavior, and no named alternative. No sibling competes, so the omission is low-risk but still a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_pdf_textExtract PDF textARead-onlyIdempotentInspect
Read the selectable text layer of a PDF. Returns per-page text, markdown-style headings, and an o200k token count. Does not OCR scans. Send base64 or a public URL. Private addresses are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| filename | No | ||
| mimeType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| pages | Yes | |
| tokens | Yes | |
| markdown | Yes | |
| pageCount | Yes | |
| emptyPages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: no OCR fallback, SSRF-style refusal of private/local addresses, and the shape of the return (per-page text, headings, token count).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action, then return shape, then input method, then the constraint. Every sentence carries distinct information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return description is a bonus rather than a necessity, and the safety profile is in annotations. The only real gap is the two undocumented parameters (filename, mimeType); otherwise an agent has everything needed to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: url and data are documented in the schema, while filename and mimeType are undocumented in both places. The description reinforces the either/or input choice and repeats the private-address rule, but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the selectable text layer of a PDF') with a scope qualifier that separates it from OCR-based readers. It effectively distinguishes itself from sibling read_image_text via 'Does not OCR scans', though it never names a sibling outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-not guidance ('Does not OCR scans') and input routing ('Send base64 or a public URL'), plus the constraint that private addresses are refused. No alternative tool is named for scanned documents, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_page_markdownFetch a page as MarkdownARead-onlyIdempotentInspect
Fetch a public HTML page and return the article as Markdown, plus a title, excerpt, and o200k token count. Private and local addresses are refused. The response is capped at 800 KB.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http or https URL. Private and local addresses are refused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| chars | Yes | |
| title | Yes | |
| tokens | Yes | |
| excerpt | Yes | |
| markdown | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds genuinely useful behavior the annotations do not: it refuses private/local addresses and caps the response at 800 KB. It does not disclose rate limits or that the page is fetched without JS rendering, but the added constraints are real value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the core action and return shape front-loaded and the two limits (address restriction, size cap) following. Every sentence carries independent information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't detail return values, and annotations cover the safety profile; the description fills the remaining gaps (address policy, size cap). Only minor omissions remain, such as whether JavaScript-rendered content is fetched or how failures are reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already states 'Public http or https URL. Private and local addresses are refused.' The description repeats that same constraint rather than adding format, redirect, or query-string semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (a public HTML page), plus the exact transformation (article to Markdown) and the accompanying outputs (title, excerpt, token count). This is clearly distinct from siblings like check_http_headers or validate_sitemap, which inspect rather than extract content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Scope is implied by 'public HTML page' and by the private/local refusal constraint, so an agent can infer when this applies. However, there is no explicit when-to-use statement, no mention of alternatives (e.g. extract_pdf_text for PDFs, check_robots_txt for crawl policy), and no prerequisites named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_pdf_formFill a PDF formARead-onlyIdempotentInspect
Fill an interactive PDF form's text fields, checkboxes, dropdowns, and radios by field name, with an option to flatten the result. Pass inspectOnly to list the fields first.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | PDF as base64, a data URI, or a public URL. Private addresses are refused. 10 MB cap. | |
| values | No | Field name to value. Checkboxes take booleans; dropdowns and radios take one of their options. | |
| flatten | No | Flatten the form so fields become plain page content. | |
| inspectOnly | No | List the form fields without changing anything. |
Output Schema
| Name | Required | Description |
|---|---|---|
| No | Filled PDF bytes, base64 encoded. | |
| fields | No | Detected form fields (inspectOnly). |
| filled | Yes | |
| mimeType | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and purity profile is largely covered. The description usefully clarifies that filling targets named form fields and that flattening is optional, but says nothing about what happens to unfilled fields, existing values, or how failures (e.g., a non-interactive PDF, a refused private URL) surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The core action and supported field types lead, and the optional behaviors (flatten, inspectOnly) follow in the order an agent would need them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all four parameters are named in prose. What remains thin is failure behavior and the semantics of partial fills, which matters for a form-filling tool but is not essential to selecting or invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents file, values, flatten and inspectOnly in detail, including the 10 MB cap and checkbox/radio value rules. The description only mirrors those points at a high level and adds no syntax or format detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fill) on a specific resource (an interactive PDF form) and enumerates the field types it handles: text fields, checkboxes, dropdowns, radios. This cleanly separates it from the other PDF siblings (extract_pdf_text, sign_pdf, flatten-style tools) without the agent needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Recommendations the workflow order explicitly: 'Pass inspectOnly to list the fields first,' which tells the agent how to discover field names before filling. It does not name any when-not conditions or alternatives (e.g., for non-interactive PDFs the agent should use another tool), so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_jsonFormat and validate JSONARead-onlyIdempotentInspect
Pretty-print or minify JSON. A number that does not fit in a JavaScript number keeps the digits you sent. Returns the formatted text when it is valid, or the line and column of each syntax error.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON text to format or validate. | |
| indent | No | 2 | |
| minify | No | ||
| sortKeys | No | Sort object keys. Array order is kept. |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | Yes | |
| errors | Yes | |
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-open-world, so safety is covered. The description adds genuinely useful behavior beyond that: big integers keep their original digits (a real precision guarantee), and invalid input returns line/column per syntax error, which tells the agent exactly how failures surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler, and the primary action is front-loaded in sentence one. Each remaining sentence adds a distinct fact (number precision, success/failure return shape) rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description needn't detail return values, and the annotations carry the safety profile. What it adds (precision guarantee, error positions) makes the tool usable, though it omits which sibling to choose for schema validation versus raw formatting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'json' and 'sortKeys' are documented, while 'indent' (enum with no description) and 'minify' (boolean with no description) are not. The description partially compensates by contrasting pretty-print with minify and clarifying that the input's numeric digits are preserved, but it says nothing about indent values or key-sorting behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair (pretty-print/minify) and resource (JSON), which is distinct from most siblings. However, it never names close alternatives like minify_code or validate_json_schema, and the added 'or validate' framing overlaps with validate_json_schema's territory, so the agent gets no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action ('pretty-print or minify JSON') and by noting that invalid input yields error positions, so an agent can infer this is the tool for formatting/validating raw JSON text. There is no explicit when-to-use versus alternatives such as validate_json_schema, convert_json_to_types, or minify_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_sqlFormat SQLBRead-onlyIdempotentInspect
Format SQL for PostgreSQL, MySQL, BigQuery, Snowflake, and other dialects. Choose keyword case and an indent of 2 or 4 spaces.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL to format. | |
| indent | No | ||
| dialect | No | postgresql | |
| keywordCase | No | upper |
Output Schema
| Name | Required | Description |
|---|---|---|
| sql | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds the supported dialect range but says nothing about behavior beyond the options, such as how unsupported syntax is handled or error output. Adequate but thin against an already-annotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the primary purpose front-loaded and no filler. It is efficient, though the second sentence reads as option listing rather than routing guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers the tool's scope and main options. Given the low schema coverage, a bit more detail on the dialect and keywordCase enums would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'sql' is documented), so the description must compensate. It partially does by explaining keyword case, indent values (2 or 4 spaces), and dialects, but it omits the full dialect enum, the keywordCase enum values, and defaults, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Format) and resource (SQL) and names several concrete dialects, which distinguishes it from the JSON/code formatters among siblings. It does not explicitly contrast with format_json or minify_code, but the SQL-specific framing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence only describes configurable options (keyword case, indent), not when to use this tool versus alternatives or any prerequisites. There is no when/when-not guidance; usage is merely implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_fake_dataGenerate lorem ipsum or fake rowsBRead-onlyIdempotentInspect
Generate seeded lorem ipsum, or fake JSON, CSV, or SQL rows from a list of field types.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | paragraphs | |
| mode | No | lorem | |
| rows | No | ||
| seed | No | ||
| count | No | ||
| table | No | records | |
| fields | No | ||
| format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| format | Yes | |
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so a safe, deterministic, offline operation is established. The description's word 'seeded' usefully reinforces determinism, but it never explains how seed, count, and rows interact or what bounds constrain output. With annotations covering the safety profile, this is a modest but real addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the generator concept and the two output shapes front-loaded, no filler. It is arguably under-specified rather than bloated, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover safety and determinism. For an 8-parameter tool with 0% schema coverage and two interacting modes, however, the description is too thin to let an agent call it correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden across 8 parameters, and it only loosely maps a few: 'seeded' hints at seed, 'JSON, CSV, or SQL' hints at format, and 'list of field types' hints at the fields array. It says nothing about mode, kind, count versus rows (a critical ambiguity: count drives lorem length, rows drives fake-row volume), or table, leaving more than half the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Generate') and two concrete deliverables: seeded lorem ipsum and fake JSON/CSV/SQL rows from field types. An agent can tell it is a data-generator, distinguishing it from near-siblings like generate_uuid, generate_password, or generate_totp by the 'rows from field types' scope, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: no explanation of when to pick mode=lorem versus mode=rows, no prerequisites, no exclusions relative to the many other generate_* siblings. The two modes are named but the condition that selects each is left entirely to inference from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_faviconGenerate a favicon packARead-onlyIdempotentInspect
Build a favicon pack from an image or up to three letters. The ZIP contains favicon.ico, PNG sizes, a web manifest, an HTML snippet, and a Next.js metadata snippet. Letters are drawn with a built-in bitmap font so the result does not depend on a system font. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | A square-or-any image. Provide file or text. | |
| name | No | App | |
| text | No | Up to three letters drawn as the mark. Provide file or text. | |
| color | No | #ffffff | |
| background | No | #111111 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | ZIP of the favicon files as base64. |
| html | Yes | |
| mime | Yes | |
| bytes | Yes | |
| preview | Yes | 32 pixel PNG as base64. |
| filename | Yes | |
| manifest | Yes | |
| nextMetadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent hints, it discloses concrete behavioral traits: the exact ZIP contents, deterministic letter rendering via a built-in bitmap font (no system font dependency), refusal of private addresses, and the 10 MB decoded cap. This is exactly the kind of operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each carrying distinct information: purpose, output contents, rendering behavior, input forms, and constraints. Purpose is front-loaded and there is no filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers inputs, constraints, and output composition for a 5-parameter tool, and the presence of an output schema means return shape need not be restated. The only shortfall is unaddressed semantics for the color and background parameters and the text-length discrepancy, which are minor rather than blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 40%, the description compensates well for the file and text parameters (mutual exclusivity, base64/URL forms, size cap) and for the nested file object. However, name, color, and background get no semantic treatment, and the 'three letters' phrasing sits awkwardly against the text param's maxLength of 8, leaving that unreconciled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and deliverable ('Build a favicon pack') plus its two input modes (image or up to three letters), which cleanly separates it from image siblings like convert_image, resize_image, and crop_image. An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear input-selection context ('Provide file or text', 'Send base64 or a public URL') and implies the web-asset use case in the first sentence. It stops short of naming alternatives or when-not-to-use conditions, so it lacks the exclusions that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_invoiceGenerate an invoice or quote PDFARead-onlyIdempotentInspect
Build an invoice or quote PDF from company and client details, line items with quantities and rates, a tax rate, and an optional percent or flat discount. All money is computed in integer cents, so there are no float rounding errors. Returns the PDF as base64 plus the total.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Invoice or quote PDF as base64. |
| bytes | Yes | PDF size in bytes. |
| currency | Yes | ISO currency code used for the invoice. |
| totalCents | Yes | Grand total in integer cents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: money is computed in integer cents to avoid float rounding errors, and it returns base64 PDF plus total. It stops short of stating size limits or failure modes, but it clears the lower post-annotation bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core purpose front-loaded, followed by the numeric-precision guarantee and the return shape. No padding or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema is present so return values need not be detailed, and the description still states the base64+total shape. For a deeply nested single-object tool with 0% schema coverage it covers the salient fields, but leaves date formats, currency pattern, and the notes/number fields entirely to the schema, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description compensates well by naming the major input groups: company and client details, line items with quantities and rates, tax rate, and optional percent-or-flat discount. This maps closely to the nested from/to, items, taxRate, and discount properties, though currency format, date fields, and notes are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Build) and resource (invoice or quote PDF) and enumerates the inputs it consumes (company/client details, line items, tax rate, discount). An agent can distinguish it from siblings like generate_resume or images_to_pdf without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternatives are named. The invoice-vs-quote choice is handled by the schema's kind enum rather than by the description, so the agent gets no routing help beyond what the structured field already provides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_keypairGenerate or convert a key pairARead-onlyIdempotentInspect
Generate an RSA, EC, or Ed25519 key pair as PEM and JWK, or convert between PEM and JWK. The private key is returned in the result and is not stored. The page in the browser generates keys locally and does not send them.
| Name | Required | Description | Default |
|---|---|---|---|
| alg | No | ES256 | |
| jwk | No | JWK JSON to convert. Required for to_pem. | |
| pem | No | SPKI or PKCS8 PEM to convert. Required for to_jwk. | |
| action | No | generate | |
| modulusLength | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| alg | Yes | |
| jwks | Yes | |
| publicJwk | Yes | |
| publicPem | Yes | |
| privateJwk | Yes | |
| privatePem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, yet the description adds genuinely important context beyond them: the private key is returned in the result, is never stored, and browser-side generation happens locally without transmission. That security-relevant disclosure is what an agent needs before echoing key material; only the action-specific behavior (which fields are consumed per mode) is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, operation and supported formats front-loaded, security caveat immediately after. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is unnecessary. Combined with annotations, the description covers safety and data-handling adequately; the only gap is action-specific parameter requirements, which is a modest omission for a five-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40% and five parameters exist, so the description must compensate. It names the algorithm families behind the alg enum and both serialization formats, but says nothing about modulusLength, the default ES256, or which parameters each action requires — the schema's own descriptions carry most of that load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (generate, convert) and resource (RSA/EC/Ed25519 key pair in PEM and JWK) with the supported algorithm families and both output formats named. No sibling tool in the list does keypair generation, so it is trivially distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the two modes of use ('generate ... or convert between PEM and JWK'), which maps onto the action enum, but never states when to pick generate vs to_jwk vs to_pem, nor prerequisites such as supplying jwk for to_pem. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_llms_txtGenerate llms.txtARead-onlyIdempotentInspect
Render llms.txt and llms-full.txt from a site name, a summary, and a list of pages. It does not crawl. Grouping follows the page URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | Yes | Pages you already know. This tool does not fetch them. | |
| summary | Yes | ||
| siteName | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| full | Yes | |
| llms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description adds two real behavioral facts: no crawling happens (agent must provide pages) and output grouping is derived from page URLs. These are non-obvious and materially affect how the tool behaves, though nothing is said about determinism or output content (which the output schema covers).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero filler. Purpose comes first, then the two behavioral constraints, which is exactly the right ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only generator with an output schema present, the description covers purpose, the key no-crawl constraint, and grouping behavior. The return shape needn't be explained since an output schema exists; only finer input semantics are left thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: 'siteName' and 'summary' are undocumented in the schema, and the description merely restates them ('a site name, a summary, and a list of pages'). It adds no format or content guidance (e.g., what 'summary' should contain, markdown or plain text), so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Render') and specific resources ('llms.txt and llms-full.txt'), and enumerates the three inputs. It's clear what the tool produces; the only gap is that no sibling produces a comparable artifact, so there's nothing to explicitly differentiate from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'It does not crawl' implicitly tells the agent it must supply pages itself rather than pointing at a URL, which is useful usage context. However, there is no explicit when-to-use/when-not framing and no named alternative, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_memeGenerate a meme imageARead-onlyIdempotentInspect
Render a classic top/bottom-caption meme as a PNG. Give it an image (base64, data URI, or public URL) or pick a gradient style, and it returns captioned meme artwork.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| image | No | Base image as base64, a data URI, or a public URL. Private addresses are refused. 10 MB cap. Omit to use a gradient style background. | |
| upper | No | Uppercase captions, classic meme style. | |
| bottom | No | ||
| styleId | No | Gradient style id when no image is given: sunset, ocean, grape, forest, mono, candy. Default: sunset. | |
| fontScale | No | Caption size multiplier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| png | Yes | PNG bytes, base64 encoded. |
| width | Yes | |
| height | Yes | |
| mimeType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered and the bar is lower. The description adds that output is captioned artwork in PNG, which is real behavioral context, but it discloses nothing about caption placement, fallback behavior, or failure modes beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core resource plus output format are front-loaded before the input-mode detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All six parameters are optional and an output schema exists, so return values need no explanation. The description covers both invocation modes and the PRG output, though it omits the gradient style ids and caption parameters—minor given the schema documents them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so part of the burden falls on the description. It clarifies the accepted image input forms (base64, data URI, public URL) and the image-vs-gradient choice, but says nothing about 'top'/'bottom', 'upper', 'styleId' values, or 'fontScale', leaving several parameters only documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Render), specific resource (top/bottom-caption meme), and explicit output format (PNG). No sibling (make_collage, resize_social_image, generate_qr_code) does meme captioning, so an agent can identify this immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the two input modes—'give it an image ... or pick a gradient style'—which is useful invocation context, and the schema confirms the image parameter is omitted for gradient backgrounds. However, there is no guidance on when to prefer this over sibling image tools, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_passwordGenerate a password or passphraseARead-onlyIdempotentInspect
Generate cryptographic passwords or EFF-wordlist passphrases and report the entropy in bits. Randomness comes from the platform CSPRNG.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| digit | No | ||
| style | No | password | |
| words | No | ||
| digits | No | ||
| length | No | ||
| symbols | No | ||
| lowercase | No | ||
| separator | No | - | |
| uppercase | No | ||
| capitalize | No | ||
| excludeAmbiguous | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| bits | Yes | |
| label | Yes | |
| score | Yes | |
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, so safety is covered. The description adds genuinely useful context beyond them: the randomness source is the platform CSPRNG, and entropy in bits is reported. Note the idempotentHint=true annotation is dubious for a random generator, but the description does not contradict it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler: capability, variant, reporting, and randomness provenance in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 undocumented parameters, a 0% schema coverage, and no usage guidance, the description is far too thin for a tool this configurable. An output schema exists so return values needn't be explained, and entropy is mentioned, but an agent still cannot select or set parameters correctly from this definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so neither schema nor description explains any parameter. The description only glancingly implies the 'words' parameter via 'EFF-wordlist passphrases' and hints at entropy; nothing disambiguates the overlapping 'digit' vs 'digits' booleans or the length/words/count/separator/capitalize/excludeAmbiguous options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (generate) plus two concrete resources (cryptographic passwords, EFF-wordlist passphrases) and a stated output artifact (entropy in bits). This clearly separates it from siblings like hash_password, generate_uuid, and generate_totp, which also produce or consume secrets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but never says when to pick it over hash_password/generate_uuid/generate_totp, nor when to choose 'password' vs 'passphrase' style. No prerequisites, exclusions, or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_qr_codeGenerate a QR codeBRead-onlyIdempotentInspect
Build a static QR code for text, a URL, Wi-Fi, or a vCard. Returns the payload, an SVG string, and a PNG as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| ecc | No | M | |
| url | No | ||
| dark | No | #111111 | |
| size | No | ||
| text | No | ||
| type | No | url | |
| wifi | No | ||
| light | No | #ffffff | |
| vcard | No | ||
| margin | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| svg | Yes | |
| payload | Yes | |
| pngBase64 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds that the code is "static" and that output includes payload, SVG, and base64 PNG, which is useful context, but says nothing about output size costs, color/margin trade-offs, or whether the PNG scales with the size parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler: the capability and its scope come first, the return artifacts second. Nothing is padded and nothing sentences-wise is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return-value sentence is supplemental rather than required. However, with ten parameters including two nested objects at 0% schema description coverage, the description leaves real gaps around ECC levels, sizing, and how wifi/vcard payloads condense to a single QR string.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden and it largely does not. It names the four content kinds that map to the `type` enum, but the other nine parameters (ecc, size, margin, dark, light, and the nested wifi/vcard fields) get no explanation, format, or interaction guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Build") plus resource ("QR code") and an explicit scope of supported payload kinds (text, URL, Wi-Fi, vCard), which also flags that it is a static (non-tracking) generator. It never names a sibling such as read_barcode, the inverse operation, so per the rubric it stays at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives among the many sibling tools. The content-type list is the only hint about applicability, and that information is already carried by the schema enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_resumeGenerate a resume PDFARead-onlyIdempotentInspect
Build a resume PDF from profile, experience, education, and skills. A name plus at least one experience, education, or skills entry is required. Choose the clean, modern, or compact template. Returns the A4 PDF as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| resume | Yes | ||
| template | No | clean |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Resume PDF as base64. |
| bytes | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds behavioral context beyond that: the output is an A4 PDF returned as base64, and it discloses the input precondition. This is useful detail the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: purpose, requirement, and output contract. Every sentence earns its place and the core purpose is front-loaded in the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object tool with 0% schema coverage and an output schema, the description covers purpose, input precondition, template choice, and return format. The remaining gap is per-field semantics for nested entries, but those field names are largely self-describing and return values are handled by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does so only partially. It names the top-level resume sections and the three template values (clean, modern, compact), but adds no semantics for the nested fields (email, phone, bullets, dates) beyond the property names already visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Build) and resource (resume PDF) and enumerates the exact inputs it consumes (profile, experience, education, skills). No sibling in the list produces a resume, so an agent can identify it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a validation prerequisite (a name plus at least one experience/education/skills entry) and the template options, which implies the required usage context. However, there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_totpGenerate a TOTP/HOTP one-time codeBRead-onlyIdempotentInspect
Compute RFC 4226/6238 one-time passcodes from a base32 secret. Supports 6/8 digits, SHA1/SHA256/SHA512, and custom periods.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Unix time in milliseconds; defaults to now | |
| mode | No | totp | |
| digits | No | ||
| period | No | TOTP period in seconds | |
| secret | Yes | Base32 TOTP/HOTP secret | |
| counter | No | HOTP counter | |
| algorithm | No | SHA1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | |
| mode | Yes | |
| digits | Yes | |
| period | Yes | |
| algorithm | Yes | |
| secondsRemaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety/determinism profile is covered. The description adds supporting context — the RFC standards and that output is computed from a secret rather than generated randomly — but says nothing about error behavior for invalid base32 secrets or how 'at' defaults interact with TOTP windows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core verb+resource and the RFC anchors. Every clause carries information; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not the description's burden, and the description adequately frames the tool as a deterministic RFC-compliant computation. Only the mode/counter/at semantics are left thin for a 7-parameter crypto utility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, mid-range. The description reinforces secret (base32 source), digits (6/8), algorithm (SHA1/256/512) and period (custom periods), but omits mode (totp/hotp), counter, and at, which are only partially documented in the schema. It adds marginal value without fully compensating for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Compute) plus a specific resource (RFC 4226/6238 one-time passcodes) and the input source (base32 secret). This distinguishes it from siblings like generate_password/generate_uuid, which produce random values rather than deriving a deterministic code from a secret, though it does not name those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to call this versus alternatives, nor any prerequisites or exclusions. It only lists capability options (digits, algorithms, periods), leaving the agent to infer that this is the tool for deriving OTPs from an existing secret.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_uuidGenerate or inspect a UUIDARead-onlyIdempotentInspect
Generate UUID version 4 or version 7 from cryptographic randomness, up to 10,000 at once, or inspect the version, variant, and v7 timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| value | No | UUID to inspect when action is inspect. | |
| action | No | generate | |
| version | No | v4 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ids | Yes | |
| variant | Yes | |
| version | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: outputs come from cryptographic randomness, batch size is capped at 10,000, and inspection reveals version/variant/v7 timestamp.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the primary generate action before the secondary inspect mode. Every clause carries information, though the stacked 'or' clauses make it slightly packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be described, and annotations carry the safety profile. The description covers both modes, versions, and the batch cap, leaving only the value-parameter format unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'value' is documented), so the description must compensate. It partially does: 'up to 10,000 at once' maps to count, 'version 4 or version 7' maps to version, and 'inspect' maps to the action enum. It still says nothing about the required format of the value parameter, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (generate, inspect) and the resource (UUID), plus version specifics (v4/v7) and the inspection targets (version, variant, v7 timestamp). It clearly separates this from sibling generators like generate_password or generate_totp by resource, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description distinguishes the two modes ('generate ... or inspect the version, variant, and v7 timestamp'), which implies when each applies, but gives no explicit when-to-use or when-not guidance and never routes the agent away from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash_dataHash text or bytesARead-onlyIdempotentInspect
Compute MD5, SHA-1, SHA-256, and SHA-512 for UTF-8 text or base64 bytes. Pass hmacKey for HMAC and expected to see which digest matches.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | UTF-8 text to hash. Use this or base64. | |
| base64 | No | Raw bytes as standard base64. | |
| hmacKey | No | UTF-8 HMAC key. Omit it for a plain digest. | |
| expected | No | Hex or base64 digest to compare. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hmac | Yes | |
| hashes | Yes | |
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the bar is lower. The description adds useful behavioral context: HMAC mode is opt-in via hmacKey, and supplying expected produces a match result across the digests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and algorithms, followed by the two optional behaviors. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety. The description is complete for correct invocation, with the only shortfall being no explicit sibling differentiation from hash_password.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description restates the input types and the role of hmacKey/expected but adds little syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Compute) and enumerates the exact resource (MD5, SHA-1, SHA-256, SHA-512) plus the accepted input forms (UTF-8 text or base64 bytes). It does not explicitly differentiate from the closest sibling hash_password, which is a minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional usage for parameters (pass hmacKey for HMAC, pass expected to check matches) but offers no when-to-use guidance or alternatives against siblings like hash_password. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash_passwordHash or verify a passwordARead-onlyIdempotentInspect
Hash a password with bcrypt or argon2id, or verify a hash. Returns an htpasswd line when a username is set. The password is not stored or logged. The page in the browser never sends the password; this call only hashes the arguments you send.
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | Bcrypt cost factor, from 4 to 12. | |
| hash | No | Existing bcrypt or argon2id hash. When set, the password is verified instead of hashed. | |
| memory | No | Argon2id memory in KiB. | |
| password | Yes | Password to hash or verify. It is used only for this call and is not stored. | |
| username | No | Optional htpasswd username. A colon is not allowed. | |
| algorithm | No | bcrypt | |
| iterations | No | ||
| parallelism | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| hash | Yes | |
| htpasswd | Yes | |
| verified | Yes | |
| algorithm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the readOnly/openWorld/idempotent annotations by disclosing the privacy contract ('not stored or logged', browser never sends the password) and the conditional return shape (htpasswd line when username is set). It does not, however, disclose that bcrypt/argon2id output is salted and therefore not reproducible, which is in tension with the idempotentHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary action and mode switch, then output shape, then the privacy guarantee. The closing sentence about the browser page is slightly defensive but still earns its place as anti-injection context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with annotations and an output schema, the description covers both operating modes, output form, and the security/privacy contract. The remaining gap — meaning and trade-offs of the Argon2id tuning parameters — is the only substantive omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, and the description adds nothing about cost, memory, iterations, parallelism, or the cost/security trade-offs — it only names the algorithm values already enumerated in the schema. Baseline 3 is appropriate since the schema carries most of the load but the tuning knobs are unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (hash) plus a second mode (verify) on a specific resource (password), with the supported algorithms (bcrypt, argon2id) and the htpasswd output form. This is clearly distinguishable from siblings like generate_password or generic hash_data without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals two modes ('hash ... or verify a hash') but never states the condition that selects verify mode (the `hash` argument) — that only lives in the schema. No alternatives (hash_data, generate_password) are named and there are no when-not rules, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
images_to_pdfBuild a PDF from imagesARead-onlyIdempotentInspect
Turn images, sent as base64 or public URLs in order, into one PDF. JPEG and PNG are embedded directly. Other formats are converted to PNG first. Page size is A4, Letter, or fit. Private addresses are refused. Returns the PDF as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | a4 | |
| images | Yes | ||
| margin | No | ||
| orientation | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | PDF bytes as base64. |
| bytes | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower; the description still adds real behavior: JPEG/PNG are embedded directly while other formats are re-encoded to PNG, page sizes are A4/Letter/fit, private addresses are refused (SSRF guard), and the result is returned as base64. It does not mention ordering failure behavior or item-count limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with the core action, then constraints, then return type. No filler and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return value needn't be spelled out, and the description still covers input forms, conversion behavior, page sizing, and the security constraint. Only margin/orientation semantics and multi-image failure handling are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, so the description must compensate; it explains the images input (base64 or URL, in order) and the page options, but says nothing about margin or orientation (the latter being a third enum the agent must infer from the schema alone). Enums are largely self-explanatory, keeping this at a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Turn images ... into one PDF.' This is clearly distinguishable from siblings like merge_pdf (combines PDFs) or convert_image (single-image format change), so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes input context (base64 or public URLs, order preserved, page size choices) but never states when to prefer this over merge_pdf, organize_pdf, or convert_image, nor any exclusions beyond refusing private addresses. Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_meta_tagsInspect meta tagsARead-onlyIdempotentInspect
Fetch one public HTML page and report title, description, canonical, Open Graph, Twitter, and JSON-LD. Use this to see what a live URL advertises.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A public HTML page. Only that URL is fetched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| og | Yes | |
| lang | Yes | |
| icons | Yes | |
| title | Yes | |
| checks | Yes | |
| robots | Yes | |
| status | Yes | |
| Yes | ||
| finalUrl | Yes | |
| viewport | Yes | |
| canonical | Yes | |
| redirects | Yes | |
| themeColor | Yes | |
| description | Yes | |
| jsonLdTypes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower, and the description still adds real scope constraints: it is a single fetch of one public page with no crawling or link following. It does not discuss auth, rate limits, or failure behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and load-bearing: the first states what is fetched and returned, the second states the intent. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still names the field groups an agent will receive. For a one-parameter read-only fetch tool this is essentially complete, with only alternative-tool routing left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, so the schema carries the load; the description adds no syntax, format, or constraint detail beyond the schema's own note that only the given URL is fetched. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives specific verbs (fetch, report) and a precise resource scope, enumerating exactly which meta categories are returned (title, description, canonical, Open Graph, Twitter, JSON-LD). This clearly separates it from siblings like fetch_page_markdown or check_http_headers, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to see what a live URL advertises' supplies an implied when-to-use, but there is no guidance on when NOT to use it and no reference to competing tools such as fetch_page_markdown, build_open_graph, or list_og_templates. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_og_templatesList Open Graph templatesBRead-onlyIdempotentInspect
List Open Graph card templates with ids, names, categories, defaults, color presets, and field schemas.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world (openWorldHint=false), so the safety profile is covered. The description adds the shape of returned content, which is some value, but discloses nothing beyond annotations about filtering behavior or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the verb and resource lead. The field enumeration is mildly redundant against the existing output schema but is short enough not to bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with annotations and an output schema, the definition is mostly adequate. The notable gap is the unexplained category filter parameter; return-value detail is already covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the one parameter (category, an enum of Blog/Product/Dev/Social/Event) is never explained. The description says templates have 'categories' in the output, but never indicates that the category parameter filters the list, so the filter semantics are left entirely to guesswork.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Open Graph card templates) and enumerates the notable fields returned, so the agent knows exactly what comes back. It does not name the complementary sibling build_open_graph, so sibling differentiation is only implied by 'List'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement or named alternative, but the tool's role as a discovery step ahead of build_open_graph is strongly implied by the purpose. An agent can infer it should call this to find a template id before building.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_dnsLook up DNS recordsARead-onlyIdempotentInspect
Query A, AAAA, MX, TXT, CNAME, and CAA for a public hostname over DNS-over-HTTPS, and parse SPF and DMARC. Private names are refused. The resolver is Cloudflare or Google.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Also fetch the _dmarc TXT record and parse SPF. | ||
| name | Yes | Public hostname, such as example.com. Private names are refused. | |
| types | No | ||
| resolver | No | cloudflare |
Output Schema
| Name | Required | Description |
|---|---|---|
| spf | Yes | |
| name | Yes | |
| dmarc | Yes | |
| queries | Yes | |
| records | Yes | |
| resolver | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds real behavioral context beyond them: the DoH transport, which resolvers are used (Cloudflare or Google), that SPF/DMARC are parsed as a side effect, and that private names are actively refused.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and record types, with constraints trailing. Every sentence carries information; no padding or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the transport, resolver, refusal constraint, and SPF/DMARC behavior, which is enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% – 'types' and 'resolver' have enums/defaults that self-document, while 'mail' and 'name' are described in the schema. The description restates the record types and resolver options and hints that SPF/DMARC parsing is tied to mail handling, but it does not fully compensate for the undocumented half.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Query) and resource (DNS records), enumerates the exact record types, and names the transport (DNS-over-HTTPS) and hostname scope (public). It is clearly distinguishable from siblings like check_ssl or check_http_headers, though it does not explicitly contrast itself with any of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent infers it should call this when it needs DNS records for a hostname. The description gives one useful exclusion ('Private names are refused') but names no alternatives or explicit when-not conditions, so guidance is only adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_collageMake a photo collageARead-onlyIdempotentInspect
Arrange up to 9 photos into a collage layout (duo, trio, focus, quad, six, nine) with a gap and background color, and get back a square PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | Gap between cells in pixels. | |
| width | No | Output width in pixels; the collage is square. | |
| images | Yes | Photos as base64, data URIs, or public URLs. Private addresses are refused. 10 MB cap each. | |
| layout | No | Layout id: duo, duo-stack, trio, focus, quad, six, nine. Unknown ids fall back to quad. | quad |
| background | No | #000000 |
Output Schema
| Name | Required | Description |
|---|---|---|
| png | Yes | PNG bytes, base64 encoded. |
| cells | Yes | Cells in the layout; cells beyond the image count stay background-colored. |
| width | Yes | |
| height | Yes | |
| mimeType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the agent already knows this is a safe, repeatable, open-world read operation. The description adds that it returns a square PNG and that private/local addresses are refused, which is useful context. It does not mention potential rate limits or exact output format beyond 'square PNG', but with annotations covering the safety profile, a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the core action, lists the layouts, mentions parameters, and states the return type. Every clause earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the rich schema (80% coverage, enums, defaults, nested image object), and the presence of an output schema, the description is complete enough. The agent knows what the tool does, its key parameters, and the output format. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents all parameters thoroughly, including defaults, ranges, and descriptions. The description mentions 'gap and background color' and 'up to 9 photos', which aligns with the schema but doesn't add new syntax or format details. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (arrange) and resource (photos into a collage), names the layouts, and describes the output (square PNG). It is clearly distinguishable from siblings like generate_meme or resize_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for making collages from up to 9 photos, but gives no explicit when-to-use guidance or alternatives. Usage is implied by the tool's purpose rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pdfMerge PDF filesARead-onlyIdempotentInspect
Combine PDF files. Each file is base64 or a public URL, and can keep a page range such as 1-3,5. Private addresses are refused. Returns one PDF as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Merged PDF as base64. |
| bytes | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral detail beyond that: private/local addresses are refused (SSRF guard) and the result is returned as base64, which tells the agent not to expect a URL or file handle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action, then input forms, then a constraint, then the return format. Every sentence carries information; the only mild redundancy is repeating the private-address refusal that the schema also states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the description still names the return format (base64 PDF), covering both input sourcing and output shape. It is nearly complete for a modest tool, with the main omissions being the file-count limits and that page ranges apply per input file rather than globally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0%, so the description must carry parameter meaning. It explains the two source modes (base64 or public URL) and the page-range syntax ('1-3,5'), which is the core of the files array, but it omits the 10 MB decoded cap, the 25-file maximum and 2-file minimum, and the name/filename/mimeType fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Combine PDF files', which is unambiguous against siblings like split_pdf, compress_pdf, and organize_pdf. It does not explicitly name or differentiate itself from those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the note on file sources, but there is no statement of when to prefer this over organize_pdf or split_pdf, or any prerequisite/ordering guidance. An agent must infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minify_codeMinify JavaScript, CSS, or HTMLBRead-onlyIdempotentInspect
Minify source code with Terser (JS), csso (CSS), or a structural HTML pass and report before/after byte counts.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| cssLevel | No | ||
| jsMangle | No | ||
| language | Yes | ||
| jsCompress | No | ||
| htmlAggressive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | |
| savedPct | Yes | |
| afterBytes | Yes | |
| savedBytes | Yes | |
| beforeBytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds that behavior branches by language and that before/after byte counts are reported, but it omits the meaningful risk context — e.g. that JS mangling can break name-dependent code or that aggressive HTML collapsing can alter whitespace semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the engine mapping and the reporting behavior are packed in without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema means return values need not be described, and annotations cover safety, so the core is adequate. But for a tool with six parameters at 0% schema coverage and defaults like jsMangle=true and htmlAggressive=false, the description should at least flag that the options materially change output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description carries the full burden and largely fails it. It hints at the engine-to-language mapping but never explains jsMangle, jsCompress, cssLevel, or htmlAggressive, leaving four behavior-changing options undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (minify) and resource (source code) and names the concrete engines per language — Terser for JS, csso for CSS, a structural pass for HTML. That is enough to distinguish it from image/PDF/SVG compression siblings, though it never explicitly contrasts itself with optimize_svg or compress_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no exclusions. An agent gets no signal about which language modes are safe for production, or that this applies to source text rather than the binary-asset siblings (optimize_svg, compress_image) that sit nearby in the toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_svgOptimize an SVGARead-onlyIdempotentInspect
Minify an SVG with SVGO. Send markup or a file as base64 or a public URL. Private addresses are refused and the file is capped at 10 MB. The viewBox is kept unless removeViewBox is true. Returns the optimized markup and the byte counts.
| Name | Required | Description | Default |
|---|---|---|---|
| svg | No | SVG markup. Provide svg or file. | |
| file | No | An SVG file. Provide svg or file. | |
| precision | No | ||
| removeViewBox | No | ||
| removeDimensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| svg | Yes | |
| afterBytes | Yes | |
| savedBytes | Yes | |
| beforeBytes | Yes | |
| savedPercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, idempotentHint, openWorldHint), yet the description adds real operational context: private/local addresses are refused, the file is capped at 10 MB, and the viewBox is preserved unless removeViewBox is true. That is meaningful behavior beyond the structured hints, though it doesn't cover failure modes for malformed SVG.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences packed with constraints, front-loaded with the core action and input methods. The closing sentence about return values is largely redundant given a declared output schema, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object tool with an output schema present, the description covers input forms, security limits, and the viewBox default, so an agent can invoke it confidently. The remaining gap is the unmentioned precision and removeDimensions parameters, which the schema also leaves undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must carry more weight. It does explain svg vs. file, URL/base64 input, the 10 MB cap, and the removeViewBox flag, but it says nothing about precision or removeDimensions, leaving two of five parameters semantically undefined in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Minify an SVG with SVGO') and extends it with the accepted input forms, so the agent knows exactly what operation is performed. It does not explicitly distinguish itself from the sibling minify_code, but the SVG-specific scope makes the boundary reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent how to supply input (markup, base64 data, or a public URL), which implies when the tool applies. However, it never states when to use this over minify_code or compress_image, nor any exclusion conditions beyond the private-address refusal, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
organize_pdfOrganize PDF pagesARead-onlyIdempotentInspect
Reorder, rotate, or drop PDF pages. Each entry names a 1-based source page and a rotation of 0, 90, 180, or 270. The same page may be listed twice. Send base64 or a public URL. Private addresses are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| pages | Yes | ||
| filename | No | ||
| mimeType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Organized PDF as base64. |
| bytes | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, so the bar is lower, yet the description adds real context: accepted input modes and an SSRF policy ('Private addresses are refused'), plus the non-obvious allowance that the same page may be listed twice. It does not state what happens when 'drop' is used (omission from the list) or how out-of-range source pages are handled, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action, and every sentence carries information. The rotation-value enumeration is somewhat redundant with the schema's anyOf consts, a minor waste, but overall it is tight and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover the safety profile. What remains unstated is the critical semantic that output page order follows array order and that dropping is achieved by omission, both of which an agent must infer. Otherwise complete for a pure transformation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 40%, so the description must compensate and does so only partially. It explains the structure of a pages entry (1-based source plus a rotation of 0/90/180/270), which the schema largely already conveys via the source description and rotate consts, but says nothing about filename or mimeType, and only lightly touches url vs data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (reorder, rotate, drop) on a specific resource (PDF pages), which cleanly distinguishes it from siblings like merge_pdf, split_pdf, compress_pdf, and render_pdf_pages. An agent can identify that this is the page-level arrangement tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the operation set. The description never states when to prefer this over merge_pdf or split_pdf, nor mentions any prerequisites. It is adequate for inference but offers no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protect_pdfProtect or unlock a PDFARead-onlyIdempotentInspect
Protect a PDF with AES-256, or unlock one when the password is known. action is protect or unlock. password is the user password. ownerPassword is optional. permissions cover printing, copying, modifying, annotating, filling forms, accessibility, and assembly. Send base64 or a public URL. Private addresses are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| action | No | protect | |
| filename | No | ||
| mimeType | No | ||
| password | No | User password. Required to protect or unlock. Unlock only works when this is the known password. | |
| permissions | No | ||
| ownerPassword | No | Owner password. Blank uses the user password. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | PDF bytes as base64. |
| bytes | Yes | |
| encrypted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the description's added context of AES-256 and the permission surface is useful but overlaps the schema's permissions object. It never states what happens on a wrong password, on an already-protected input, or how owner vs. user password interact at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short, front-loaded sentences with no filler; the mode decision and encryption level come first. Two sentences (permission enumeration, "Private addresses are refused") restate what the schema already declares, so it falls short of fully waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with a nested permissions object and an enum, the description covers the decision logic, credential requirements, input modalities, and the permission surface. Missing edge-case behavior (wrong password, already-protected input) is the main residual gap; return values are covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate, and it does: it explains action values, that password is the user password, that ownerPassword is optional, and summarizes the permission set. Only filename and mimeType go unexplained, which are largely self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource ("Protect a PDF with AES-256, or unlock one"), names the algorithm, and makes the protect-vs-unlock branch explicit, which cleanly separates it from siblings like compress_pdf, merge_pdf, or split_pdf that also take PDF input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for each mode and an explicit boundary: unlock "only works when the password is known," which tells the agent this is not a cracking tool. It does not name competing siblings (e.g., compress_pdf for size reduction), so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_jsonpathRun a JSONPath queryARead-onlyIdempotentInspect
Evaluate a JSONPath Plus query against a JSON document and return the matches with their paths. A number that does not fit in a JavaScript number is returned as its original digits, with a precision warning.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON document text | |
| limit | No | Maximum matches to return | |
| query | Yes | JSONPath query, e.g. $.store.book[*].author |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| matches | Yes | |
| warning | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, closed-world), so the bar is lower. The description still earns credit by disclosing a non-obvious output behavior: numbers that exceed JavaScript number precision are returned as original digits with a precision warning, which is exactly the kind of quirk an agent would otherwise be surprised by.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core purpose is front-loaded ahead of the precision caveat. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the annotations cover safety. The description is nearly complete; it only omits error behavior for malformed JSONPath and any note on the limit parameter's interaction with the returned paths.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents json, query, and limit with defaults and bounds. The description adds no syntax, format, or default information beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (evaluate) and resource (JSONPath Plus query against a JSON document) and states the shape of the result (matches with their paths). This clearly separates it from siblings like validate_json_schema, format_json, and convert_json_to_types, which share the JSON domain but do different work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to reach for this tool versus alternatives such as format_json, validate_json_schema, or convert_json_to_types, nor what preconditions exist (must the document already be valid JSON?). Only the schema's example query hints at usage, and that is structured-field content rather than description guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_barcodeRead a QR code or barcodeARead-onlyIdempotentInspect
Read QR codes and barcodes from an image. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns each code's text and format. An image with no code returns an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| codes | Yes | |
| count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, but the description adds genuinely new operational facts: private/local addresses are refused (SSRF guard) and the decoded payload is capped at 10 MB. It also discloses the no-code edge case, which no structured field covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, zero padding, with the core action front-loaded and the constraints and return shape following in priority order. Every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Input modes, security restriction, size limit, return shape, and the empty-result edge case are all covered, and an output schema exists so detailed return formatting need not be repeated. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes slightly beyond by clarifying that either base64 data or a public URL satisfies the single required 'file' object, and it restates the url-side private-address restriction and the data-side 10 MB cap in the context of the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read QR codes and barcodes from an image.' That clearly separates it from write-side siblings like generate_qr_code. It stops short of naming the nearest ambiguous sibling (read_image_text, which does OCR rather than code decoding), so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Send base64 or a public URL' tells the agent how to supply input, and the private-address refusal plus 10 MB cap narrow the usable cases. However, it never states when to pick this over read_image_text or other image tools, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_exifRead or strip photo metadataARead-onlyIdempotentInspect
Read EXIF tags, including GPS, or strip them. action is read or strip. scope is all or gps. gps-only removal keeps the other JPEG tags. Other formats are re-encoded, which drops every tag. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The photo. Provide url or data. | |
| scope | No | Used when action is strip. gps removes the GPS block from a JPEG. all re-encodes and drops every tag. | all |
| action | No | read |
Output Schema
| Name | Required | Description |
|---|---|---|
| gps | Yes | |
| data | Yes | Cleaned image as base64. Empty when action is read. |
| mime | Yes | |
| note | Yes | |
| tags | Yes | |
| when | Yes | |
| bytes | Yes | |
| width | Yes | |
| camera | Yes | |
| height | Yes | |
| filename | Yes | |
| stripped | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing concrete behavior: private/local addresses are refused, decoded input is capped at 10 MB, gps-only stripping preserves other JPEG tags, and non-JPEG formats are re-encoded and lose every tag. These are exactly the side-effect details an agent needs and that readOnlyHint/idempotentHint cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six short sentences, front-loaded with purpose and mode selection before constraints. Slight redundancy in restating the action/scope enums that the schema already declares, but no filler or buried caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers input transport, size limit, SSRF refusal, and format-specific strip behavior. Remaining gap is that it never says whether stripping returns a modified file or how the result is delivered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds real meaning: 'Send base64 or a public URL' clarifies the file shape, and 'Other formats are re-encoded, which drops every tag' explains the scope enum's practical consequence beyond the schema's wording. Minor duplication of the action/scope enumerations, but net additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read EXIF tags, including GPS, or strip them') and distinguishes the two operating modes up front. No sibling tool in the list covers metadata reading/stripping, so the boundary is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to choose between the action/scope modes, which is useful, but never states when to pick this tool over adjacent image tools (compress_image, convert_image, read_image_text) or any prerequisite such as requiring a public URL first. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_image_textRead text from an imageARead-onlyIdempotentInspect
Extract text from an image with Tesseract. language defaults to eng. Other codes in the list are fetched when first used. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the text and a confidence from 0 to 100. An image with no text returns an empty string.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. | |
| language | No | A Tesseract language code such as eng, spa, fra, deu, or jpn. | eng |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| language | Yes | |
| confidence | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, it discloses real behavior: private addresses are refused, the decoded file is capped at 10 MB, non-default language packs are fetched lazily on first use, results carry a 0-100 confidence, and a textless image yields an empty string. These are concrete operational traits an agent could not infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six short, front-loaded sentences with no filler; purpose, inputs, constraints, and return shape each get exactly one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering the safety profile, the description fills the remaining gaps an agent needs: input formats, SSRF guard, size cap, language behavior, and empty-result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url/data/filename/mimeType and the eng default are already documented. The description mostly restates these; only the lazy-fetch note on additional language codes adds meaning beyond the schema, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+engine: extract text from an image via Tesseract, which clearly separates it from optical siblings like read_barcode. It never names an alternative explicitly, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent the accepted input forms (base64 or public URL) and the default language, which helps invocation. But it never says when to choose this over read_barcode, extract_pdf_text, or convert_image, so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_backgroundRemove a solid image backgroundARead-onlyIdempotentInspect
Remove a solid or near-solid background by flood-filling from the border. color is an optional #rrggbb. The portrait model runs in the browser, not in this handler: MODNet is Apache-2.0, RMBG-1.4 is non-commercial, and the ONNX runtime is too large for the serverless function. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns a PNG as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. | |
| color | No | Background color as #rgb or #rrggbb. Blank samples the corners. | |
| feather | No | ||
| tolerance | No | How far a border pixel may be from the background color, in RGB distance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | PNG with transparency as base64. |
| mime | Yes | |
| note | Yes | |
| bytes | Yes | |
| width | Yes | |
| height | Yes | |
| method | Yes | |
| filename | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds genuinely new behavioral facts: the SSRF guard, the 10 MB decoded cap, the base64 PNG return format, and an explanation of why portrait segmentation is not available server-side. Some of this (10 MB cap, private addresses) restates the schema, which keeps it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and mechanism are front-loaded in the first sentence, followed by parameters, constraints, and return format in a logical order. The license digression about MODNet/RMBG/ONNX is slightly verbose but earns its place by justifying the solid-background-only scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter image tool with an output schema, the description covers accepted input forms, size and address limits, algorithm scope, and return encoding. The only meaningful gap is that 'feather' is never mentioned in either the description or the schema, leaving one parameter's effect unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 75% schema description coverage, the baseline is 3. The description adds the format of 'color' (as '#rrggbb', which is actually narrower than the schema's '#rgb or #rrggbb') but says nothing about feather's behavior or tolerance's defaults, both of which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('remove a background') plus the exact mechanism ('flood-filling from the border') and the input class it targets ('solid or near-solid'). That mechanism distinguishes it cleanly from image siblings like crop_image, resize_image, or convert_image without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'The portrait model runs in the browser, not in this handler' implicitly rules out portrait/subject segmentation and routes that case elsewhere, and 'Send base64 or a public URL' plus the private-address refusal tells the agent which input forms work. It stops short of naming an explicit alternative tool or stating the inverse condition directly, so it is strong context rather than a complete when/when-not rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_pdf_pagesRender PDF pagesARead-onlyIdempotentInspect
Render PDF pages to PNG or JPEG. DPI is 72 to 216. A page range such as 1-3,5 is optional. At most 24 pages and 25 MB of images. Send base64 or a public URL. Private addresses are refused. Returns image base64 and a ZIP when there is more than one page.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| range | No | Pages to render, such as 1-3,5. Blank renders every page, up to 24. | |
| format | No | png | |
| quality | No | JPEG quality from 1 to 100. Ignored for PNG. | |
| filename | No | ||
| mimeType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| zip | Yes | ZIP of the images when there is more than one, otherwise null. |
| images | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses real operational constraints: DPI bounds, a 24-page cap, a 25 MB image cap, refusal of private addresses, and the base64-plus-ZIP return shape. These limits materially shape invocation, though auth/permission behavior is not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Seven short sentences, front-loaded with the core operation and then the constraints; nothing is padded. The telegraphic style is efficient, though the fragment structure reads slightly clipped rather than polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, yet the description still notes the base64/ZIP result. Safety is covered by annotations and the size/address constraints are stated, so an agent has what it needs; only the roles of filename, mimeType, and quality are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description has to carry some load, and it does clarify the input source (base64 or public URL), the DPI bounds, and the range syntax such as 1-3,5. However, much of this repeats the schema's own parameter descriptions, and quality, format, filename, and mimeType receive no added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb+resource+output ('Render PDF pages to PNG or JPEG'), which clearly separates it from siblings like extract_pdf_text, images_to_pdf, or compress_pdf. It does not explicitly name or contrast a sibling, but the operation is unambiguous without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the operation and by input guidance ('Send base64 or a public URL'), but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., extract_pdf_text for text, convert_image for format changes). An agent can infer the context but is given no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_imageResize an imageARead-onlyIdempotentInspect
Resize an image by pixels or percent. Fit is contain, cover, or stretch. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the image as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | contain | |
| file | Yes | The image. Provide url or data. | |
| mode | No | pixels | |
| width | No | ||
| height | No | ||
| percent | No | ||
| lockAspect | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Resized image as base64. |
| mime | Yes | |
| bytes | Yes | |
| width | Yes | |
| height | Yes | |
| filename | Yes | |
| extension | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, and the description adds genuinely useful operational context beyond them: private addresses are refused (SSRF guard), input capped at 10 MB, and the result is returned as base64. It is consistent with readOnlyHint and does not contradict any annotation, though it says nothing about output format details or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each carrying a distinct fact (mode, fit, input, limits, return), with the core purpose front-loaded and no filler. Well sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, and safety constraints are covered. However, for a 7-parameter tool with very low schema coverage, key semantics — aspect-ratio behavior, whether width/height/percent are mutually exclusive, defaults of lockAspect — are absent from both schema and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, so the description must carry the parameter burden, but it mostly repeats enum values already in the schema ('contain, cover, or stretch', 'pixels or percent'). It says nothing about width, height, lockAspect, or how percent interacts with them, leaving most of the 7 parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Resize an image') plus the two operating modes ('by pixels or percent'), so the agent knows exactly what transformation happens. It does not, however, distinguish this from close siblings such as crop_image, convert_image, or compress_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives input guidance ('Send base64 or a public URL') which implies how the tool is invoked, and the size/address limits imply acceptable inputs. There is no explicit when-to-use versus the many image siblings (crop_image, compress_image, convert_image), so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_social_imageResize an image to social media dimensionsARead-onlyIdempotentInspect
Crop and resize an image to an exact social media preset: instagram-post (1080x1080), instagram-portrait (1080x1350), instagram-story (1080x1920), youtube-thumbnail (1280x720), x-post (1200x675), x-header (1500x500), linkedin-post (1200x627), or facebook-post (1200x630). The cover crop keeps the center subject. Send base64 or a public URL. Private addresses are refused and the decoded file is capped at 10 MB. Returns the image as base64 PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The image. Provide url or data. | |
| preset | Yes | Social platform preset with exact pixel dimensions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Resized image as base64 PNG. |
| bytes | Yes | |
| width | Yes | |
| height | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds genuinely useful behavior: the cover crop keeps the center subject, private addresses are refused, decoded size is capped at 10 MB, and output is base64 PNG.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and preset list, then constraints and return format. The eight-preset enumeration is long but each entry earns its place by giving dimensions an agent would otherwise lack; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input forms, security limits, crop behavior, and output format; with an output schema present it need not explain return values further. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes further by spelling out the exact pixel dimensions for each enum value and reiterating the base64/URL input paths and the 10 MB cap, adding meaning beyond the schema's terse enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Crop and resize an image') and enumerates all eight presets with exact pixel dimensions, which clearly separates it from the sibling resize_image and crop_image tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the preset list ('to an exact social media preset'), but it never states when to choose this over resize_image or crop_image, nor any prerequisites. No explicit exclusions or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_ai_seoScore a page for AI searchARead-onlyIdempotentInspect
Fetch a public page plus its robots.txt, sitemap, and llms.txt, then score how ready it is for AI search crawlers. Use this when you have a live URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A public page. The check also reads robots.txt, sitemap.xml, and llms.txt on that origin. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | Yes | |
| checks | Yes | |
| status | Yes | |
| finalUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the multi-resource fetch behavior, but that same detail is already echoed in the `url` schema description, so the incremental value is small; no mention of rate limits or whether non-public pages fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core action is front-loaded before the usage hint. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and annotations carry the safety profile. The description is nearly complete, only missing edge-case behavior (non-public URLs, redirects, or how the score is derived).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the baseline is 3. The description adds no format, normalization, or error-handling detail beyond what the schema's `url` description already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action (fetch page + robots.txt + sitemap + llms.txt, then score) and the exact purpose (AI search crawler readiness). This distinguishes it cleanly from the standalone sibling utilities check_robots_txt, validate_sitemap, and generate_llms_txt, which each do only one of those steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when you have a live URL" gives one usage condition, but it largely restates the required `url` parameter rather than adding selection logic. No exclusions (e.g. local files, JS-rendered pages) and no pointer to the sibling tools an agent might otherwise pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_pdfSign a PDF with a PNG signatureBRead-onlyIdempotentInspect
Stamp a PNG signature image onto one or more PDF pages at given positions (fractions of the page, x and y measured from the top-left, width as a fraction of page width). The signature keeps its aspect ratio. Returns the signed PDF as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The PDF to sign. | |
| signature | Yes | The signature as a PNG image, base64 or a public URL. | |
| placements | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Signed PDF as base64. |
| bytes | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one genuine behavioral trait beyond that – the signature keeps its aspect ratio – and states the return format, but says nothing about whether the source PDF is modified, what happens on out-of-range pages, or any size/latency limits for the 10 MB nested caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two densely packed sentences: the purpose and placement semantics come first, the return format second. Both are front-loaded and waste little, though 'Returns the signed PDF as base64' is redundant given the output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return value needn't be explained, and the placement coordinate system is fully spelled out. What is missing is edge-case behavior – an invalid page number, a non-PNG signature, or the 20-placement cap – but for a single-purpose stamping tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% and the nested placement properties already document x, y, page, and width with the same fraction/top-left conventions the description repeats. The description's only added value is tying width to the preserved aspect ratio, so the baseline 3 for schema-heavy parameter documentation is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Stamp a PNG signature image onto one or more PDF pages') plus the placement model, which clearly separates it from siblings like merge_pdf, split_pdf, or protect_pdf. It never explicitly names an alternative, but the operation itself is distinctive enough that an agent can route to it correctly from the catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (the signature must already be a PNG; the PDF must come from a URL or base64), and no mention of siblings such as images_to_pdf or extract_pdf_text for adjacent tasks. The agent is left to infer context entirely from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_pdfSplit a PDFARead-onlyIdempotentInspect
Extract a page range into one PDF, or split into single pages or chunks of N. Send base64 or a public URL. Private addresses are refused. Returns PDF base64 and a ZIP when there are several files.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL of a PDF. Private and local addresses are refused. Provide data or url. | |
| data | No | PDF bytes as base64 or a data URI. Decoded size is capped at 10 MB. Provide data or url. | |
| mode | No | extract | |
| name | No | document.pdf | |
| every | No | Used when mode is chunks. | |
| range | No | Pages to keep, such as 1-3,5. Blank keeps every page. | |
| filename | No | ||
| mimeType | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| zip | Yes | ZIP of the PDFs when there is more than one, otherwise null. |
| files | Yes | |
| pageCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description only needs to add operational context — and it does: private/local addresses are refused (SSRF guard) and the response is PDF base64, with a ZIP when multiple files are produced. The 10 MB size cap lives in the schema rather than the description, but the behavioral picture is largely complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying a distinct fact — capability, input format, security constraint, output shape — with the primary capability front-loaded. No filler or restated title text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter transformation tool with an output schema, the description covers what matters: the three modes, both input channels, the address restriction, and the return shape (even though the output schema already documents it). Only the range syntax and the third-tier naming parameters are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema coverage, the description must carry the unexplained parameters, and it does: it clarifies that 'every' governs chunk size, that 'range' is what gets kept, and that input is either base64 data or a public URL. It adds nothing for 'name', 'filename', and 'mimeType', but the goal-relevant parameters are all covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (extract/split) plus resource (PDF) plus the three operating modes named up front: page range, single pages, chunks of N. An agent can distinguish this from merge_pdf, compress_pdf, and organize_pdf without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode semantics ('extract a page range', 'single pages', 'chunks of N') imply which option to pick for a given goal, but there is no explicit when-to-use-vs-alternatives guidance. Nothing points the agent to merge_pdf or organize_pdf, nor states when this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_regexTest a JavaScript regular expressionARead-onlyIdempotentInspect
Run a JavaScript regular expression against a sample and return every match, capture group, a short explanation, and an optional replacement.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Sample to search. | |
| flags | No | ||
| pattern | Yes | JavaScript regular expression body, without slashes. | |
| replacement | No | When set, the sample is replaced and returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | |
| truncated | Yes | |
| explanation | Yes | |
| replacement | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the agent knows this is a safe, side-effect-free operation. The description adds one genuinely non-structured behavior – that a short explanation is generated alongside matches – but otherwise restates the schema's replacement behavior without covering edge cases such as invalid patterns, no-match results, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action verb first and the outputs enumerated in one clause. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations cover the safety profile. It is nearly complete for a simple four-parameter tool, the only real gap being the undocumented 'flags' parameter, which appears nowhere in description or schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema carries most parameter meaning (pattern format, replacement semantics, text sample). The description reinforces 'sample' and 'optional replacement' but adds no new detail, and the 'flags' parameter is undocumented in both the description and the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run a JavaScript regular expression against a sample') and enumerates what the run produces: matches, capture groups, an explanation, and an optional replacement. No sibling tool overlaps with regex testing, so there is no ambiguity to resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies the usage context (validating or debugging a JS regex), but the description never states when to reach for this tool, any prerequisites, or when-not to use it. No alternatives exist in the sibling list, so the omission is low-cost, but guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trim_audioTrim a WAV audio fileARead-onlyIdempotentInspect
Trim a WAV audio file to a time range with optional fade in and out, returning a 16-bit PCM WAV as base64. Only WAV is accepted; the web UI handles MP3/OGG/M4A.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| endSec | Yes | Trim end in seconds, after startSec. | |
| startSec | Yes | Trim start in seconds. | |
| fadeInSec | No | Linear fade-in length in seconds. | |
| fadeOutSec | No | Linear fade-out length in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Trimmed audio as a 16-bit PCM WAV, base64. |
| bytes | Yes | WAV file size in bytes. |
| sampleRate | Yes | Sample rate in Hz. |
| durationSec | Yes | Duration of the trimmed audio in seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond them: the output is a 16-bit PCM WAV returned as base64, fades are linear and optional, and only WAV input is handled. It does not discuss failure modes (e.g., range exceeding clip length) or output size limits, keeping it at a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and output format, followed by the input-format restriction. Nothing is redundant and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward audio transform with an output schema and rich annotations, the description covers format support, output encoding and fade behavior. It omits edge-case behavior such as ranges beyond the clip length or error signaling, which for a tool with a nested file object and five parameters would be a useful addition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents file, startSec, endSec, fadeInSec and fadeOutSec with types, defaults and bounds. The description only restates that fades are optional and that output is 16-bit PCM; it adds no meaning to startSec/endSec semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (trim) + resource (WAV audio file) + scope (time range, optional fades, 16-bit PCM WAV base64 return). The constraint 'Only WAV is accepted; the web UI handles MP3/OGG/M4A' makes the boundary of the tool unambiguous, so an agent can tell immediately whether this tool applies to a given file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear selection condition: use this for WAV, use the web UI for MP3/OGG/M4A. That is a real when-not rule. It stops short of stating prerequisites (e.g., that startSec must precede endSec within the clip length) or what happens on out-of-range input, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url_codecEncode, decode, or parse a URLBRead-onlyIdempotentInspect
Percent-encode or decode text, or parse a URL into its host, path, hash, and query parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | component | |
| value | Yes | ||
| action | No | parse | |
| plusAsSpace | No | When decoding, treat + as a space. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hash | Yes | |
| port | Yes | |
| query | Yes | |
| value | Yes | |
| params | Yes | |
| hostname | Yes | |
| pathname | Yes | |
| protocol | Yes | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered. The description adds essentially nothing beyond that — no mention of behavior on malformed input, whether encoding is safe to re-run on already-encoded text, or which characters each mode escapes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the operations front-loaded and parse's outputs at the tail. No filler, though it spends words enumerating parse fields that the output schema already covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and safety hints are covered by annotations. However, for a 4-param tool at 25% schema coverage the key gaps — mode semantics and error handling for invalid percent-escapes — are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: only plusAsSpace is documented. The description does not explain 'mode' (component vs full) or clarify the action enum's interaction with mode, which is the central semantic choice for this tool. It adds only marginal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific operations (percent-encode, decode, parse) and the resource (text / URL), and even enumerates parse outputs (host, path, hash, query parameters). It does not explicitly contrast itself with adjacent siblings like base64_codec, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose encode vs decode vs parse, nor on the component vs full mode distinction. The stated default in the schema is 'parse' while the description leads with encode/decode, which could misroute an agent. Nothing tells the agent when to prefer this tool over base64_codec or convert_curl.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_json_schemaInfer or validate JSON SchemaARead-onlyIdempotentInspect
Infer a JSON Schema from a sample, or validate JSON against a schema. Returns error paths plus TypeScript and Zod generated from the sample.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON document to infer from or validate. | |
| schema | No | JSON Schema. Omit it to infer a schema from the document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| zod | Yes | |
| valid | Yes | |
| errors | Yes | |
| schema | Yes | |
| typescript | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds that errors surface as paths plus generated TypeScript/Zod, but that overlaps with the existing output schema, so it adds only marginal context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the dual purpose front-loaded and the return summary second. No filler, though the generated-code mention is somewhat redundant with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema covering return shape, the description adequately covers both modes and the inputs needed to trigger them. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema. The description's note about omitting the schema merely repeats the schema's own wording and adds no syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (infer, validate) and the resource (JSON Schema), and it names both operating modes. However, it never distinguishes itself from adjacent siblings like format_json or convert_json_to_types, so an agent can't fully disambiguate from the tool text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Omit it to infer a schema from the document" gives the condition that switches modes, which is useful implied guidance. There is no explicit statement of when to prefer this over formatting or type-conversion siblings, so guidance stays at the implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_sitemapValidate or generate a sitemapARead-onlyIdempotentInspect
Validate sitemap XML or a public sitemap URL, including a sitemap index and a sample of HTTP statuses. Or generate a urlset from a list of URLs. Private addresses are refused and responses are size-capped.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public sitemap URL. Private addresses are refused. | |
| xml | No | Sitemap XML. Use this or url. | |
| urls | No | URLs to place in a generated sitemap. When set, url and xml are ignored. | |
| probe | No | Request a sample of locations and report HTTP status. |
Output Schema
| Name | Required | Description |
|---|---|---|
| xml | Yes | |
| kind | Yes | |
| urls | Yes | |
| issues | Yes | |
| probes | Yes | |
| source | Yes | |
| sitemaps | Yes | |
| urlCount | Yes | |
| sitemapCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, so the description's job is to add context, and it does: private addresses are refused (SSRF guard), responses are size-capped, and probing reports a sample of HTTP statuses rather than exhaustive checks. That constraint and safety detail is real value beyond the structured hints; only rate-limit/timeout behavior is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary validate job, then the generate mode, then the two operational constraints. Zero filler and no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and annotations carry the safety profile; the description covers both modes plus the SSRF and size-cap constraints an agent needs to invoke it correctly. Minor gaps remain around probe=false behavior and precedence rules, though precedence is partly covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented, making 3 the baseline. The description reinforces semantics ('a sample of HTTP statuses' for probe, urlset generation for urls) but adds no syntax, defaults, or limits beyond what the schema provides (e.g. the 5000-item maxItems is only in the schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ('Validate sitemap XML or a public sitemap URL') and explicitly covers the second mode ('Or generate a urlset from a list of URLs'). This distinguishes the two behaviors internally, though it never names a sibling tool (e.g. check_robots_txt or generate_llms_txt) that an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Validate ... Or generate ...' construction plus the schema note that urls overrides url/xml gives clear selection context for each mode. It does not state when NOT to use the tool or point to an alternative, so it stops short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_websocket_urlValidate a WebSocket URLARead-onlyIdempotentInspect
Validate and parse a ws:// or wss:// URL into its components, and optionally decode a WebSocket close code.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| explainCloseCode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| host | No | |
| path | No | |
| port | No | |
| error | No | |
| valid | Yes | |
| secure | No | |
| protocol | No | |
| closeCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds that parsing yields components and that close-code decoding is optional, but says nothing about behavior on an invalid URL (error vs. result) or the meaning of 'components'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the primary operation and appends the optional secondary capability. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Both parameters are acknowledged and the operation is fully stated, though the absence of invalid-input behavior and close-code semantics leaves minor gaps for a two-parameter validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate. It clarifies the second parameter's purpose ('optionally decode a WebSocket close code') and hints at the URL format (ws:// or wss://), but gives no guidance on the valid close-code range (1000-4999) or URL syntax details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (validate and parse) plus a tightly-scoped resource (ws:// or wss:// URLs), with an additional capability (decode close code) called out. The ws/wss restriction inherently distinguishes it from generic siblings like url_codec and validate_sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the narrow scope but never stated explicitly. There is no 'use this when...' guidance and no routing to url_codec for non-WebSocket URLs, leaving the agent to infer when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zip_filesZip files or unzip an archiveARead-onlyIdempotentInspect
Create a ZIP archive from files or list and extract the contents of a ZIP archive. Everything is handled in memory; no files are stored.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | zip | |
| files | No | Files to zip (zip mode). | |
| archive | No | Archive to extract (unzip mode). |
Output Schema
| Name | Required | Description |
|---|---|---|
| zip | No | Base64 ZIP bytes (zip mode). |
| mode | Yes | |
| files | No | Extracted files (unzip mode). |
| fileCount | Yes | |
| totalBytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered structurally. The description adds genuinely useful non-annotation context: 'Everything is handled in memory; no files are stored,' which explains why a tool named 'zip_files' is legitimately read-only and tells the agent there are no filesystem side effects. It stops short of mentioning size/count limits or failure behavior, but with annotations present the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler, and the operative capability is front-loaded before the caveat. The in-memory note is placed last where it belongs as a qualifier rather than leading. Nothing is redundant with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the in-memory behavior plus both operating directions are covered. One gap: the description promises 'list ... the contents' as a capability, but the mode enum only exposes zip/unzip, leaving the agent unsure how listing is triggered. The 200-file cap is also only in the schema. Overall complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already carries most of the burden, and the base64 encoding details for files[].data and archive.data live there. The description maps loosely onto the parameters ('from files' → files, 'contents of an archive' → archive) but adds no format, size, or mode-selection detail beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names two concrete verbs (create, extract/list) against a single well-defined resource (ZIP archive), covering both directions of the operation. This is not confusable with compression siblings like compress_image or compress_pdf, which act on specific formats rather than producing an archive. An agent knows exactly what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two operating modes (zip vs unzip) are implied by the description and formalized in the mode enum, so usage is reasonably inferable. However, there is no explicit when-to-use/when-not guidance and no mention of the natural alternatives (compress_image, compress_pdf, images_to_pdf) for related file-bundling tasks. Guidance is implied rather than stated.
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.
5 tool updates
- Added
convert_currency - Added
fill_pdf_form - Added
generate_meme - Added
make_collage - Added
zip_files
5 tool updates
- Added
generate_invoice - Added
generate_resume - Added
resize_social_image - Added
sign_pdf - Added
trim_audio
72 tool updates
- First observed
aes_crypt - First observed
analyze_har - First observed
base64_codec - First observed
build_csp - First observed
build_json_ld - First observed
build_nextjs_dockerfile - First observed
build_open_graph - First observed
calculate_cidr - First observed
calculate_emi - First observed
calculate_percentage - First observed
calculate_programmer - First observed
check_http_headers - First observed
check_robots_txt - First observed
check_ssl - First observed
compress_image - First observed
compress_pdf - First observed
convert_case - First observed
convert_color - First observed
convert_csv_json - First observed
convert_curl - First observed
convert_data_format - First observed
convert_image - First observed
convert_json_to_types - First observed
convert_markdown_html - First observed
convert_units - First observed
convert_unix_timestamp - First observed
count_text - First observed
count_tokens - First observed
crop_image - First observed
date_difference - First observed
decode_jwt - First observed
diff_text - First observed
execute_graphql - First observed
explain_chmod - First observed
explain_cron - First observed
extract_pdf_text - First observed
fetch_page_markdown - First observed
format_json - First observed
format_sql - First observed
generate_fake_data - First observed
generate_favicon - First observed
generate_keypair - First observed
generate_llms_txt - First observed
generate_password - First observed
generate_qr_code - First observed
generate_totp - First observed
generate_uuid - First observed
hash_data - First observed
hash_password - First observed
images_to_pdf - First observed
inspect_meta_tags - First observed
list_og_templates - First observed
lookup_dns - First observed
merge_pdf - First observed
minify_code - First observed
optimize_svg - First observed
organize_pdf - First observed
protect_pdf - First observed
query_jsonpath - First observed
read_barcode - First observed
read_exif - First observed
read_image_text - First observed
remove_background - First observed
render_pdf_pages - First observed
resize_image - First observed
score_ai_seo - First observed
split_pdf - First observed
test_regex - First observed
url_codec - First observed
validate_json_schema - First observed
validate_sitemap - First observed
validate_websocket_url
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.