Burs-IA Utils
Server Details
492 utilidades deterministas gratis y sin llave para agentes: NIT, festivos, IVA/UVT, CUFE
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 493 tools
Most tools have clearly distinct purposes, and many descriptions explicitly include "Not for" guidance that helps distinguish neighbors such as co-iva vs vat-calculate or date-add vs business-days-add. However, with 493 tools there are many near-overlapping utilities (multiple validators, encoders, date helpers, money formatters), and the surface is too large for an agent to disambiguate reliably without search.
The vast majority of tools use lowercase kebab-case with predictable domain/action or action/object patterns, such as base64-encode, date-between, json-patch-apply, and co-iva. There are minor deviations like find_tool using an underscore and a few Spanish-named tools (onda-traducir, recibo-verify), but the convention remains readable and mostly consistent.
493 tools is an extreme mismatch for a utility MCP server; even if each tool is individually useful, this far exceeds practical selection and maintenance limits. A find_tool helper mitigates discovery but does not make the surface appropriately scoped.
The suite covers an unusually broad range of utility domains: encodings, hashes, JSON transforms, dates/time zones, geo calculations, finance, text processing, validators, protocol lints, and Colombia-specific helpers. Coverage is strong, though the catch-all "utils" scope means some areas (e.g. network and file operations) are absent and the overall surface is too sprawling to call fully complete.
Available Tools
493 toolsaba-routing-validateValidar número ABA (EE. UU.)ARead-onlyIdempotentInspect
Valida un número de ruta ABA de EE. UU. (9 dígitos, checksum 3-7-1). Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un IBAN (iban-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 9-digit US ABA routing transit number with the 3-7-1 weighted checksum and reports the Federal Reserve district from the first two digits. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating an IBAN (iban-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| routing | Yes | Routing number (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| district | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, closed-world, idempotent and non-destructive, so the description's job is to add more — and it does: no network access, no stored state, deterministic output, plus concrete limits (64 KB input, 1 s per call, 1 MB result). The determinism and latency/size ceilings are operationally useful details absent from 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?
Front-loaded with the core purpose and organized under labeled sections (Cuándo / No para / Efectos / Límites), so scanning is easy. The full Spanish and English duplication roughly doubles length for no added information, which keeps it short of a 5.
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?
A single-parameter, read-only validation tool with an output schema: the description covers scope, exclusions, determinism and resource limits, and the output schema carries the return shape. 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 adds real meaning the schema lacks: the value must be a 9-digit routing number validated with a 3-7-1 checksum, whereas the schema only says 'string up to 20 chars'. The only small gap is not explaining why maxLength is 20 when 9 digits are expected.
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 ('Valida un número de ruta ABA de EE. UU.') plus the algorithm (9 dígitos, checksum 3-7-1) and the extra output (distrito de la Reserva Federal). It also explicitly names the sibling it is not, iban-validate, so an agent can separate it from the other identifier validators 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 'Cuándo' clause gives the triggering condition (verify format and check digit offline before using an identifier) and the 'No para' clause names the excluded case and the alternative tool (iban-validate). Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accept-language-parseLeer Accept-LanguageARead-onlyIdempotentInspect
Analiza Accept-Language por prioridad q y, con idiomas soportados, elige la mejor coincidencia. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula (http-headers-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an Accept-Language header into languages sorted by q-value and, given supported locales, picks the best match (exact, then by primary language). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| header | Yes | Accept-Language value (string; required; up to 4096 chars). | |
| supported | No | Supported locales (array of string; optional; default []; up to 200 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| languages | No | |
| best_match | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds value beyond them: deterministic output for identical input, no network access, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not describe the shape of the returned match, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences are front-loaded and efficient, but the definition is repeated three times (Spanish body, English body, and an identical inputSchema.description) plus a meta pointer '[EN completo / full EN: inputSchema.description]' that adds nothing. The generic artifact list in 'Cuando' is template filler that does not earn 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?
For a two-parameter, read-only parsing tool with an output schema, the description covers purpose, exclusion, determinism, resource limits and matching semantics. An agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter types and bounds are already documented. The description nonetheless adds real semantics the schema lacks: that ordering follows q-value priority and that the matching against 'supported' is exact first, then by primary language — this tells the agent how the optional array actually affects the result.
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 opening sentence names a specific verb and resource: parses an Accept-Language header, sorts by q-value, and picks the best match from supported locales, with the exact-then-primary fallback rule spelled out. It also names the sibling it is not (http-headers-parse). The value is slightly diluted by the boilerplate 'Cuando' list of unrelated artifacts (URL, IP range, HTML document) that applies to the whole suite rather than this tool.
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 an explicit 'No para' clause naming http-headers-parse as the alternative for raw header blocks, which is real routing guidance. The positive 'Cuando' clause, however, is generic suite-wide boilerplate rather than conditions specific to this tool, so the agent gets one sharp exclusion but a fuzzy inclusion criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
age-calculateCalcular edadARead-onlyIdempotentInspect
Calcula la edad exacta en años, meses y días a una fecha de referencia, días vividos y días para el próximo cumpleaños. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: calcular la diferencia entre dos fechas (date-between). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact age in years, months and days on a reference date (required, for determinism), total days lived, and days until the next birthday (Feb 29 birthdays observed on Feb 28 in common years). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing the difference between two dates or date-times (date-between). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | Yes | Reference date YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| birth_date | Yes | Birth date YYYY-MM-DD (string; required; up to 10 chars; format date). |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | No | |
| years | No | |
| months | No | |
| total_days | No | |
| next_birthday | No | |
| birthday_today | No | |
| days_until_next_birthday | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnly/idempotent/non-destructive, the description adds context they don't carry: no network, no stored state, determinism guarantee, hard limits (64 KB input, 1 s per call, 1 MB result), and the specific leap-year rule for Feb 29 birthdays. This is substantive behavioral disclosure beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: purpose first, then when/not-for, then side effects, determinism, and limits. However, the Spanish and English blocks duplicate the same content and the trailing 'full EN: inputSchema.description' pointer is padding rather than 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 2-parameter read-only computation with full schema coverage and an output schema, the description covers everything an agent needs: semantics, sibling disambiguation, edge cases, limits, and determinism. No gaps remain 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 the baseline is 3, but the description adds meaning the schema doesn't: as_of is framed as a reference date that is required specifically for determinism, clarifying why both dates are mandatory. It does not add format detail beyond the schema's date/YYYY-MM-DD constraints.
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 names a specific verb and resource and enumerates the exact outputs: age in years/months/days, days lived, and days until next birthday. It explicitly distinguishes itself from the sibling date-between, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'Cuándo'/'When' and 'No para'/'Not for' framing, naming the exact alternative (date-between) and the condition that selects it (exact date/timezone/calendar results vs. difference between two dates). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent-card-validateValidar Agent Card A2AARead-onlyIdempotentInspect
Revisa una Agent Card de A2A (Agent2Agent): nombre, descripción, url https, versión, capacidades, modos y habilidades. Solo estructura. Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: revisar definiciones de herramientas MCP (mcp-tools-lint). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks an A2A (Agent2Agent) Agent Card JSON for the core fields: name, description, https url, version, capabilities, default input/output modes and skills (id, name, description, tags), plus provider and security hints. Structural check only. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| card | Yes | Agent Card JSON object (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| errors | No | |
| skills | No | |
| warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/idempotentHint/destructiveHint, but the description adds genuinely new operational facts: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits are the kind of information an agent needs to avoid a failed call and are not derivable from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and limits are front-loaded and labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), which is good structure. However, the Spanish body is followed by a partial English restatement that then defers to '[EN completo / full EN: inputSchema.description]' — pure duplication of the schema description with no new content, which inflates length without adding signal.
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 describe return values, and it covers the remaining essentials: read-only nature, no network, determinism, and size/time limits. The only gap is the imprecise 'Cuándo' trigger, which could lead an agent to send an OpenAPI document or a receipt to this tool instead of the dedicated sibling.
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 required parameter with 100% schema description coverage plus an inline example, so the schema largely carries this dimension. The description adds some value by spelling out which fields inside the `card` object are meaningful and by capping the payload at 64 KB, but it does not say what happens for a structurally valid card with unknown extra fields (schema sets additionalProperties=false on the wrapper).
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 (checks an A2A Agent Card JSON) and enumerates exactly what is inspected: name, description, https url, version, capabilities, default input/output modes, skills, provider and security hints. It also states the boundary 'Structural check only,' which tells an agent this is a lint-style tool, not a protocol conformance or runtime check, and it names the sibling it is not (mcp-tools-lint).
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 an explicit negative case ('No para: revisar definiciones de herramientas MCP (mcp-tools-lint)'), which is the most valuable routing signal here given how many similarly-named lint/validate siblings exist. The positive 'Cuándo' clause is weaker and muddled, sweeping in 'una lista de herramientas, un documento OpenAPI o un recibo' — inputs that actually route to openapi-summary, tool-definition-convert or recibo-verify, so the trigger condition slightly blurs the boundary it just drew.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent-readiness-checklistLista de preparación para agentesCRead-onlyIdempotentInspect
Puntúa qué tan preparado está un sitio para agentes de IA a partir del contenido pegado (robots.txt, llms.txt, HTML): acceso de rastreadores, llms.txt, metadatos y JSON-LD. Revisión básica. Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: revisar un llms.txt según el formato de llmstxt.org (llms-txt-lint). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Scores how ready a site is for AI agents from pasted content (robots.txt, llms.txt, homepage HTML): AI crawler access, llms.txt validity, title/description/canonical/lang, JSON-LD and sitemap. A free basic check, not a full audit. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Homepage HTML (string; optional). | |
| llms_txt | No | llms.txt content (omit if none) (string; optional). | |
| robots_txt | No | robots.txt content (empty string if none) (string; optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| score | No | |
| checks | No | |
| failed | No | |
| passed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by stating determinism, no network access (implying content must be pasted) and per-call time/result limits, which is real added value. But the '64 KB JSON input' limit contradicts the schema's own maxLength of 2 MB for html and 512 KB for llms_txt, so the stated boundary is untrustworthy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition restates the same content in Spanish and then again in the schema description, and one whole sentence (the 'Cuándo' clause) is off-topic and misleading. Front-loading is decent, but the redundancy and the misfit sentence dilute the useful parts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only scorer with an output schema, the description covers inputs, behavioral limits and a sibling exclusion. It is incomplete because the usage guidance is wrong for this tool and the input-size limit conflicts with the schema, leaving the agent with inconsistent constraints.
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 property already documents its type and whether it is optional, so the schema does the heavy lifting. The description adds only the semantic grouping of the three inputs (crawler access vs llms.txt validity vs metadata), which is marginal 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 opening sentence names a specific verb (scoring) and resource (AI-agent readiness of a site) and enumerates the evidence it uses: robots.txt, llms.txt, HTML, crawler access, JSON-LD. This is enough to separate it from llms-txt-lint, but the later 'Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo' sentence describes a completely different kind of task and muddies what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No para: llms-txt-lint' exclusion is genuinely useful routing. However, the positive 'when to use' clause talks about reading/converting agent descriptions, tool lists, OpenAPI documents or receipts — text that appears copy-pasted from another tool and directly conflicts with the stated purpose, so an agent following it would call this tool for the wrong inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ar-cbu-validateValidar CBU (Argentina)ARead-onlyIdempotentInspect
Valida una CBU/CVU argentina de 22 dígitos: bloque 1 (entidad 3 + sucursal 4 + dígito, pesos 7139713) y bloque 2 (cuenta 13 + dígito, pesos 3971…). Informa cada bloque. Solo valida. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un CUIT/CUIL argentino (ar-cuit-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 22-digit Argentine CBU/CVU: block 1 (bank 3 + branch 4 + check digit, weights 7139713) and block 2 (account 13 + check digit, weights 3971…). Reports each block. Validation only. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cbu | Yes | CBU or CVU (spaces or dashes allowed) (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | |
| valid | No | |
| account | No | |
| branch_code | No | |
| entity_code | No | |
| block1_valid | No | |
| block2_valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: determinism, no network, no stored state, and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result). The read-only/idempotent statements duplicate readOnlyHint/idempotentHint, but the limits and offline/deterministic guarantees are genuinely new information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening Spanish sentence is well front-loaded, but the description then repeats itself in a full English block and ends with a truncated dangling fragment "[EN completo / full EN: inputSchema.description]", which is noise rather than signal. The bilingual duplication roughly doubles length for the same 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?
With one required parameter, full schema coverage, rich annotations, and an existing output schema, the description covers the remaining gaps (offline, deterministic, limits, sibling exclusion). The only shortfall is the over-broad "LatAm o España" scope claim, which slightly undercuts routing accuracy.
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 single `cbu` parameter is already documented with type, maxLength, and an example. The description still adds meaning by explaining what the input is decomposed into (3-digit bank + 4-digit branch + check digit, 13-digit account + check digit) and that only validation, not normalization, occurs.
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 ("Valida una CBU/CVU argentina de 22 dígitos") and even names the internal block/check-digit structure it verifies. It explicitly rules out the sibling ar-cuit-validate, so an agent can distinguish it 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?
Provides an explicit "Cuándo" trigger (offline check of a user-supplied account/document number before storing or using it) plus a "No para" exclusion naming ar-cuit-validate. However, the stated scope "LatAm o España" is broader than the tool's actual Argentina-only CBU/CVU check, which could misroute an agent holding an IBAN, Mexican CLABE, or Spanish DNI.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ar-cuit-validateValidar CUIT/CUIL (Argentina)ARead-onlyIdempotentInspect
Valida un CUIT/CUIL argentino (11 dígitos, dígito verificador mod 11) e identifica el tipo de prefijo. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar una CBU/CVU argentina de 22 dígitos (ar-cbu-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an Argentine CUIT/CUIL (11 digits: type prefix, DNI, mod-11 check digit with weights 5432765432) and identifies the prefix type (person or company). When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a 22-digit Argentine CBU/CVU (ar-cbu-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT/CUIL (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| formatted | No | |
| prefix_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/openWorld/destructive hints, so the bar is lower; the description nonetheless adds useful operational detail (no network, no stored state, deterministic output, 64 KB input / 1 s / 1 MB limits). Some of the safety wording restates what the annotations declare, keeping it just 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?
Front-loaded with what the tool does, then when/not-for/effects/limits, one line each. The bilingual duplication with a pointer to the schema's EN text is slightly redundant but compact and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, annotations cover safety, and the description fills the remaining gaps an agent needs: determinism, offline behavior, size/time limits, and the sibling it must not be confused with. Nothing material is missing for a single-param validator.
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 'cuit' parameter is documented with type, length and an example. The description adds algorithm context (weights 5432765432) rather than input-format guidance, so it adds little 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 and resource with technical specificity (11 digits, prefix type, mod-11 check digit with weights) and explicitly differentiates from the sibling ar-cbu-validate (22-digit CBU/CVU). An agent can select this over near neighbors 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?
Uses explicit 'Cuándo/When' and 'No para/Not for' sections, naming the exact alternative tool (ar-cbu-validate) and the condition that selects it. It also gives the concrete context (offline pre-storage check of user-supplied IDs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-chunkDividir arreglo en bloquesARead-onlyIdempotentInspect
Divide un arreglo en bloques de tamaño fijo, p. ej. para enviar en lotes. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: ordenar un arreglo de valores u objetos por una o más claves (array-sort). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits an array into consecutive chunks of a given size (last chunk may be shorter), e.g. for batching API calls. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: sorting an array of values or objects by one or more keys (array-sort). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Chunk size (integer; required; min 1; max 100000). | |
| items | Yes | Array (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| chunks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent and closed-world, but the description adds real value beyond them: deterministic output, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not repeat the annotation fields verbatim, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and the labeled sections (Cuándo / No para / Efectos / Límites) make scanning easy. It is somewhat verbose and the full bilingual duplication doubles length, but every section carries information 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?
For a two-parameter, deterministic utility, the description covers purpose, alternatives, side effects and resource limits, and an output schema exists so return values need not be explained. 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 description coverage is 100%, so both parameters are already documented in the schema; the baseline is 3. The description's note that the last chunk may be shorter adds marginal semantic detail about the size parameter, but it doesn't explain formats or edge cases further.
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 ('Divide un arreglo en bloques de tamaño fijo') with the concrete purpose of batching, and explicitly names the sibling it is not (array-sort). An agent can distinguish it from other array tools 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?
Provides an explicit 'Not for' clause routing the agent to array-sort, which is strong. The positive 'Cuándo' guidance is broad ('transform, compare or check structured data exactly') and doesn't discriminate against other array siblings like array-flatten or array-group-by, 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.
array-count-byContar por valor o claveARead-onlyIdempotentInspect
Cuenta las apariciones de cada valor distinto (o de una clave), ordenadas de mayor a menor. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: agrupar objetos por el valor de una clave y devolver grupos y conteos (array-group-by). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts occurrences of each distinct value (or of a key's value), sorted by count descending. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: grouping objects by the value of a key (array-group-by). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Object key (dotted path allowed) to compare by (string; optional; up to 500 chars). | |
| items | Yes | Array (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | No | |
| distinct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive, but the description goes beyond them with concrete limits (64 KB input, 1 s per call, 1 MB result) and determinism, which annotations cannot express. These are operationally important for an agent deciding whether to call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is dense and front-loaded: purpose first, then when/not-for, side effects, determinism, limits. The only cost is full bilingual duplication, which roughly doubles length without adding 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 needn't be explained; annotations cover safety; the description still supplies limits, determinism, and the sibling alternative. Nothing an agent needs to call 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 both parameters are documented structurally. The phrase 'or of a key's value' clarifies what `by` does beyond the schema's own description, but the gain over the schema is marginal (no dotted-path semantics, ordering interaction, or edge-case notes added).
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 action: counts occurrences of each distinct value (or a key's value), sorted descending. Explicitly distinguishes from the sibling array-group-by, so an agent can choose between them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'When' (structured data that must be transformed, compared, or checked exactly) and an explicit 'Not for' pointing to array-group-by with the differentiator (returning groups and counts). This is textbook 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.
array-dedupeQuitar duplicados de un arregloARead-onlyIdempotentInspect
Elimina elementos duplicados (igualdad profunda) o por clave, conservando el primero. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: agrupar textos casi duplicados (dedupe-similar). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Removes duplicate items (deep equality via canonical JSON) or items with a duplicate key, keeping the first occurrence and original order. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: grouping near-duplicate strings (dedupe-similar). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Object key (dotted path allowed) to compare by (string; optional; up to 500 chars). | |
| items | Yes | Array (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | any JSON value |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds non-redundant operational context: hard limits (64 KB input, 1 s per call, 1 MB result), deterministic output, and that first-occurrence order is preserved. It does not add anything contradictory; determinism partly restates idempotentHint, which keeps it just short of 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?
Content is front-loaded and well segmented (purpose, when, not-for, side effects, determinism, limits), but the entire block is duplicated in Spanish and English, roughly doubling length with zero added information. The English half alone would merit a 5; the duplication is pure structural cost.
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 2-parameter, read-only array tool with an output schema, the description covers everything the agent needs: purpose, sibling boundary, purity guarantees, determinism, and hard size/time limits. Output formatting is covered by the output schema, so its absence from the description is not a gap.
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 would be 3. The description earns above baseline by explaining the comparison semantics that the schema cannot: default is deep equality via canonical JSON, while `by` switches to key-based comparison — that meaningfully disambiguates the optional `by` parameter, though it adds no new information about the `items` shape.
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 ("Elimina elementos duplicados") plus the two comparison modes (deep equality / by key) and the retention rule (keeps first occurrence, preserves order). It explicitly contrasts itself with the nearest sibling, dedupe-similar, so an agent can select between them 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?
Uses an explicit "Cuándo:/When:" clause naming the data shapes it is meant for (JSON, CSV, YAML, XML, arrays) and an explicit "No para:/Not for:" clause routing near-duplicate string grouping to dedupe-similar. Both the include and the exclude condition are stated, which is the top of the scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-filter-aggregateFiltrar, agrupar y totalizar un arregloARead-onlyIdempotentInspect
Aplica condiciones where a un arreglo de objetos (campos con punto), agrupa por campos y calcula count, count_distinct, sum, avg, min y max. Sin expresiones ni eval. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: agrupar objetos por el valor de una clave y devolver grupos y conteos (array-group-by). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Filters an array of objects with where-clauses (eq, ne, gt, gte, lt, lte, in, nin, contains, starts_with, ends_with, exists, is_null on dotted fields; all or any), then groups by fields and computes count, count_distinct, sum, avg, min and max. No expressions or eval. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of objects (array; required). | |
| limit | No | Keep at most this many groups (integer; optional; min 1; max 10000). | |
| match | No | Combine conditions with all (AND) or any (OR) (optional; one of: all, any; default "all"). | all |
| order | No | Sort order (optional; one of: asc, desc; default "desc"). | desc |
| where | No | Conditions (array of object; optional; default []; up to 20 items). | |
| sort_by | No | Sort groups by an aggregate name or group field (string; optional; up to 200 chars). | |
| group_by | No | Fields to group by (array of string; optional; default []; up to 5 items). | |
| aggregates | No | Aggregates (default: count) (array of object; optional; default []; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| groups | No | |
| matched | No | |
| group_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (read-only, idempotent, non-destructive, closed-world), it states no side effects, no network, no stored state, deterministic output, and hard limits: 64 KB input, 1 s per call, 1 MB result. These are operationally useful disclosures and do not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and structured into purpose, usage, side effects, determinism, and limits. It loses some conciseness by repeating the same information in Spanish and English, though each block remains readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety semantics and an output schema present, the description supplies the remaining operational context: scope, exclusions, determinism, side effects, and execution limits. 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 100%, so the schema already documents all eight parameters. The description lists operators and aggregates, but these largely mirror schema enums and field descriptions; it adds little syntax or edge-case guidance beyond structured 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?
The description opens with a specific verb sequence—filter, group, and aggregate—over an array of objects, and explicitly contrasts itself with array-group-by. This lets an agent identify the tool precisely versus sibling array utilities 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 gives a concrete 'Cuándo' for structured data transformations and an explicit 'No para' pointing to array-group-by for key-based grouping and counts. The alternative condition is clear enough to route between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-flattenAplanar arreglos anidadosARead-onlyIdempotentInspect
Aplana arreglos anidados hasta una profundidad dada. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: aplanar objetos y arreglos anidados en un nivel con claves con puntos (json-flatten-paths). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Flattens nested arrays to a given depth (default fully). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: flattening nested objects/arrays into one level with dotted keys (json-flatten-paths). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Depth (0 = no change) (integer; optional; default 100; min 0; max 100). | |
| items | Yes | Array (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, and closed-world behavior. The description adds useful context beyond annotations: no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and clearly segmented into purpose, when to use, when not to use, side effects, determinism, and limits. It is longer than strictly necessary because the same information is provided in both Spanish and English, but the structure is efficient and every section is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the input schema is fully covered, the description provides everything else an agent needs: use cases, exclusions, side-effect profile, determinism, and operational limits. There is no significant missing context 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 the schema already documents both parameters, including depth defaults and constraints. The description adds some useful semantics such as defaulting to full flattening, but does not need to explain parameters further and largely leaves this 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 and resource: flattens nested arrays to a given depth. It also clearly distinguishes itself from json-flatten-paths by naming the sibling and the exact behavior it does not implement.
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?
Explicitly gives the 'when' context (transforming, comparing, or checking structured data such as JSON, CSV, YAML, XML, arrays) and a 'not for' case that routes the agent to json-flatten-paths. This is actionable guidance without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-group-byAgrupar arreglo por claveARead-onlyIdempotentInspect
Agrupa objetos por el valor de una clave y devuelve grupos y conteos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: contar las apariciones de cada valor distinto (array-count-by). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Groups objects by the value of a key (dotted path), returning an object of arrays and group counts; missing keys go under "null". When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: counting occurrences of each distinct value (array-count-by). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Object key (dotted path allowed) to compare by (string; required; up to 500 chars). | |
| items | Yes | Array (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | No | |
| groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: the null bucket for missing keys, determinism, and concrete operational limits (64 KB input, 1 s per call, 1 MB result) that the annotations do not carry. Some sentences (read-only, no network, no stored state) merely restate readOnlyHint/openWorldHint, but the limits and null-handling are genuine additions and nothing conflicts with the declared hints.
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 and well-structured: purpose, when/not-for, side effects, determinism, and limits in labeled clauses. The bilingual duplication doubles the token cost with identical content, which is defensible for a Spanish-titled tool but is still redundancy rather than efficiency.
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 covers return values, the annotations cover safety and idempotency, and the description fills the remaining gaps an agent needs: which sibling to prefer, what happens to missing keys, size/time bounds that could cause failure, and determinism. Nothing material is left unspecified.
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 schema already documents `by` as a dotted-path key and `items` as a required array, so the description is largely restating structured data. It does clarify that a missing path yields a "null" group, which is the only semantics added beyond the schema — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (groups objects by the value of a key) plus the exact output shape (object of arrays plus group counts) and the edge case (missing keys fall under "null"). It also explicitly names the sibling array-count-by as the thing it is not, so an agent can distinguish the two 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?
Provides an explicit "Cuándo/When" clause and a hard exclusion ("No para: contar las apariciones… array-count-by"), which is more than most definitions offer. The positive when-to-use clause is broad enough to apply to many array tools, so it stops short of a full 5, but the routing to the alternative is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-pluckExtraer una clave de cada objetoARead-onlyIdempotentInspect
Extrae el valor de una clave de cada objeto de un arreglo. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: agrupar objetos por el valor de una clave y devolver grupos y conteos (array-group-by). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts the value at a key (dotted path) from every object in an array; missing values become null or are dropped. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: grouping objects by the value of a key (array-group-by). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Object key (dotted path allowed) to compare by (string; required; up to 500 chars). | |
| items | Yes | Array (array; required). | |
| drop_missing | No | Drop items without the key (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| values | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's side-effect, determinism, and no-network statements align with the annotations (readOnlyHint, idempotentHint, openWorldHint=false) rather than contradicting them. It adds genuinely new operational context the annotations do not carry: 64 KB input cap, 1 s per call, and 1 MB result cap, which are important for planning large batches.
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 core action and cleanly labeled (When / Not for / Side effects / Deterministic / Limits), so an agent can scan for the relevant clause. The full bilingual duplication roughly doubles the length, which is a deliberate accessibility trade-off but not 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 a 3-parameter pure transform with an output schema, the definition covers scope, alternative routing, safety profile, determinism, and hard resource limits. Nothing an agent needs to invoke it correctly is missing, and return-value shape is rightly left to 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 100%, so the baseline would be 3, but the description adds behavior the schema only implies: missing values become null or are dropped, which explains the effect of drop_missing rather than just its type. Dotted-path keys are reinforced in prose, though no extra format or escaping rules are given.
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: extracts the value at a key (dotted path) from every object in an array, including null/drop semantics for missing keys. It explicitly contrasts itself with array-group-by, so an agent can distinguish it from the other array-* siblings 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?
Contains explicit 'Cuándo/When' guidance (transform, compare, or check structured data exactly) and an explicit 'No para/Not for' clause naming the alternative tool array-group-by and the exact behavior that belongs to it. No inference is required to pick between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-set-opsOperaciones de conjuntos con arreglosARead-onlyIdempotentInspect
Calcula unión, intersección, diferencia o diferencia simétrica de dos arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: eliminar elementos duplicados (array-dedupe). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes union, intersection, difference (a−b) or symmetric difference of two arrays using deep equality, preserving first-seen order. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: removing duplicate items (array-dedupe). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First array (array; required). | |
| b | Yes | Second array (array; required). | |
| operation | Yes | Operation (required; one of: union, intersection, difference, symmetric_difference). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the description only needs incremental detail — and it delivers: hard limits (64 KB JSON input, 1 s per call, 1 MB result), determinism, and the deep-equality/order-preservation semantics of the comparison. A 4 rather than 5 because it does not say what happens when a limit is exceeded (truncation vs. 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?
Front-loaded with the operation list and organized into labeled clauses (When / Not for / Side effects / Deterministic / Limits), which is easy to scan. Slightly penalized for full Spanish/English duplication, which doubles length for the same 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 no prose. The description covers the operation set, comparison semantics, safety profile, determinism, and resource limits — everything needed to invoke correctly and predict behavior.
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 adds meaning the schema cannot: elements are compared by deep equality, output order follows first-seen order, and difference is directional (a−b). That last point matters because the enum alone lists 'difference' without stating orientation.
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, enumerates the four supported operations (union, intersection, difference, symmetric difference), and specifies deep equality plus first-seen order preservation. It explicitly names the sibling array-dedupe as the thing it is not, so an agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'Cuándo/When' and 'No para/Not for' clauses, and names the alternative tool (array-dedupe) with the condition that selects it. Nothing about when to reach for this versus a sibling 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.
array-shuffleBarajar o muestrear arregloARead-onlyInspect
Mezcla un arreglo (Fisher-Yates) o toma una muestra de k elementos sin reemplazo. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: ordenar un arreglo de valores u objetos por una o más claves (array-sort). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio salvo que se dé seed. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Shuffles an array (Fisher-Yates) or draws a sample of k items without replacement. Uses secure randomness, or a seed for reproducible results. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: sorting an array of values or objects by one or more keys (array-sort). Side effects: none (read-only, no network access, no stored state). Not deterministic: random unless seed is given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed for reproducible output (string; optional; up to 256 chars). | |
| items | Yes | Array (array; required). | |
| sample_size | No | Return only k items (integer; optional; min 0; max 100000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false and idempotentHint=false, so safety is covered structurally. The description adds genuinely new behavioral context beyond that: secure randomness, non-determinism unless a seed is supplied, and hard limits (64 KB input, 1 s runtime, 1 MB result) -- useful operational facts an agent cannot read from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and cleanly sectioned (Cuándo / No para / Efectos secundarios / Límites), so nothing is buried. However, the full Spanish text is repeated verbatim in English, roughly doubling length without adding 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 an output schema exists (no need to describe return values), full parameter coverage, and complete annotations, the description still supplies the missing pieces an agent needs: randomness/determinism behavior and size/time limits. Nothing material is absent 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 the baseline is 3, but the description goes further: it explains that supplying a seed makes output reproducible and that sample_size means 'k elements without replacement' -- semantics the terse schema descriptions ('Return only k items') do not convey. That added meaning justifies exceeding 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 and resource: shuffles an array via Fisher-Yates or draws a k-item sample without replacement. It explicitly contrasts with array-sort ('No para: ordenar un arreglo...'), so an agent can distinguish it from the nearest sibling 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?
Provides an explicit 'Cuándo' section describing the triggering context (transforming/comparing/checking structured data like JSON, CSV, YAML, XML, arrays) and an explicit 'No para' exclusion pointing at array-sort. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
array-sortOrdenar arregloARead-onlyIdempotentInspect
Ordena un arreglo de valores u objetos por una o más claves (orden estable, natural). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: ordenar líneas con intercalación por idioma (lines-sort). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Sorts an array of values or objects by one or more keys (stable), ascending or descending, numbers before strings, with locale-aware natural string comparison. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: sorting lines with locale-aware collation (lines-sort). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Keys to sort by (empty: sort values) (array of string; optional; default []; up to 10 items). | |
| items | Yes | Array (array; required). | |
| order | No | Order (optional; one of: asc, desc; default "asc"). | asc |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description goes further with concrete operational limits (64 KB input, 1 s per call, 1 MB result), determinism guarantee, and no-state/no-network confirmation. These are useful traits an agent cannot derive from the 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?
Front-loaded with the core verb and behavior, and each sentence (when, not-for, side effects, determinism, limits) earns its place. However, the full ES/EN duplication roughly doubles the length for the same content, which slightly hurts conciseness.
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 schema and annotations handle return format and safety profile, while the description covers scope, limits, ordering semantics, and determinism. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantic value beyond the schema: the 'stable' guarantee, 'numbers before strings', and 'locale-aware natural string comparison' clarify sort behavior. It doesn't add much on the `by`/`order` parameters themselves, 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 (sorts), resource (array of values or objects), and distinguishing behavior (stable, ascending/descending, numbers before strings, locale-aware natural comparison). It explicitly names the sibling it is not for (lines-sort), so the agent can tell it apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When' clause lists the concrete data shapes (JSON, CSV, YAML, XML, arrays) suited for it, and an explicit 'Not for' clause routes line-collation tasks to lines-sort. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ascii85-decodeDecodificar Ascii85ARead-onlyIdempotentInspect
Decodifica Ascii85 (con o sin <~ ~>). Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar bytes en Ascii85 (ascii85-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes Ascii85 (with or without <~ ~>), supporting the z shorthand. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding bytes as Ascii85 (ascii85-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ascii85 | Yes | Ascii85 string (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/idempotent/destructive, so the "side effects: none" sentence largely repeats structured data. The description does add genuinely new behavioral context: the z shorthand and delimiter tolerance, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result) that the agent cannot infer elsewhere.
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?
Each individual language version is tight and front-loaded, but the full text is duplicated verbatim in Spanish and English, roughly doubling the token cost for a simple two-parameter codec. Nothing is wasted within a language, yet the overall payload is larger than necessary.
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. With purpose, exclusion, determinism, side-effect profile, and concrete size/time limits all present, an agent has everything required to call this correctly and to predict failure modes.
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 baseline is 3. The description goes slightly beyond the schema by explaining accepted Ascii85 variants (delimiters optional, z shorthand), which matters for formatting the `ascii85` argument, though it says nothing about `output_encoding` beyond what the enum 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+resource ("Decodifica Ascii85") and immediately qualifies the accepted input forms ("con o sin <~ ~>", z shorthand). It explicitly names the inverse sibling ascii85-encode, so an agent can distinguish the two 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?
Has an explicit "Cuándo/When" and a "No para/Not for" that routes encoding work to ascii85-encode. The only blemish is that the When clause says bytes must be converted "to or from" this encoding, which momentarily implies both directions; the Not-for line resolves it, so the guidance is clear but not perfectly airtight.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ascii85-encodeCodificar Ascii85ARead-onlyIdempotentInspect
Codifica bytes en Ascii85 (variante Adobe), con delimitadores <~ ~> opcionales. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Ascii85 (ascii85-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes bytes as Ascii85 (Adobe/btoa variant, z for zero groups), optionally wrapped in <~ ~> delimiters. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding Ascii85 (ascii85-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| delimiters | No | Wrap in <~ ~> (boolean; optional; default false). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ascii85 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing concrete limits (64 KB JSON input, 1 s per call, 1 MB output), determinism, and the 'z for zero groups' variant behavior — all operationally relevant. The 'no side effects / no network / no stored state' sentence largely restates readOnlyHint, openWorldHint and destructiveHint, which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each language version is tightly front-loaded (variant first, then when/not-for, then side effects, limits), which is good structure. However, the description duplicates the entire content verbatim in Spanish and English, roughly doubling length without adding 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 pure-function encoder with an output schema and full annotation coverage, everything needed to invoke it correctly is present: variant semantics, delimiter behavior, input limits and determinism. Return values are covered by the output schema, so no gap remains.
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 data, delimiters and input_encoding are already fully documented in the schema, making 3 the baseline. The description adds only the meaning of the <~ ~> wrapper and the Adobe/z behavior, and says nothing about when to pick input_encoding=hex versus utf8.
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 plus the exact variant: 'Codifica bytes en Ascii85 (variante Adobe)' and in EN clarifies 'Adobe/btoa variant, z for zero groups'. The agent can immediately distinguish it from ascii85-decode and from base64/hex siblings because both the resource and the flavor of Ascii85 are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'Cuándo' (convert bytes/text to or from this encoding, exactly) and an explicit 'No para: decodificar Ascii85 (ascii85-decode)' that names the alternative tool. The only flaw is the phrase 'o desde ella' (or from it), which hints at round-tripping and slightly muddies the otherwise clean encode-vs-decode boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backoff-schedulePlan de reintentos con esperaARead-onlyIdempotentInspect
Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: interpretar Retry-After (retry-after-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes retry delays for exponential, linear or constant backoff with a cap and optional jitter (full, equal or decorrelated; seeded for reproducibility), and the cumulative wait. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: parsing an HTTP Retry-After value (retry-after-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for jitter (reproducible) (string; optional; up to 100 chars). | |
| factor | No | Multiplier for exponential (number; optional; default 2; min 1; max 10). | |
| jitter | No | Jitter (optional; one of: none, full, equal, decorrelated; default "none"). | none |
| max_ms | No | Cap per delay ms (number; optional; default 30000; min 0; max 86400000). | |
| base_ms | No | Base delay ms (number; optional; default 500; min 0; max 3600000). | |
| retries | No | Number of retries (integer; optional; default 5; min 1; max 100). | |
| strategy | No | Strategy (optional; one of: exponential, linear, constant; default "exponential"). | exponential |
Output Schema
| Name | Required | Description |
|---|---|---|
| total_ms | No | |
| delays_ms | No | |
| cumulative_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-open-world, idempotent, and non-destructive behavior. The description adds important context beyond annotations: no network, no stored state, deterministic output, and concrete limits of 64 KB input, 1 second per call, and 1 MB result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and every major section is useful, but the description is duplicated in Spanish and English and ends with an odd pointer to inputSchema.description. The bilingual repetition makes it longer than necessary for a tool whose schema already carries detailed parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, complete parameter descriptions, and rich annotations; the description still supplies the remaining context an agent needs: purpose, alternatives, determinism, side effects, and execution limits. 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?
The input schema has 100% description coverage for all seven parameters, including defaults, ranges, and enums. The description usefully names the backoff strategies and jitter modes, but it mostly restates schema-level semantics rather than adding parameter-specific detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: computes retry delays for exponential, linear, or constant backoff, with cap and optional jitter, plus cumulative wait. It explicitly distinguishes itself from the sibling retry-after-parse, so an agent can route correctly 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?
It provides explicit when-to-use guidance for an agent loop needing exact, repeatable bookkeeping results. It also names the specific alternative, retry-after-parse, and states when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base32-decodeDecodificar Base32ARead-onlyIdempotentInspect
Decodifica Base32 RFC 4648 a texto o hex. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar en Base32 RFC 4648 (base32-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes RFC 4648 Base32 (case-insensitive, padding and spaces optional) to UTF-8 text, hex or base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding text or hex bytes as RFC 4648 Base32 (base32-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base32 | Yes | Base32 string (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so restating 'read-only, no network, no stored state' adds little. The genuinely new information is the parsing tolerance (case-insensitive, padding and spaces optional), determinism and the operational limits (64 KB input, 1 s, 1 MB result), which are useful but the description spends half its behavioral budget duplicating annotation content.
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, then When / Not for / Side effects / Deterministic / Limits in a scannable pattern. It is however presented twice, in Spanish and English, which roughly doubles length without adding information for an English-reading agent.
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 two-parameter decoder with an output schema already defining return values, the description covers direction, alternatives, tolerance rules and hard limits. Nothing an agent needs in order 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 both parameters are documented structurally and the 3 baseline applies. The description adds meaning the schema lacks: that the input is parsed case-insensitively with optional padding and spaces, and that output_encoding governs how decoded bytes are rendered.
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 (decode RFC 4648 Base32) plus the concrete output targets (UTF-8 text, hex, base64). It also names the sibling it is not (base32-encode), so an agent can distinguish it 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?
Explicit 'When' clause and explicit 'Not for' exclusion pointing at base32-encode as the alternative, covering both directions of conversion. Routing guidance is complete with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base32-encodeCodificar Base32ARead-onlyIdempotentInspect
Codifica en Base32 RFC 4648 (A-Z, 2-7), p. ej. para secretos TOTP. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base32 RFC 4648 a texto o hex (base32-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes text or hex bytes as RFC 4648 Base32 (A-Z, 2-7) with optional padding, e.g. for TOTP secrets. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding RFC 4648 Base32 (base32-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| padding | No | Add = padding (boolean; optional; default true). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| base32 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, yet the description still adds real value: it spells out no side effects, no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result) that annotations cannot express.
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 core statement and cleanly structured with When / Not for / Side effects / Deterministic / Limits labels. The full Spanish-then-English duplication doubles the length, which is a real cost even though each language block is disciplined.
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 small pure-function tool with an output schema, full annotation coverage and 100% parameter documentation, nothing an agent needs to invoke it correctly is missing; limits and determinism round out the operational picture.
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 would be 3, but the description adds meaning: it clarifies the RFC 4648 alphabet (A-Z, 2-7) and that the input may be text or hex bytes, which maps to the input_encoding enum, plus optional padding. It does not, however, discuss when to pick utf8 vs hex or padding=false.
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: encodes text or hex bytes as RFC 4648 Base32 (A-Z, 2-7) with optional padding, plus a concrete use case (TOTP secrets). It explicitly names the sibling it is not (base32-decode), so an agent can distinguish it 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?
Provides explicit routing: 'Not for: decoding RFC 4648 Base32 (base32-decode)' and a 'When:' clause about exact conversion. The only flaw is the reciprocal phrase 'convert to or from this encoding', which slightly blurs the encode-only boundary that the exclusion then corrects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base58check-decodeDecodificar Base58CheckARead-onlyIdempotentInspect
Decodifica Base58Check, verifica el checksum y devuelve el payload y el byte de versión. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar un payload hex en Base58Check (base58check-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes Base58Check, verifies the 4-byte double-SHA-256 checksum and returns the payload and its first (version) byte. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding a hex payload (base58check-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base58check | Yes | Base58Check string (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| version | No | |
| payload_hex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing the 4-byte double-SHA-256 checksum verification, that the first byte is interpreted as version, determinism of output, and hard limits (64 KB JSON input, 1 s per call, 1 MB result). Read-only/no-network/no-stored-state is stated but is already covered by readOnlyHint and openWorldHint, so the added limits carry the score.
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?
Each language version is front-loaded and efficiently structured with labeled When/Not-for/Side-effects/Limits. However the full text is duplicated in Spanish and English, roughly doubling length without adding information; a tighter single-language-plus-gloss would score higher.
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 needn't be explained, yet the description still notes payload plus version byte. With limits, determinism, and the encode alternative all covered, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented required parameter including an example, so the schema already does the work. The description adds nothing parameter-specific (e.g. no note on whitespace, length limits below the 4096-char schema cap, or what an invalid checksum yields), 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+resource (decode Base58Check, verify checksum, return payload and version byte) and names the sibling it is not (base58check-encode). An agent can distinguish it from base58-decode and base58check-encode 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?
Explicit "Cuándo" and "No para" sections, with base58check-encode named as the alternative. Minor deduction: the When clause says bytes/text must be converted "a esta codificación, o desde ella", which half-describes the encode direction and muddies the boundary versus base58check-encode and base58-decode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base58check-encodeCodificar Base58CheckARead-onlyIdempotentInspect
Codifica un payload hex en Base58Check: añade 4 bytes de doble SHA-256 y codifica el resultado en Base58. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base58Check y verificar su checksum (base58check-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes a hex payload (including any version byte) as Base58Check: appends the first 4 bytes of double SHA-256 and encodes the result in Base58. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding Base58Check and verifying its checksum (base58check-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| payload_hex | Yes | Payload in hex, including version byte (string; required; up to 4096 chars; pattern ^([0-9a-fA-F]{2})*$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| base58check | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and closed-world, and the description reinforces them while adding genuinely new context: determinism, the 64 KB input cap, 1 s per-call budget and 1 MB result cap. It stops short of describing the output shape, but an output schema exists, so this is close to 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?
Information is front-loaded—algorithm first, then when/not-for, then side effects and limits—and every sentence carries content. The cost is that the entire block is duplicated in Spanish and English, roughly doubling length for a single-language reader.
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 one-parameter deterministic encoder with an output schema, this covers everything an agent needs: algorithm, when to use, the sibling alternative, safety profile, determinism and operational limits. Nothing material is left 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?
Schema coverage is 100% and the schema already documents payload_hex, its pattern, max length and the 'including version byte' nuance. The description's note about 'including any version byte' adds emphasis but no new syntax or format information, so 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 and resource plus the exact algorithm (append 4 bytes of double SHA-256, then Base58), so the agent knows precisely which transformation happens. It also distinguishes itself from base58check-decode and, implicitly, from plain base58-encode by naming the checksum step.
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?
Explicit 'Cuándo' plus an explicit 'No para' clause naming base58check-decode as the alternative for decoding/verifying checksums. Both the use case and the exclusion route the agent unambiguously.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base58-decodeDecodificar Base58ARead-onlyIdempotentInspect
Decodifica Base58 (alfabeto Bitcoin) a hex o texto. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar en Base58 (base58-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes Bitcoin-alphabet Base58 to hex, UTF-8 text or base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding bytes in Base58 with the Bitcoin alphabet (base58-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base58 | Yes | Base58 string (string; required; up to 4096 chars). | |
| output_encoding | No | Output (optional; one of: hex, utf8, base64; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive behavior, and the description adds concrete operational details: no network access, no stored state, deterministic output, and specific limits (64 KB JSON input, 1 s per call, 1 MB result). These details materially help an agent invoke the tool safely and predictably.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The information is organized with labeled sections and is front-loaded with the purpose. It is somewhat longer than necessary because the Spanish and English versions duplicate the same content, but the structure remains clear and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and rich annotations, so the description need not explain return values or safety basics. It covers the important limits and side effects, though it could be slightly more complete by mentioning Base58Check as a neighboring alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds useful input-format context by specifying the Bitcoin Base58 alphabet and names the output encodings, but most parameter meaning is already fully 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?
The description states a specific verb and resource: decode Base58 using the Bitcoin alphabet into hex, UTF-8 text, or base64. It explicitly distinguishes itself from the sibling base58-encode tool, so an agent can identify the 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 gives an explicit exclusion (not for encoding; use base58-encode) and a general usage context. However, the Spanish/English phrasing 'a esta codificación, o desde ella' / 'to or from this encoding' is slightly ambiguous for a decode-only tool, and it does not mention the related base58check-decode alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base58-encodeCodificar Base58ARead-onlyIdempotentInspect
Codifica en Base58 (alfabeto Bitcoin). Entrada de hasta 2 KB. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base58 (base58-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes bytes in Base58 with the Bitcoin alphabet; leading zero bytes become leading 1s. Input up to 2 KB. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding Bitcoin-alphabet Base58 to hex, UTF-8 text or base64 (base58-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input (string; required; up to 4096 chars). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| base58 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is largely covered by structured data. The description still adds useful non-redundant context: determinism, no network/stored state, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That is solid but mostly restates what the hints imply, so it sits below 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?
Content is front-loaded and every clause is substantive (when/not-for/limits), but the entire description is duplicated in Spanish and English, roughly doubling length for an agent that only needs one. The redundancy costs efficiency even though 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?
Return values are covered by an existing output schema, and the description supplies the remaining context an agent needs: determinism, size/time/output limits, and the leading-zero edge case. 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 description coverage is 100% and both parameters (data, input_encoding) are documented in the schema, so the baseline is 3. The description adds only the rough input size bound (2 KB) and the notion of text-vs-bytes, but does not explain the utf8/hex switch or its default 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?
States a specific verb + resource (encode bytes to Base58 with the Bitcoin alphabet) and adds a distinguishing behavioral detail: leading zero bytes become leading 1s. It names the sibling it is not (base58-decode) and is easily separated from base58check-encode and the other base-N encoders.
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?
Explicit 'When:' clause (convert bytes/text to this encoding exactly) and explicit 'Not for:' clause routing decoding to base58-decode. Alternatives and the exclusion condition are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64-decodeDecodificar Base64ARead-onlyIdempotentInspect
Decodifica Base64 (estándar o URL-safe) a texto UTF-8 o hex. Rechaza caracteres inválidos. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto (base64-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes standard or URL-safe Base64 (padding optional, whitespace ignored) to UTF-8 text, hex or base64. Rejects characters outside the alphabet. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding text (base64-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base64 | Yes | Base64 string (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description adds genuinely new behavior: invalid characters are rejected, padding is optional, whitespace is ignored, plus concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That is exactly the kind of constraint an agent cannot get from the annotation block.
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 core verb and resource, then clearly labeled Cuándo / No para / Efectos / Determinista / Límites sections that each carry distinct information. Cost is the full bilingual duplication, and 'Determinista' largely repeats the idempotentHint annotation.
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 two-parameter pure function with an output schema and full annotation coverage, the description covers input tolerance, error rejection, size/time limits and side-effect freedom — everything needed to invoke it correctly. Return-value shape is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema lacks: whitespace in the input is ignored and out-of-alphabet characters are rejected, which tells the agent how leniently to clean input before calling. It also confirms the three output encodings, though the Spanish half omits the 'base64' output option.
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: decodes standard or URL-safe Base64 into UTF-8 text, hex or base64, and explicitly names base64-encode as the thing it is not. It does not address the very close sibling base64url-decode, so the agent still has to infer when this tool versus that one applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' and 'No para' pair with a named alternative (base64-encode), which most siblings lack. However the 'when' clause is muddled ('convertir bytes o texto a esta codificación, o desde ella'), describing both directions for a one-directional tool, and never mentions base64url-decode or ascii85/base32/base58 decode siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64-encodeCodificar Base64ARead-onlyIdempotentInspect
Codifica texto (UTF-8) o bytes en Base64 estándar (RFC 4648) con relleno. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base64 (base64-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes text (UTF-8) or hex/base64 bytes as standard Base64 (RFC 4648 §4) with padding. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding standard or URL-safe Base64 (base64-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| base64 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description still adds real information: no network access, no stored state, deterministic output, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). Those limits and the determinism guarantee are exactly the operational facts an agent needs and cannot get from 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?
Front-loaded with the action, then labelled sections (When / Not for / Side effects / Deterministic / Limits), so scanning is easy. It is however duplicated verbatim across Spanish and English, roughly doubling length for a two-parameter tool, even if every individual sentence carries 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?
With an output schema present and rich annotations, the description needs only the operational envelope — and it supplies it: accepted input forms, RFC variant, determinism, absence of side effects, and size/time ceilings. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the enum values and default are already documented; the description adds only that text is interpreted as UTF-8. The EN text says 'hex/base64 bytes' as valid input while the schema enum permits only utf8 and hex, which mildly misleads about what 'data' may contain.
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 (encode text/bytes to standard Base64, RFC 4648 §4, with padding) and immediately names the sibling it is not (base64-decode), plus the URL-safe variant is implicitly excluded by 'Base64 estándar'. An agent can distinguish it from base64url-encode and base64-decode 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?
Explicit 'Cuándo' and 'No para' clauses with a named alternative (base64-decode), which is stronger than most definitions. The one flaw is the 'o desde ella' / 'to or from this encoding' phrasing, which suggests decoding is also in scope and sits awkwardly against the explicit 'No para: decodificar Base64' exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64url-decodeDecodificar Base64urlARead-onlyIdempotentInspect
Decodifica Base64 URL-safe a texto UTF-8 o hex. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar en Base64 URL-safe (base64url-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes URL-safe Base64 (RFC 4648 §5, padding optional) to UTF-8 text, hex or base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding text or hex bytes as URL-safe Base64 (base64url-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base64url | Yes | Base64url string (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint, and destructiveHint=false. The description adds useful behavior beyond those annotations: deterministic output, no network or stored state, optional padding handling, and explicit input/time/result limits. It does not cover invalid-input behavior, but the added operational constraints are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well-structured and front-loads purpose, usage, side effects, and limits. However, the full description is duplicated in Spanish and English, which doubles the length without adding new information for an agent and works against conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, full parameter schema coverage, and rich annotations, the description supplies everything else an agent needs: purpose, alternative routing, determinism, side effects, and operational limits. No critical invocation 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 description coverage is 100%, so the schema already documents both parameters. The description adds meaningful semantics beyond the schema, notably RFC 4648 §5 and optional padding for the input, plus the available output encodings. This is useful but not strictly necessary given the complete 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 states a specific verb and resource: decoding URL-safe Base64 to UTF-8, hex, or base64. It distinguishes itself from the sibling encoder by explicitly naming base64url-encode as the not-for alternative. An agent can identify the tool's purpose 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 explicit when-to-use guidance ('bytes or text have to be converted to or from this encoding exactly') and explicit when-not-to-use guidance, naming the sibling alternative base64url-encode. The routing condition between encode and decode is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base64url-encodeCodificar Base64urlARead-onlyIdempotentInspect
Codifica en Base64 URL-safe (RFC 4648 §5, sin relleno), como en JWT. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base64 URL-safe a texto UTF-8 o hex (base64url-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes text or hex bytes as URL-safe Base64 (RFC 4648 §5: - and _ alphabet, no padding), as used in JWTs. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding URL-safe Base64 (base64url-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| base64url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety recap is redundant. The description earns credit for the operational limits not in structured fields: 64 KB JSON input, 1 s per call, 1 MB output ceiling, plus explicit determinism.
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 definition, then labeled sections for when/not-for/side effects/limits, which is easy to scan. It is however fully duplicated in Spanish and English, roughly doubling length without adding information for a single reader.
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 plus full schema coverage handle safety and parameters. Determinism and size/time limits close the remaining gaps an agent would need before calling.
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% with an enum on input_encoding and defaults documented, so the schema carries parameter semantics fully. The description only loosely gestures at bytes-vs-text, adding no format or validation 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 and resource with the exact variant (URL-safe Base64, RFC 4648 §5, no padding, JWT usage), which is exactly what distinguishes it from sibling base64-encode. An agent can route between the base64 family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names when to use it and names the excluded alternative (base64url-decode) in a labeled 'Not for' clause. Minor internal noise: 'convertir bytes o texto a esta codificación, o desde ella' ('or from it') blurs the boundary the next sentence draws, but the exclusion is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
basic-auth-headerCabecera de autenticación BasicBRead-onlyIdempotentInspect
Construye el encabezado Authorization Basic (RFC 7617). Es solo base64, no cifrado; requiere HTTPS para la confidencialidad. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: firmar un JWT con un secreto HMAC (jwt-sign-hmac). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds an HTTP Basic Authorization header value from a username and password (RFC 7617, UTF-8). Basic auth is only base64, not encryption; it needs HTTPS for confidentiality. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: signing a JWT with an HMAC secret (jwt-sign-hmac). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | Password (string; required; up to 1024 chars). | |
| username | Yes | Username (no colon) (string; required; up to 1024 chars; pattern ^[^:]*$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| header | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's 'no side effects, deterministic' lines largely restate them. It does add genuinely new behavioral context: the security caveat that Basic auth is base64, not encryption, and requires HTTPS, plus concrete limits (64 KB input, 1 s per call, 1 MB result). Those additions are real but modest for a pure-function 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?
Purpose is front-loaded and the security caveat is well placed, but the entire body is duplicated in Spanish and English, roughly doubling length for zero added information. The trailing '[EN completo / full EN: inputSchema.description]' pointer is noise that points at text the agent already has.
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 params are covered by the schema. Purpose, security posture, determinism, and resource limits are all stated, which is ample for a two-string pure function. The remaining gap is that the 'When' section is generic boilerplate rather than describing real usage scenarios.
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 both parameters are fully documented and the no-colon username constraint lives in the pattern. The description adds the RFC 7617/UTF-8 framing, which affects how the output is encoded, but no additional per-parameter meaning. Baseline 3 applies 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?
Names a specific verb and resource — 'Builds an HTTP Basic Authorization header value from a username and password (RFC 7617, UTF-8)' — so an agent knows exactly what it produces. Sibling differentiation is thin: the only named alternative is jwt-sign-hmac, which is far from the nearest neighbors (base64-encode, url-build), and the 'When' clause lists unrelated resources.
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 'When:' clause is boilerplate that does not describe this tool's use case — it talks about parsing URLs, IP ranges, and HTML/Markdown documents, which this tool does not do. The only real routing signal is 'Not for: signing a JWT with an HMAC secret (jwt-sign-hmac)', which is accurate but points at a distant sibling. An agent gets no guidance on when a Basic header is the right thing versus e.g. base64-encode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bech32-decodeDecodificar Bech32ARead-onlyIdempotentInspect
Decodifica Bech32/Bech32m, detecta la variante y devuelve prefijo y datos. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar bytes hex con un prefijo legible como Bech32 (bech32-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a Bech32 or Bech32m string, detects which checksum variant is valid, and returns the prefix, 5-bit words and 8-bit data when convertible. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding hex bytes with a human-readable prefix as Bech32 (bech32-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| bech32 | Yes | Bech32 string (string; required; up to 1023 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hrp | No | |
| valid | No | |
| words | No | |
| variant | No | |
| data_hex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's 'read-only, no network, no stored state' largely restates them. What it genuinely adds beyond structured data are concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result) and the determinism guarantee, which are useful for call planning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The structure is excellent — purpose first, then When / Not for / Side effects / Deterministic / Limits — and every sentence carries information. The only cost is full duplication in Spanish and English, which roughly doubles length for a single-parameter tool.
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 adds limits, determinism, side-effect profile and the sibling alternative. For a one-parameter decoder, 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?
With a single parameter at 100% schema description coverage, the schema already documents the input fully (type, maxLength 1023, example). The description adds no syntax, casing, or edge-case guidance (e.g., handling of uppercase or mixed-case strings) 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 EN text states a specific verb and resource ('Decodes a Bech32 or Bech32m string'), plus the extra behaviors of variant detection and the returned fields (prefix, 5-bit words, 8-bit data). It explicitly names the sibling it is not (bech32-encode), so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an explicit 'When' block, a 'Not for' block and a named alternative (bech32-encode), which is more than most definitions offer. However, the 'When' line says the tool applies when bytes or text must be converted 'to or from this encoding', which overlaps with the encoding direction it just excluded — a small internal ambiguity about directionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bech32-encodeCodificar Bech32ARead-onlyIdempotentInspect
Codifica bytes hex con un prefijo legible como Bech32 (BIP-173) o Bech32m (BIP-350). Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar una cadena Bech32 o Bech32m (bech32-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes hex bytes with a human-readable prefix as Bech32 (BIP-173) or Bech32m (BIP-350), converting 8-bit bytes to 5-bit groups. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding a Bech32 or Bech32m string (bech32-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| hrp | Yes | Human-readable part (string; required; at least 1 chars; up to 83 chars; pattern ^[!-~]+$). | |
| variant | No | Checksum variant (optional; one of: bech32, bech32m; default "bech32"). | bech32 |
| data_hex | Yes | Data bytes in hex (string; required; up to 1000 chars; pattern ^([0-9a-fA-F]{2})*$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bech32 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so restating 'read-only, no network' is largely redundant. What genuinely adds value is the operational limit set — 64 KB JSON input, 1 s per call, 1 MB result — which no annotation or schema field conveys and which an agent needs to avoid failed calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labelled structure (When / Not for / Side effects / Deterministic / Limits) is well front-loaded and easy to scan. But the entire block is duplicated in Spanish and English, roughly doubling length with zero informational gain for the calling agent, which dilutes the useful 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?
With an output schema present and annotations covering the safety profile, the description need not explain return values; it still covers purpose, routing, limits and determinism. The only residual gap is the contradictory 'to or from this encoding' phrasing on an encode-only 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 100% and all three parameters (hrp, variant, data_hex) are fully documented with patterns, bounds, enum and default in the schema itself. The description adds only the conceptual framing of hrp as a 'human-readable prefix' and the byte-width conversion, 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 and resource (encode hex bytes plus a human-readable part) into Bech32/Bech32m, names both BIP-173 and BIP-350, and even describes the transformation (8-bit bytes to 5-bit groups). It is unambiguously distinguishable from bech32-decode and from the many other base32/base58/base64 encoders in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When:' and 'Not for: decoding ... (bech32-decode)' clauses route the agent correctly and name the alternative sibling. However, the 'When' clause also says 'to or from this encoding' ('o desde ella'), which blurs the very boundary the 'Not for' sentence draws, since decoding is exactly what it says not to use this tool for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bigint-calcAritmética de enteros grandesARead-onlyIdempotentInspect
Realiza aritmética exacta de enteros grandes: suma, resta, multiplicación, división, potencia, comparación. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: evaluar una expresión matemática con un analizador propio (expression-evaluate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact arbitrary-precision integer arithmetic: add, subtract, multiply, divide (floor quotient and remainder), power (result ≤ 10,000 digits), compare. When: a numeric result has to be exact or reproducible instead of estimated. Not for: evaluating an arithmetic expression with its own parser (expression-evaluate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First integer (integer or string; required; up to 5001 chars; pattern ^-?\d{1,5000}$). | |
| b | Yes | Second integer (integer or string; required; up to 5001 chars; pattern ^-?\d{1,5000}$). | |
| operation | Yes | Operation (required; one of: add, subtract, multiply, divide, power, compare). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| quotient | No | |
| remainder | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes further by adding operational limits (64 KB input, 1 s per call, 1 MB result), the power digit cap (≤10,000 digits), and a determinism guarantee. These are concrete constraints an agent cannot infer from the annotations or schema.
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?
Content is front-loaded with purpose, then when/not-for, then side effects and limits — a logical order with no filler sentences. However, the entire block is duplicated in Spanish and English, which roughly doubles length for identical 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 prose. With limits, determinism, side-effect disclosure, sibling routing, and 100% param coverage all present, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3, but the description adds real semantic value: it clarifies that 'divide' returns floor quotient and remainder, and that power results are bounded at 10,000 digits. The a/b/operation parameters themselves are not elaborated beyond the schema, so not a full 5.
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 ('Realiza aritmética exacta de enteros grandes') and enumerates the supported operations (add, subtract, multiply, divide, power, compare). It explicitly names the sibling it is not (expression-evaluate), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When:' condition (result must be exact/reproducible, not estimated) and an explicit 'Not for:' exclusion pointing to expression-evaluate. Both the selection and deselection criteria are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bill-splitDividir cuenta con propinaARead-onlyIdempotentInspect
Divide una cuenta entre personas con propina opcional y redondeo de cada parte. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: dividir un monto en partes que suman exactamente el total (money-allocate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits a bill among people with an optional tip % (on pre-tax or total) and rounding up of each share, keeping the shares summing to the total charged. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: splitting an amount into parts that add up exactly (money-allocate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| total | Yes | Bill total (number; required; min 0; max 1000000000000). | |
| people | Yes | People (integer; required; min 1; max 1000). | |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
| tip_base | No | Amount the tip is computed on (default total) (number; optional; min 0). | |
| round_up_to | No | Round each share up to a multiple of this (e.g. 1000 COP) (number; optional; > 0). | |
| tip_percent | No | Tip % (number; optional; default 0; min 0; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | |
| surplus | No | |
| collected | No | |
| per_person | No | |
| grand_total | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the read-only/no-network/deterministic statements largely restate structured data. The description does add value beyond them: explicit operational limits (64 KB JSON input, 1 s per call, 1 MB result) and the guarantee that rounded shares still sum to the total charged. It does not clarify what happens when round_up_to forces shares above the total, which leaves one behavioral edge case open.
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?
Structure is excellent: purpose first, then labeled When / Not for / Side effects / Deterministic / Limits sections that are easy to scan. The cost is full bilingual duplication of essentially identical content, which roughly doubles token length for no informational gain.
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 essential routing, safety and limit information is present. The remaining gap is the unresolved edge case of how round_up_to interacts with the 'shares sum to total' promise, which matters for a tool whose whole point is exactness.
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 schema already documents total, people, currency, tip_base, round_up_to and tip_percent. The description adds only marginal semantics — that the tip is computed on pre-tax or total (mapping to tip_base) and that rounding applies per share — and never mentions currency or the interaction between round_up_to and the sum-to-total guarantee.
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 (split a bill among people) plus the two defining behaviors: optional tip and per-share rounding that keeps shares summing to the charged total. It explicitly names the sibling it is not (money-allocate), so an agent can route between them 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 'Cuándo / When' clause names the trigger condition (money, tax or financial-math results that must be exact and reproducible), and the 'No para / Not for' clause names the concrete alternative tool (money-allocate) with the distinguishing criterion (parts must add up exactly). Both use and exclusion are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
binary-decodeBinario a textoARead-onlyIdempotentInspect
Convierte bits 0/1 a texto UTF-8. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: convertir texto UTF-8 a bytes binarios de 8 bits separados por espacios (binary-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a string of 0/1 bits (spaces optional, length a multiple of 8) to UTF-8 text or hex. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting UTF-8 text to space-separated 8-bit binary bytes (binary-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| binary | Yes | Bits (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, but the description adds operationally useful context beyond them: no side effects, no stored state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). These are things the agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then when/not-for, side effects, determinism, and limits in a clean order. The full text is duplicated in Spanish and English, which doubles length for the same content, though the structure itself is 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, annotations covering the safety profile, and both parameters documented in schema plus description, an agent has everything needed to invoke this correctly. The only omission (base64 output) is already visible in the 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 100%, but the description adds real meaning the schema does not: spaces are optional in the bit string and length must be a multiple of 8. Minor gap: it says output is 'text UTF-8 or hex' while the schema enum also permits base64, so the output_encoding option is under-described.
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 ('Convierte bits 0/1 a texto UTF-8') and explicitly names the sibling it is not: binary-encode. An agent can distinguish the two directions of the binary conversion 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?
Provides an explicit 'Cuándo' section describing the situation that selects this tool, plus a 'No para' clause naming binary-encode as the alternative for the opposite direction. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
binary-encodeTexto a binarioARead-onlyIdempotentInspect
Convierte texto UTF-8 a bytes binarios de 8 bits separados por espacios. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: convertir bits 0/1 a texto UTF-8 (binary-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts UTF-8 text to space-separated 8-bit binary bytes. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting a string of 0/1 bits (binary-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required; up to 16384 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| binary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description nonetheless adds real context beyond them: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s, 1 MB result). The only blemish is that the stated 64 KB input limit does not match the schema's maxLength of 16384 chars, a mild internal inconsistency rather than an annotation contradiction.
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 core conversion, then labeled sections (When / Not for / Side effects / Deterministic / Limits) that scan well. The full Spanish-plus-English duplication roughly doubles the length for identical content, which costs a point against strict conciseness.
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, output-schema-backed tool, nothing an agent needs is missing: purpose, routing, side effects, determinism and hard limits are all stated, and 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 description coverage is 100% with a single required 'text' string, so the schema already carries parameter meaning. The description adds only the implicit notion that the text is UTF-8, which is baseline-level value — the 3 baseline 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 and resource ('Convierte texto UTF-8 a bytes binarios de 8 bits separados por espacios') and explicitly names the sibling it is not for ('binary-decode'). An agent can distinguish it from the many other encoders in the sibling list 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?
Uses explicit 'Cuándo'/'When' and 'No para'/'Not for' clauses naming the alternative (binary-decode) and the condition that selects it. This is the when-to-use / when-not / alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitcoin-address-validateValidar dirección BitcoinARead-onlyIdempotentInspect
Valida una dirección Bitcoin sin conexión: Base58Check (P2PKH/P2SH) o Bech32/Bech32m (SegWit). Solo sintaxis y checksum. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: verificar que una cadena sea una clave pública Solana válida en sintaxis: Base58 que decodifica a 32 bytes (solana-address-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Bitcoin address offline: Base58Check P2PKH/P2SH (mainnet/testnet version bytes) or Bech32/Bech32m SegWit (BIP-173/350 witness version and program length rules). Syntax and checksum only. When: an identifier's format and check digit have to be verified offline before it is used. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Bitcoin address (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| network | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description adds concrete context on top: no network access, no stored state, deterministic output, and hard limits (64 KB JSON input, 1 s per call, 1 MB result). It also scopes the check to syntax and checksum only, which prevents an agent from assuming semantic/on-chain validation.
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 purpose, then labeled sections for conditions, exclusions, side effects and limits, so an agent can skim. It loses a point because the body is duplicated verbatim in the inputSchema description and closes with a dangling pointer ('[EN completo / full EN: inputSchema.description]') that adds no 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 explained, annotations cover the safety profile, and the description supplies the remaining operational context: offline nature, determinism, and size/time limits. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter and 100% schema coverage, the schema already documents the field, but the description adds real semantic meaning by defining which address grammars are accepted and that validation stops at syntax plus checksum. It does not restate the maxLength, but the accepted-format detail is more useful than that.
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 (validate a Bitcoin address) and enumerates the exact address families and encodings covered: Base58Check P2PKH/P2SH and Bech32/Bech32m SegWit with BIP-173/350 rules. It also names the sibling it is not (solana-address-validate), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Cuándo' line gives the triggering condition (offline verification of format and check digit before using an identifier) and the 'No para' line explicitly excludes the Solana public-key case with the alternative tool named. This is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bm25-rankRanking por palabras clave (BM25)ARead-onlyIdempotentInspect
Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: ordenar hasta 2.000 vectores por similitud coseno con un vector consulta y devolver los k mejores (vector-top-k). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Ranks up to 2,000 documents for a query with Okapi BM25 (k1, b tunable) using accent-insensitive Unicode word tokens, e.g. to pick passages for retrieval without embeddings. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| b | No | b (number; optional; default 0.75; min 0; max 1). | |
| k | No | Top k (integer; optional; default 5; min 1; max 2000). | |
| k1 | No | k1 (number; optional; default 1.2; min 0; max 5). | |
| query | Yes | Query (string; required; at least 1 chars; up to 2000 chars). | |
| documents | Yes | Documents (array of string; required; at least 1 items; up to 2000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so 'no side effects / deterministic' largely restates structured data. However the description adds genuinely new behavioral facts not in annotations or schema: 64 KB input cap, 1 s per-call latency budget, and 1 MB result ceiling.
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 and well ordered: purpose, when, when-not, side effects, determinism, limits. It loses a point for the duplicated Spanish/English halves that repeat the same facts and the dangling meta-note '[EN completo / full EN: inputSchema.description]', which is noise rather than 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?
With rich annotations, a full output schema and 100% schema coverage, the remaining burden is limits and boundaries — and those are all stated (input size, latency, result size, determinism, no network). Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds marginal meaning by noting k1 and b are tunable and that tokens are accent-insensitive, but it never explains what k1/b control or how k relates to the returned list beyond a passing mention of 'los k mejores' in the negative example.
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 (rank), resource (documents for a query), and algorithm (Okapi BM25 with tunable k1/b), plus the accent-insensitive tokenization detail that distinguishes it from generic sorters. It explicitly names the sibling it is not (vector-top-k), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'Cuándo' block with concrete agent-loop scenarios (tokens, costs, retries, chunking, JSON clean-up) and an explicit 'No para' block naming vector-top-k as the alternative for cosine-similarity ranking. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
br-cnpj-validateValidar CNPJ (Brasil)ARead-onlyIdempotentInspect
Valida un CNPJ brasileño, incluido el formato alfanumérico vigente desde julio de 2026, con sus dos dígitos verificadores. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un CPF brasileño (br-cpf-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Brazilian CNPJ, including the alphanumeric format introduced from July 2026 (letters valued as ASCII − 48), with both mod-11 check digits; formats as 11.222.333/0001-81. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CPF (br-cpf-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | CNPJ (string; required; up to 24 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| formatted | No | |
| alphanumeric | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description reinforces this with 'sin red, sin estado guardado' and a determinism guarantee. The added value is in the concrete limits (64 KB input, 1 s per call, 1 MB result), which no annotation or schema field expresses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and each fact is useful, but the same text is delivered twice (a full Spanish block followed by an equivalent English block) and then a third time lives in inputSchema.description, referenced by a pointer sentence. Roughly half the description is duplication, which dilutes an otherwise tight 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 one-parameter validator with an output schema and full annotations, nothing an agent needs is missing: accepted formats, check-digit semantics, offline/deterministic behavior, resource limits, and the sibling to use for CPF are all stated.
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 single param is documented with an example and maxLength, so the schema carries the baseline. The description still adds real meaning: it tells the agent the alphanumeric format is accepted (letters valued as ASCII − 48) and that output is formatted as 11.222.333/0001-81, which the schema only hints at via one example.
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 ('Valida un CNPJ brasileño') and immediately scopes it to the alphanumeric format from July 2026 with both mod-11 check digits. It explicitly names the sibling it is not (br-cpf-validate), so an agent can separate the two Brazilian document validators 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?
Gives explicit 'Cuándo' and 'No para' clauses plus the named alternative br-cpf-validate, which is exactly the routing information an agent needs. The trigger phrasing ('documento o número de cuenta de LatAm o España') is looser than the tool's actual scope — a CNPJ is a Brazilian company registry number, not a generic LatAm account number — which could pull in slightly wrong calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
br-cpf-validateValidar CPF (Brasil)ARead-onlyIdempotentInspect
Valida un CPF brasileño (11 dígitos, dos dígitos verificadores) y lo formatea (529.982.247-25). Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un CNPJ brasileño (br-cnpj-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Brazilian CPF (11 digits, two mod-11 check digits), rejecting repeated-digit numbers, and formats it as 529.982.247-25. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CNPJ (br-cnpj-validate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cpf | Yes | CPF (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is pre-covered. The description nonetheless adds real context beyond them: determinism, no network/stored state, and operational limits (64 KB input, 1 s per call, 1 MB result) that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish block is tightly structured with explicit labels (Cuándo, No para, Efectos secundarios, Determinista, Límites), so it is front-loaded and scannable. The full English duplicate plus the identical text repeated in inputSchema.description is some redundancy, but it does not obscure the key 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 details are unnecessary in the description. Between the algorithm, the negative case, the side-effect profile and the resource limits, an agent has everything needed to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage, the baseline is 3. The description still adds meaning beyond the schema's bare 'up to 20 chars': the 11-digit plus two-check-digit structure and the expected formatted output '529.982.247-25', which tells the agent what accepted input looks like.
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 ('Valida un CPF brasileño'), specifies the algorithm (11 digits, two mod-11 check digits), the rejection rule (repeated digits) and the formatting behavior. It also explicitly distinguishes itself from the sibling br-cnpj-validate, so an agent can tell the two apart 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 has an explicit 'Cuándo' clause (checking a user-supplied LatAm/Spanish ID offline before storing or using it) and an explicit 'No para' clause routing Brazilian CNPJ checks to br-cnpj-validate. When-to-use, when-not, and the alternative are all stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
br-pix-brcodeCrear o leer BR Code Pix (copia e cola)ARead-onlyIdempotentInspect
Construye un BR Code Pix «copia e cola» (TLV EMVCo con GUI br.gov.bcb.pix, llave o URL dinámica, monto, txid y CRC16) o lee y revisa uno, según los manuales del Banco Central do Brasil. Solo formato; nunca afirma un pago. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: leer un payload QR EMVCo de comercio (emvco-qr-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a Pix "copia e cola" BR Code (EMVCo TLV with GUI br.gov.bcb.pix, key or dynamic URL, amount, txid, CRC16-CCITT) or parses and checks one, following the Banco Central do Brasil manuals. Format only; it never claims a payment. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Pix key (CPF, CNPJ, +55 phone, e-mail or random UUID key) (string; optional; up to 77 chars). | |
| mcc | No | Merchant category code (string; optional; default "0000"; up to 4 chars; pattern ^\d{4}$). | 0000 |
| url | No | Dynamic location URL without https:// (instead of key) (string; optional; up to 77 chars). | |
| txid | No | Transaction id (letters and digits, max 25; "***" when none) (string; optional; default "***"; up to 25 chars; pattern ^(\*\*\*|[A-Za-z0-9]{1,25})$). | *** |
| action | No | build a payload or parse one (optional; one of: build, parse; default "build"). | build |
| amount | No | Amount in BRL (omit to let the payer type it) (number; optional; min 0.01; max 9999999999.99). | |
| payload | No | BR Code to parse (string; optional; up to 512 chars). | |
| single_use | No | Point of initiation 12 (single use) (boolean; optional; default false). | |
| description | No | Free text for the payer (26-02) (string; optional; up to 72 chars). | |
| postal_code | No | CEP (ID 61) (string; optional; up to 9 chars; pattern ^[0-9-]{1,9}$). | |
| merchant_city | No | Receiver city (max 15 ASCII characters) (string; optional; up to 40 chars). | |
| merchant_name | No | Receiver name (max 25 ASCII characters; accents are removed) (string; optional; up to 60 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| crc | No | |
| key | No | |
| url | No | |
| kind | No | |
| note | No | |
| txid | No | |
| valid | No | |
| amount | No | |
| errors | No | |
| length | No | |
| payload | No | |
| key_type | No | |
| merchant | No | |
| warnings | No | |
| single_use | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description adds real beyond-schema facts: format only and it never claims a payment, deterministic output for identical input, no network or stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). Only the read-only/no-side-effect restatement is redundant with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb statement, but it pads with a mismatched 'Cuándo' sentence about rounding/rates, then repeats the whole definition as a truncated EN block ending in a meta-reference '[EN completo / full EN: inputSchema.description]'. Those notches cost space without adding decision value.
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 optional parameters, an output schema, and full annotation coverage, the definition still supplies what matters: build-vs-parse mode via action, key-or-URL choice, no-payment guarantee, determinism, and hard size/time limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does add the useful semantic point that key and dynamic URL are alternatives ('llave o URL dinámica'), but the schema already says 'instead of key' on url, so marginal value is small.
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 and resource: builds a Pix BR Code (EMVCo TLV with GUI br.gov.bcb.pix, key or dynamic URL, amount, txid, CRC16) or parses/checks one, per Banco Central do Brasil manuals. It explicitly names the sibling it is not for (emvco-qr-parse), so an agent can discriminate 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?
'No para: leer un payload QR EMVCo de comercio (emvco-qr-parse)' gives an explicit exclusion plus the alternative tool, which is the strongest part. The positive 'Cuándo' clause, however, talks about money/tax/financial-math exactness, which reads as boilerplate from a math toolkit and does not actually describe the Pix-BR-Code use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business-days-addSumar días hábilesARead-onlyIdempotentInspect
Suma o resta N días hábiles a una fecha, saltando fines de semana y festivos. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: sumar o restar N días hábiles a una fecha usando los festivos de Colombia (co-business-days-add). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds (or subtracts) N working days to a date, skipping configurable weekend days and given holidays; useful for due dates and SLAs. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: adding or subtracting N business days (co-business-days-add). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| days | Yes | Business days to add (negative subtracts) (integer; required; min -10000; max 10000). | |
| weekend | No | Weekend days (0=Sun … 6=Sat) (array of integer; optional; default [0,6]; up to 6 items). | |
| holidays | No | Holiday dates YYYY-MM-DD to skip (array of string; optional; default []; up to 2000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| weekday | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, so the safety profile is covered; the description adds value with determinism (same input, same output) and hard operational limits (64 KB input, 1 s per call, 1 MB result) that no annotation conveys. The "no stored state, no network" note partly restates annotations but reinforces the pure-function model. It does not discuss error behavior for invalid dates or oversized holiday lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and every clause is substantive, but the content is delivered twice (ES and EN) and the English text is repeated again in the schema description, roughly tripling the reading cost. The "Not for" sentence also echoes the purpose verbatim before getting to the differentiator (Colombian holidays).
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?
Return values are covered by the output schema, and the description supplies the remaining pieces an agent needs: scope, sibling exclusion, determinism and resource limits. Only minor gaps remain (error semantics for malformed dates, whether holidays may fall on weekend days).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with per-property descriptions for date, days, weekend (0=Sun…6=Sat, default [0,6]) and holidays (up to 2000 entries), so the schema already carries full parameter meaning. The description only broadens this to "configurable weekend days and given holidays" without adding format or interaction detail, which is the expected baseline-3 case.
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 (add/subtract N working days to a date) and immediately specifies scope: skips configurable weekend days and supplied holidays. It also names the sibling it is not (co-business-days-add with Colombian holidays), so an agent can separate the generic tool from the localized one 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?
Explicit "When" clause ties use to contexts demanding exact calendar arithmetic (offset drift, DST, month ends, leap years), and a "Not for" clause points to co-business-days-add. It does not mention other adjacent siblings such as business-days-between or date-add, so routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business-days-betweenDías hábiles entre fechasARead-onlyIdempotentInspect
Cuenta días hábiles entre dos fechas, excluyendo fines de semana configurables y festivos. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: contar días hábiles entre dos fechas en Colombia, excluyendo domingos, sábados (co-business-days-between). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts working days between two dates, excluding configurable weekend days and a list of holidays. By default counts days after start up to and including end; inclusive counts both ends. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: counting business days (co-business-days-between). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (string; required; up to 10 chars; format date). | |
| start | Yes | Start date (string; required; up to 10 chars; format date). | |
| weekend | No | Weekend days (0=Sun … 6=Sat) (array of integer; optional; default [0,6]; up to 6 items). | |
| holidays | No | Holiday dates YYYY-MM-DD to skip (array of string; optional; default []; up to 2000 items). | |
| inclusive | No | Count the start date too (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| business_days | No | |
| holidays_skipped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substance: no side effects, no network, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). That is exactly the extra 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?
Front-loaded and each block is useful, but the full definition is duplicated in Spanish and English, and the ES 'No para' sentence is garbled ('contar días hábiles... en Colombia' reads as if it were the purpose). A truncated artifact ('[EN completo / full EN: inputSchema.description]') also appears inline.
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 schema exists and all five parameters are documented, plus limits and determinism are stated, so an agent has enough to call it correctly. The confusing bilingual 'No para' phrasing and duplicated EN block are the only 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 100%, so the baseline is 3. The description earns more by explaining the counting convention (default counts days after start through end; inclusive counts both ends), which clarifies the `inclusive` flag beyond the schema's 'Count the start date too'.
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 ('Cuenta días hábiles entre dos fechas') plus the exclusion scope (configurable weekends and holidays). It also names the sibling it is not, so an agent can separate it from co-business-days-between 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?
Explicit 'Cuándo' and 'No para' sections, with the alternative co-business-days-between named for the Colombian case. The positive condition ('a date, time-zone or calendar result has to be exact') is somewhat generic and does not distinguish it from date-between or business-days-add, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache-control-parseLeer Cache-ControlARead-onlyIdempotentInspect
Analiza Cache-Control en directivas y resume si es almacenable en cachés compartidas o privadas. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula (http-headers-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a Cache-Control header into directives (max-age, s-maxage, no-store, private, immutable, stale-while-revalidate…) and summarizes cacheability by shared and private caches. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| header | Yes | Cache-Control value (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| directives | No | |
| ttl_seconds | No | |
| must_revalidate | No | |
| cacheable_shared | No | |
| cacheable_private | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and no open-world access, and the description largely echoes that. It does add value beyond annotations: determinism ('same input, same output') and concrete limits (64 KB input, 1 s per call, 1 MB result).
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 is front-loaded and clear, but the 'Cuándo' enumeration (URL, token, version, IP range, HTML, Markdown, agent-readiness file) is irrelevant boilerplate that adds noise rather than helping select this tool. It sits alongside useful side-effect and limit statements.
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?
A single-param read-only tool with an output schema (so return values needn't be explained), determinism, no-side-effect and limit disclosures. Nothing essential for correct invocation is missing; only the noisy 'Cuándo' clause detracts.
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?
Only one parameter with 100% schema description coverage, so the schema already documents the header value, format and length. The description adds no syntax or format detail beyond what the schema states, so 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 and resource: parses a Cache-Control header into directives and summarizes shared/private cacheability. It names the exact sibling it replaces (http-headers-parse), so an agent can distinguish it 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?
Provides an explicit 'No para' exclusion routing the agent to http-headers-parse for raw header blocks, which is genuinely useful. However the 'Cuándo' clause is boilerplate listing URLs, tokens, IP ranges, HTML/Markdown docs that has little to do with Cache-Control parsing, diluting the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar-monthCalendario del mesARead-onlyIdempotentInspect
Devuelve un mes como cuadrícula de semanas (inicio lunes o domingo) con números de semana ISO. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: describir un año y mes (month-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns a month as a grid of weeks (Monday or Sunday first) with ISO week numbers, suitable for rendering a calendar. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: describing a year and month (month-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (integer; required; min 1; max 9999). | |
| month | Yes | Month 1-12 (integer; required; min 1; max 12). | |
| week_start | No | First day of week (optional; one of: monday, sunday; default "monday"). | monday |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | No | |
| month | No | |
| weeks | No | |
| headers | No | |
| week_start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by stating no side effects (no network, no stored state), determinism, and hard limits (64 KB input, 1 s, 1 MB output). These are operational constraints an agent cannot derive from readOnlyHint/idempotentHint alone, so the extra context is genuinely valuable.
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 core purpose, then cleanly sectioned into When / Not for / Side effects / Limits. Both Spanish and English versions are given, which is slightly redundant but each line carries distinct 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 unnecessary, and the description still covers side effects, determinism and execution limits. For a small pure-function calendar tool this leaves no material gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so year, month and week_start (with enum and default) are already fully documented. The description only echoes the week-start choice and the ISO week numbering, adding no format or edge-case semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Devuelve un mes como cuadrícula de semanas') plus the distinguishing features (ISO week numbers) and explicitly names the sibling it is not, month-info. An agent can distinguish it from date-iso-week, month-info and calendar siblings 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?
Uses explicit 'Cuándo' and 'No para' sections, naming the alternative (month-info) and the condition that selects this tool (date/timezone results that must be exact). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
card-brand-detectDetectar marca de tarjetaARead-onlyIdempotentInspect
Detecta la franquicia de una tarjeta por su prefijo, valida longitud y Luhn y devuelve el número enmascarado. No guarda nada ni prueba que la tarjeta exista. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un número con el algoritmo de Luhn (luhn-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Detects a payment card brand from its IIN prefix (Visa, Mastercard, Amex, Diners, Discover, JCB, UnionPay, Maestro, Elo, Hipercard, Mir), checks length and Luhn, and returns only a masked number. Nothing is stored; this does not prove the card exists. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a number with the Luhn mod-10 checksum (luhn-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Card number (PAN) (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| brand | No | |
| masked | No | |
| luhn_valid | No | |
| valid_length | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, yet the description still adds non-obvious facts: nothing is stored, it does not prove the card exists, no network access, deterministic output, and explicit limits (64 KB input, 1 s, 1 MB result). That is exactly the context annotations 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?
Front-loaded with the core action, then clearly labeled sections (Cuándo / No para / Efectos / Determinista / Límites). The parallel ES and EN blocks plus the schema description repeating the same English text make it longer than strictly necessary, but 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?
For a one-parameter, read-only tool with an output schema, everything an agent needs is present: input expectation, what the result is masked, the no-storage/no-existence-proof caveat, determinism, and operational limits. No return-value explanation is required given 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?
With 100% schema coverage and a single well-documented parameter (with an example including spaces), the baseline is 3. The description adds only the framing that matching is done on the IIN prefix and that output is masked, which is marginal 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 ('Detecta la franquicia de una tarjeta por su prefijo'), enumerates the brands covered, and clarifies that length + Luhn are checked and only a masked number is returned. An agent can distinguish this from a pure checksum 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?
Explicitly gives a 'Cuándo' (offline format/check-digit verification before using an identifier) and routes to a named alternative ('No para ... luhn-validate'). The Luhn boundary is slightly muddy because the tool itself performs Luhn, so the agent has to infer the difference is scope (brand + length + mask vs. bare checksum), but the when/when-not structure is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-camelConvertir a camelCaseARead-onlyIdempotentInspect
Convierte texto o un identificador a camelCase, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: convertir texto a PascalCase (case-pascal). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to camelCase, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: converting text to PascalCase (case-pascal). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, so the side-effect sentence largely restates structured data. What it adds beyond that is genuinely new: hard limits (64 KB input, 1 s per call, 1 MB result) and the determinism/Unicode-preservation guarantees, which help an agent size its calls.
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, then labeled When / Not for / Side effects / Deterministic / Limits, which is easy to scan. It is duplicated in Spanish and English, roughly doubling length, but each labeled clause carries distinct 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 shape needs no explanation, and the description covers the remaining gaps an agent would care about: splitting rules, Unicode handling, determinism, and size/time limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required 'text' parameter documented in-schema, so the baseline is 3. The description adds transformation semantics (how words are split) rather than anything about the parameter itself, so no reason to score higher.
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 ('Convierte texto o un identificador a camelCase') plus the exact word-splitting rule (spaces, punctuation, camelCase/acronym boundaries, Unicode preserved). It also names the sibling case-pascal as the thing it is not, so an agent can separate it from the other nine case-* tools 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?
Explicit 'Cuándo' context (exact transformation/comparison/measurement rather than approximation) and an explicit 'No para' exclusion that names the alternative tool (case-pascal). The routing decision is fully determined by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-constantConvertir a CONSTANT_CASEARead-onlyIdempotentInspect
Convierte texto o un identificador a CONSTANT_CASE, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to CONSTANT_CASE, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, and the description still adds real value beyond them: explicit side-effect statement (no network, no stored state), determinism guarantee, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits are operational facts an agent can't get from 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?
Each language version is well front-loaded and organized under clear labels (Cuándo / No para / Efectos / Límites), but the full Spanish and English texts are near-verbatim duplicates, roughly doubling length without adding information. Note also a minor internal inconsistency: the description cites a 64 KB JSON limit while the schema sets maxLength 4096.
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. For a single-param, deterministic pure function, the description covers purpose, routing, safety profile, determinism and resource limits — 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?
With a single parameter at 100% schema description coverage, the schema already documents `text` type, requiredness, maxLength and an example. The description adds only behavioral detail (how splitting works) rather than parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and target format ('Convierte texto o un identificador a CONSTANT_CASE') and immediately specifies the tokenization rule (spaces, punctuation, camelCase/acronym boundaries) plus Unicode preservation. This distinguishes it cleanly from the ~10 sibling case-* converters that share the same verb.
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?
Explicit 'Cuándo:' gives the positive trigger (exact transform/compare/measure rather than approximate) and 'No para:' names the alternative tool (case-detect) with the condition that selects it. The agent does not have to infer anything about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-detectDetectar estilo de identificadorARead-onlyIdempotentInspect
Detecta la convención de nombre de un identificador (camel, snake, kebab…). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: convertir texto a camelCase (case-camel). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Detects the naming convention of an identifier: camel, pascal, snake, constant, kebab, train, dot, lower, upper, title, or mixed. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: converting text to camelCase (case-camel). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Identifier (string; required; up to 1024 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| case | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so 'no side effects' and 'deterministic' largely restate structured data. What the description genuinely adds beyond annotations is the operational envelope: 64 KB JSON input, 1 s per call, 1 MB result — concrete limits an agent needs before calling with large payloads.
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?
Content is well front-loaded — the core verb and resource come first, then When/Not-for/Side effects/Deterministic/Limits labels. The one waste is full duplication of every sentence in Spanish and English, which roughly doubles length for a single-parameter tool.
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 one-parameter, read-only tool with annotations and an output schema present, the description covers purpose, exclusions, determinism and size/time limits — everything needed to call it safely. Only minor gap is that the 'mixed' outcome and how ambiguous identifiers are classified is not explained.
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 'text' parameter is fully documented (required, up to 1024 chars, with an example), so the baseline is 3. The description adds no syntax or format detail about the identifier itself (e.g. whether punctuation or mixed input is allowed) beyond the stated 64 KB request cap.
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 (detect the naming convention of an identifier) and enumerates the exact conventions returned: camel, pascal, snake, constant, kebab, train, dot, lower, upper, title, mixed. It also explicitly separates itself from the case-* conversion siblings by naming case-camel as the tool to use for conversion, so an agent can pick 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?
Gives a 'When' clause (text must be transformed, compared or measured exactly rather than approximated) and a 'Not for' clause pointing at case-camel for conversion. The guidance is clear but the 'When' condition is somewhat abstract, and only one of the many case-* siblings (case-snake, case-kebab, case-pascal, case-swap, etc.) is named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-dotConvertir a dot.caseARead-onlyIdempotentInspect
Convierte texto o un identificador a dot.case, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to dot.case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description nonetheless adds concrete operational context the annotations lack: no network, no stored state, determinism, and explicit limits (64 KB input, 1 s per call, 1 MB result). No contradiction with the 4096-char schema cap since one bounds the field and the other the whole JSON payload.
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?
Well front-loaded and organized with explicit labels (When / Not for / Side effects / Deterministic / Limits). The main inefficiency is that the entire content is duplicated verbatim in Spanish and English, roughly doubling length without adding 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 schema exists, annotations cover the safety profile, and the schema fully documents the single parameter. The description supplies the remaining decision-relevant facts an agent needs: exactness of transformation, the alternative tool, determinism, and size/time limits.
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?
Only one parameter and schema description coverage is 100%, so the schema already fully documents 'text' (required, up to 4096 chars, example). The description adds only the behavioral note that Unicode letters are preserved, which is about output rather than the parameter itself. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Converts text or an identifier to dot.case') and specifies the tokenization rules (spaces, punctuation, camelCase/acronym boundaries) plus Unicode preservation. An agent can tell it apart from case-camel/case-snake/case-kebab converters 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?
Explicit 'When:' clause and an explicit 'Not for:' clause that routes to the sibling case-detect. However, it never distinguishes this from the other case-* converters (case-snake, case-kebab, etc.), which are the closest alternatives, and the 'When' phrasing ('transformed, compared or measured exactly') is somewhat abstract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-kebabConvertir a kebab-caseARead-onlyIdempotentInspect
Convierte texto o un identificador a kebab-case, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to kebab-case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, but the description earns credit on top by adding determinism ('same input gives the same output'), the absence of network/state, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits are behavioral facts an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled sections (When / Not for / Side effects / Deterministic / Limits), so an agent can scan selectively. The Spanish and English blocks are fully parallel, roughly doubling length; useful for bilingual serving but not maximally economical.
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 pure transform with an output schema, every decision-relevant fact is present: input limits, timing, output size cap, determinism, no side effects, and the sibling exclusion. Nothing an agent needs before calling 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 single 'text' parameter is already documented; baseline would be 3. The description adds real meaning beyond the schema by explaining how words are split and that Unicode letters survive, which affects what inputs are valid and what output to expect, though it gives no concrete example beyond the schema's own.
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 (convert text/identifier to kebab-case) and even specifies the splitting rules: spaces, punctuation, camelCase/acronym boundaries, plus Unicode letter preservation. It explicitly names the sibling it is not (case-detect), so an agent can distinguish it from the ~10 other case-* tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'When:' and 'Not for:' framing, naming the alternative tool (case-detect) and the condition that selects it (detecting a naming convention versus transforming). This is the exact pattern that routes an agent correctly among close siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-pascalConvertir a PascalCaseARead-onlyIdempotentInspect
Convierte texto o un identificador a PascalCase, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: convertir texto a camelCase (case-camel). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to PascalCase, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: converting text to camelCase (case-camel). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by adding determinism, absence of network access and stored state, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). Those limits are operational constraints an agent cannot get from readOnlyHint/idempotentHint and directly affect how it should batch or size calls.
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 split by labeled clauses (Cuándo / No para / Efectos / Límites), so the agent can scan it. The full Spanish and English duplication doubles the length without adding new information for any single reader.
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 one-parameter pure function with an output schema, the description covers action, scope, exclusions, side effects, determinism and size/time limits — nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'text' parameter is documented, so the baseline is 3. The description still adds real meaning by explaining how the input is split into words and that Unicode letters survive, which is semantics the schema does not express.
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 ('Convierte texto o un identificador a PascalCase') and spells out the tokenization rules (spaces, punctuation, camelCase/acronym boundaries, Unicode preserved). It explicitly names the sibling it is not (case-camel), so an agent can route between the case-* family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains labeled 'When' and 'Not for' clauses, with the alternative named explicitly ('convertir texto a camelCase (case-camel)'). The condition that selects this tool over its sibling is stated outright rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-sentenceConvertir a tipo oraciónARead-onlyIdempotentInspect
Pone en minúscula y capitaliza la primera letra de cada oración (también tras ¿ y ¡). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lowercases text and capitalizes the first letter of each sentence (after . ! ? and Spanish ¿ ¡). When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint, and the description correctly reinforces this rather than contradicting it. It adds genuinely new behavioral facts beyond the annotations: no network access, no stored state, determinism, a 64 KB input ceiling, a 1 s per-call budget and a 1 MB result cap. The only reason this is not a 5 is that the read-only/no-state sentences partly restate what the annotations already guarantee.
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 core transformation, then organized into labeled blocks (Cuándo / No para / Efectos / Determinista / Límites), so an agent can stop reading at any point. The full bilingual duplication adds length, though this appears to be a deliberate convention for this server 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?
Purpose, exclusion, side effects, determinism and operational limits are all present, and a return-value contract is unnecessary because an output schema exists. For a one-parameter pure function, nothing an agent needs in order 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?
There is a single parameter and schema description coverage is 100%, so the schema already carries the meaning; the description adds nothing about the parameter itself. The only adjacent detail is the 64 KB limit, which is already encoded as maxLength 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 transformation (lowercase everything, capitalize first letter of each sentence) including the non-obvious handling of Spanish ¿ and ¡, so the exact output shape is unambiguous. It explicitly names the sibling it is not (case-detect), which cleanly separates it from the large family of case-* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Cuándo' clause gives a positive trigger (exact transformation, comparison or measurement of text) and the 'No para' clause names the concrete alternative case-detect with the condition that selects it. This is an explicit when/when-not pair with a named sibling, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-snakeConvertir a snake_caseARead-onlyIdempotentInspect
Convierte texto o un identificador a snake_case, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to snake_case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value beyond that with determinism, explicit limits (64 KB input, 1 s per call, 1 MB result) and a no-network/no-state statement, which are all operational facts an agent cannot derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded purpose, trigger, exclusion and limits are well ordered and easy to scan. However, the entire block is duplicated in Spanish and English, roughly doubling length for no informational gain, and the 64 KB claim is redundant with (and contradicts) the schema's 4096 limit.
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 detail is not required. The description still covers everything else an agent needs for a one-parameter, deterministic transform: tokenization behavior, Unicode handling, determinism, side effects and resource limits.
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 single parameter is fully described, so the baseline is 3. The description adds the useful splitting semantics, but it also introduces a conflicting limit: the schema caps text at maxLength 4096 while the description advertises 'entrada JSON de hasta 64 KB', which could mislead an agent about the real ceiling.
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 ('convierte texto o un identificador a snake_case') and goes further by spelling out the tokenization rules (spaces, punctuation, camelCase/acronym boundaries, Unicode preserved). It explicitly separates itself from the case-detect sibling, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' trigger (transform/compare/measure text exactly) and an explicit 'No para' exclusion pointing to case-detect as the alternative. This is the when/when-not/alternatives pattern done properly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-swapInvertir mayúsculas y minúsculasARead-onlyIdempotentInspect
Invierte mayúsculas y minúsculas de cada letra. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Inverts the case of every letter (upper↔lower), Unicode-aware. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: no side effects, no network, no stored state, deterministic output, and size/time limits. However, the stated limit of 64 KB conflicts with the schema maxLength of 262144 characters, which reduces trust in the stated operational bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well-structured and front-loaded with the core operation, but it is duplicated in Spanish and English for a very simple tool. The bilingual repetition and multiple labeled clauses make it longer than necessary, though the labels aid scanning.
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, single-parameter transformation tool with rich annotations and an output schema, the description covers purpose, exclusions, side effects, determinism, and limits. The only notable completeness issue is the input-size limit mismatch with the schema's maxLength.
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 single text parameter is already documented with type, required status, examples, and maxLength. The description adds general operation semantics such as Unicode awareness and per-letter inversion, but does not clarify parameter-specific behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: invert the case of every letter, Unicode-aware. It clearly distinguishes the operation from detection by explicitly excluding case-detect. An agent can identify this as a case transformation rather than a naming-convention detector.
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 explicitly provides a when clause: text must be transformed, compared, or measured exactly instead of approximately. It also provides a not-for clause naming the sibling case-detect for naming-convention detection. This gives the agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-titleConvertir a Tipo TítuloARead-onlyIdempotentInspect
Convierte a formato de título; con lang en/es mantiene en minúscula palabras cortas (de, la, y…). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Capitalizes words as a title. With lang en or es, short function words (of, the / de, la, y…) stay lowercase except at the start; lang none capitalizes every word. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Small-word rules (optional; one of: en, es, none; default "en"). | en |
| text | Yes | Text (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description partly restates those ('read-only, no network access, no stored state'). It earns credit for adding non-annotation facts: determinism, a 1 s per-call budget, and 64 KB input / 1 MB result ceilings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and each section (When / Not for / Side effects / Deterministic / Limits) is clearly labeled, but the full text is duplicated in Spanish and English, roughly doubling the token cost for an agent that only needs one language.
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. The description covers the selection criteria, the alternative tool, side effects, determinism, and resource limits, leaving nothing an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes beyond the enum labels by explaining what each lang value does: en/es keep short function words lowercase except at the start, while none capitalizes every word. That is genuine semantic meaning the schema does not convey.
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 ('Capitalizes words as a title') and immediately qualifies the scope with the lang-dependent rule. It also names the sibling it is not (case-detect), so an agent can separate it from the case-* family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' clause (transforming/comparing/measuring text exactly) and an explicit 'Not for' clause routing identifier-convention detection to case-detect. Both the positive trigger and the exclusion are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
case-trainConvertir a Train-CaseARead-onlyIdempotentInspect
Convierte texto o un identificador a Train-Case, separando palabras por espacios, signos y mayúsculas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar la convención de nombre de un identificador (case-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts text or an identifier to Train-Case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: detecting the naming convention of an identifier (case-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text or identifier (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: declares no network access and no stored state, determinism (same input → same output), Unicode letter preservation, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). These are exactly the operational facts an agent needs and none are derivable from the readOnlyHint/idempotentHint flags.
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 purpose, then cleanly labeled clauses (When / Not for / Side effects / Deterministic / Limits). The full Spanish-then-English duplication roughly doubles the length for any single reader, which is the main cost against '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 and annotations cover the safety profile, so the description need not explain return values. What remains — tokenization behavior, determinism, Unicode handling, size and time limits — is fully covered for a one-parameter pure function.
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 single parameter is documented, so the baseline is 3; the description adds real meaning by explaining how the input string is interpreted (split on spaces, punctuation, camelCase/acronym boundaries, Unicode preserved). Minor friction: the schema caps text at 4096 chars while the description cites a 64 KB JSON limit, which are different scopes but easy to conflate.
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 ('Convierte texto o un identificador a Train-Case') plus the tokenization rule used to produce it. It explicitly names the sibling it is not (case-detect), so an agent can distinguish it from at least one nearby tool 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?
Provides an explicit 'Cuándo'/'When' clause and an explicit 'No para'/'Not for' exclusion routing to case-detect. However, the closest confusable siblings (case-pascal, case-kebab, case-title, case-constant) are never mentioned, so the agent still has to infer why Train-Case rather than another casing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
char-frequencyFrecuencia de caracteresARead-onlyIdempotentInspect
Cuenta la frecuencia de cada carácter. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar la frecuencia de palabras en un texto (word-frequency). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts how often each grapheme appears, sorted by frequency then by first appearance; optional case folding and whitespace exclusion. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting word frequencies in text (word-frequency). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Return top N (integer; optional; default 50; min 1; max 1000). | |
| text | Yes | Input text (string; required). | |
| case_insensitive | No | Fold case (boolean; optional; default false). | |
| ignore_whitespace | No | Ignore whitespace (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| top | No | |
| distinct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/non-destructive/closed-world, and the description adds real value beyond them: determinism, no stored state, and concrete execution limits (time, result size). Minor flaw: it states a 64 KB input cap while the schema allows maxLength 262144, which could cause an agent to truncate valid input.
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 is correctly front-loaded in the first sentence. However, the entire body is duplicated verbatim in Spanish and English, so roughly half the tokens repeat already-stated content, and the generic "When" sentence is the least informative part of that duplication.
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; the description covers purpose, exclusion, determinism, and execution limits for a 4-parameter tool. The one real gap is the size-limit conflict with the schema, which leaves the true input ceiling ambiguous.
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; the description earns an extra point by explaining the tie-break ordering (frequency, then first appearance) and the intent of case folding and whitespace exclusion, which the terse schema entries do not. The `top` parameter is 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 and resource ("Counts how often each grapheme appears") plus output ordering and the two optional modifiers. It also names the sibling it is not (word-frequency), so an agent can discriminate it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It has an explicit "When" clause and an explicit "Not for" clause that names the alternative (word-frequency). The "when" wording is abstract ("transform, compare or measure exactly instead of approximated") rather than naming concrete triggers like 'compute character histogram', so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-adler32Checksum Adler-32ARead-onlyIdempotentInspect
Calcula el checksum Adler-32 (RFC 1950, zlib). No criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el CRC-32 (checksum-crc32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the Adler-32 checksum (RFC 1950, zlib). Non-cryptographic. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the CRC-32 (checksum-crc32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-open-world, idempotent, and non-destructive behavior, but the description adds useful behavioral context beyond them: deterministic output, no network, no stored state, and concrete call limits. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is clearly structured with purpose, when/not-for, side effects, determinism, and limits. It is somewhat longer because the same information is presented in Spanish and English, but each language block is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple checksum tool, rich annotations, full schema coverage, and an output schema, the description covers everything an agent needs: algorithm, standard, alternatives, safety, determinism, and limits. The only minor note is that the stated JSON input limit appears stricter than the schema's `data` maxLength, but the operational guidance is still complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents `data` and `input_encoding`, including the enum and default. The description adds a general input-size limit but does not explain encoding semantics or other parameter 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 algorithm and standard: Adler-32 per RFC 1950/zlib, explicitly non-cryptographic. It distinguishes the tool from the nearest sibling by naming checksum-crc32 as the alternative for CRC-32.
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 explicitly says when to use it (fast non-cryptographic checksum for error detection, sharding, hash tables) and when not to use it (CRC-32; use checksum-crc32 instead). This gives an agent clear routing guidance among many checksum siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-crc16Checksum CRC-16/CCITTARead-onlyIdempotentInspect
Calcula el CRC-16/CCITT-FALSE (polinomio 0x1021, inicio 0xFFFF). No criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el CRC-32 (checksum-crc32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the CRC-16/CCITT-FALSE (poly 0x1021, init 0xFFFF, no reflection). Non-cryptographic. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the CRC-32 (checksum-crc32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call). Minor internal inconsistency: the schema allows data up to 1,048,576 bytes while the description caps JSON input at 64 KB, so an agent could hit an undocumented ceiling.
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 algorithm specification and broken into labeled clauses (When / Not for / Side effects / Deterministic / Limits), which is easy to scan. Length is inflated roughly 2x by the full ES+EN duplication, though that appears to be an intentional localization convention.
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 two-parameter pure function this covers everything an agent needs: algorithm identity, when to prefer it, what it is not, side-effect profile, determinism, and resource limits. An output schema exists and the input schema fully documents both parameters, so no return-value prose is required.
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 of 3 applies. The description adds no parameter-level detail — notably it never mentions input_encoding (utf8/hex/base64), which is the one parameter where a mistake would silently produce a wrong checksum.
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 the exact algorithm and variant (CRC-16/CCITT-FALSE, poly 0x1021, init 0xFFFF, no reflection) rather than just 'checksum', and states it is non-cryptographic. An agent can distinguish this from checksum-crc32, checksum-adler32 or checksum-xxh32 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?
Provides an explicit 'When' clause (fast non-cryptographic error detection, sharding, hash tables) and an explicit 'Not for' clause naming checksum-crc32. It does not, however, help choose among the other eight checksum siblings (adler32, fnv1a32/64, murmur3-32, xxh32, crc32c), which is the harder routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-crc32Checksum CRC-32ARead-onlyIdempotentInspect
Calcula el CRC-32 (IEEE, como en zip/PNG). Checksum no criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the CRC-32 (IEEE 802.3, as in zip/gzip/PNG). Non-cryptographic error-detection checksum. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnly, idempotent, non-destructive, closed-world) by adding that there is no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). Minor friction: the stated 64 KB input cap does not line up with the schema's 1 MB maxLength on `data`, leaving the real input bound slightly ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and well structured (When / Not for / Side effects / Deterministic / Limits), but the entire description is duplicated verbatim in Spanish and English, roughly doubling the token cost for any agent that only needs one language.
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 safety, determinism and limits. What is missing is small but real: nothing says how `input_encoding` interacts with the size limit or what the output field looks like for a large result.
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 both parameters, including the utf8/hex/base64 enum and its default, are documented in the schema, so the baseline of 3 applies. The description adds nothing about `input_encoding` or how the declared size limits relate to the `data` field, so it does not earn more than 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?
Names a specific verb and algorithm ("Computes the CRC-32 (IEEE 802.3, as in zip/gzip/PNG)") and qualifies it as a non-cryptographic checksum, which lets an agent separate it from the hash-* family. It explicitly disowns hash-sha256, but does not distinguish itself from the nearest siblings (checksum-crc32c, checksum-adler32, checksum-fnv1a32), so an agent choosing within the checksum family still has to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit "When" clause (fast non-cryptographic checksum for error detection, sharding, hash tables) and an explicit "Not for" clause naming hash-sha256. Use/avoid conditions and the alternative are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-crc32cChecksum CRC-32CARead-onlyIdempotentInspect
Calcula el CRC-32C (Castagnoli, usado en iSCSI, ext4). No criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el CRC-32 (checksum-crc32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the CRC-32C (Castagnoli polynomial, used by iSCSI, ext4, SCTP, gRPC). Non-cryptographic. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the CRC-32 (checksum-crc32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is structured data. The description still adds genuine value beyond that: determinism guarantees, no network/no stored state, and concrete limits (1 s per call, result up to 1 MB). However the stated 'JSON input up to 64 KB' conflicts with the schema's maxLength of 1,048,576 (1 MB), an inconsistency that could mislead an agent sizing its input.
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?
Content is front-loaded and well-structured with labelled sections (Cuándo / No para / Efectos / Límites), but the entire block is duplicated verbatim in Spanish and English, roughly doubling length for no informational gain. For a two-parameter checksum tool, half the text would suffice.
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, the annotations are rich, and both parameters are fully documented in the schema, so the description covers the remaining needs: determinism, side effects, and resource limits. The only completeness defect is the unresolved 64 KB vs. 1 MB input-size ambiguity, which an agent may need to resolve before calling.
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 schema already documents both `data` (with an example) and the `input_encoding` enum with its default. The description adds nothing about parameter syntax, encoding choices, or how encoding affects the checksum, so the baseline 3 applies — the schema is doing all the work here.
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 the exact algorithm (CRC-32C, Castagnoli polynomial), its real-world provenance (iSCSI, ext4, SCTP, gRPC) and explicitly states it is non-cryptographic. It also names the sibling it is not (checksum-crc32), so an agent can distinguish it from the eight other checksum tools in one read.
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?
Explicit 'Cuándo' clause covers the positive selection criteria (fast non-cryptographic checksum for error detection, sharding, hash tables) and an explicit 'No para' clause directs the agent to checksum-crc32 for the plain CRC-32 case. This is the textbook when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-fnv1a32Hash FNV-1a de 32 bitsARead-onlyIdempotentInspect
Calcula el hash FNV-1a de 32 bits, rápido y no criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el hash FNV-1a de 64 bits, no criptográfico (checksum-fnv1a64). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the FNV-1a 32-bit hash, a fast non-cryptographic hash for hash tables and sharding. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the FNV-1a 64-bit hash, non-cryptographic (checksum-fnv1a64). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: determinism, no network/stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). Minor deduction because the stated 64 KB input cap conflicts with the schema's 1 MB maxLength on `data`.
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?
Each sentence is labeled (When / Not for / Side effects / Deterministic / Limits) and the core purpose is front-loaded. The full Spanish and English duplication roughly doubles the length, which is the main cost to conciseness.
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 description covers side effects, determinism and rate/volume limits. The only gap is the conflicting input-size bound (64 KB in prose vs. 1 MB in the schema), which could mislead an agent on large inputs.
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 both `data` and `input_encoding` (with its utf8/hex/base64 enum) are already documented in the schema. The description adds no parameter-level meaning beyond that, so 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 and resource ('Computes the FNV-1a 32-bit hash') and explicitly names the sibling it is not (checksum-fnv1a64), so an agent can distinguish it from the many other hash/checksum tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'When' clause (fast non-cryptographic checksum for error detection, sharding, hash tables) and an explicit 'Not for' clause pointing to checksum-fnv1a64. Both the positive and negative routing conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-fnv1a64Hash FNV-1a de 64 bitsARead-onlyIdempotentInspect
Calcula el hash FNV-1a de 64 bits, no criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el hash FNV-1a de 32 bits, rápido y no criptográfico (checksum-fnv1a32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the FNV-1a 64-bit hash, non-cryptographic. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the FNV-1a 32-bit hash, a fast non-cryptographic hash for hash tables and sharding (checksum-fnv1a32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the 'sin efectos secundarios / solo lectura' sentence mostly restates them. The description does add genuinely new behavioral facts: determinism and concrete limits (1 s per call, up to 1 MB result). Minor inconsistency: it says input is capped at 64 KB while the schema's maxLength is 1048576, which could mislead.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bilingual duplication doubles length, but each language block is front-loaded with the verb, then when/not-for, then side effects and limits — no wasted sentences within a block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description covers purpose, alternatives, safety and limits adequately. The only gap is the unreconciled 64 KB vs schema maxLength of 1 MB, which an agent could read as contradictory input constraints.
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 both `data` and `input_encoding` are already documented. The description adds nothing about the utf8/hex/base64 encoding choice, which is the one non-obvious parameter decision — 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 and resource ('Calcula el hash FNV-1a de 64 bits, no criptográfico') and immediately distinguishes it from the closest sibling by name. An agent can select it against the many other checksum-* tools 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?
Explicit 'Cuándo' clause names the use cases (error detection, sharding, hash tables) and an explicit 'No para' clause routes the agent to checksum-fnv1a32 when 32-bit output is wanted. Both the positive and negative conditions are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-murmur3-32MurmurHash3 de 32 bitsARead-onlyIdempotentInspect
Calcula el MurmurHash3 x86_32 con semilla opcional. No criptográfico. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el xxHash32 con semilla opcional (checksum-xxh32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the MurmurHash3 x86_32 with optional 32-bit seed. Non-cryptographic; common for bloom filters and partitioning. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the xxHash32 with optional 32-bit seed (checksum-xxh32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| seed | No | 32-bit unsigned seed (integer; optional; default 0; min 0; max 4294967295). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| seed | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces rather than merely repeats them by adding determinism, no-network, no-stored-state, and per-call limits (1 s, result ≤ 1 MB). The one flaw is the stated 'JSON input up to 64 KB' limit, which conflicts with the schema's maxLength of 1048576, so the operational bound is ambiguous.
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 verb and algorithm, then labelled When / Not for / Side effects / Deterministic / Limits — easy to scan. However, the full text is duplicated in Spanish and English, roughly doubling length without adding information for an agent consuming one language.
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 the type, determinism, and cost limits are all stated — enough for correct invocation. The only gap is the unresolved 64 KB vs 1 MB input-size discrepancy, which could make an agent truncate or reject valid payloads.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters (data, seed, input_encoding) are fully documented in the schema itself and a baseline 3 applies. The description only restates that the seed is optional and 32-bit, and never mentions input_encoding (utf8/hex/base64), which is the parameter most likely to cause a wrong 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+algorithm: computes MurmurHash3 x86_32 with optional seed, and immediately qualifies it as non-cryptographic. It also names the closest sibling (checksum-xxh32) so the agent can distinguish it from the other ~20 checksum/hash tools 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?
Explicit 'When' clause (fast non-cryptographic checksum for error detection, sharding, hash tables) plus an explicit 'Not for' clause naming the alternative checksum-xxh32 and its condition. This is the exact when/when-not/alternative structure the rubric rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checksum-xxh32xxHash32ARead-onlyIdempotentInspect
Calcula el xxHash32 con semilla opcional. Hash no criptográfico muy rápido. Cuándo: se necesita un checksum rápido no criptográfico para detectar errores, repartir datos o tablas hash. No para: calcular el MurmurHash3 x86_32 con semilla opcional (checksum-murmur3-32). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the xxHash32 with optional 32-bit seed. Very fast non-cryptographic hash. When: a fast non-cryptographic checksum is needed for error detection, sharding or hash tables. Not for: computing the MurmurHash3 x86_32 with optional 32-bit seed (checksum-murmur3-32). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| seed | No | 32-bit unsigned seed (integer; optional; default 0; min 0; max 4294967295). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| seed | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-openWorld/non-destructive, and the description adds value beyond them: determinism guarantee, no network or stored state, and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result). Those limits are exactly the kind of constraint an agent needs before calling and are not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and well ordered (what → when → not-for → effects → limits), but the entire block is duplicated verbatim in Spanish and English, roughly doubling length with zero added 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 explained, and limits/determinism are covered. The one wrinkle is that the stated 'JSON input up to 64 KB' does not obviously square with the schema's `data.maxLength` of 1048576, which could confuse an agent working near the boundary.
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 `data`, `seed` (32-bit unsigned, default 0) and the `input_encoding` enum. The description only restates 'optional 32-bit seed' and adds no format or interaction 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+resource ('Computes the xxHash32 with optional 32-bit seed') and immediately qualifies the algorithm family ('non-cryptographic hash'), which separates it from the hash-sha*/hash-blake* siblings as well as from checksum-murmur3-32, which it names 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?
Explicit 'When' clause gives three concrete use cases (error detection, sharding, hash tables) and an explicit 'Not for' clause that names the alternative tool (checksum-murmur3-32) and its distinguishing trait (MurmurHash3 x86_32). Nothing about tool selection 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.
cidr-contains¿IP dentro de rangos CIDR?ARead-onlyIdempotentInspect
Verifica si una IP está dentro de alguno de varios bloques CIDR (p. ej. una lista permitida). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un rango de IPs inicio-fin en la lista mínima de bloques CIDR que lo cubre (ip-range-to-cidrs). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks whether an IP address falls inside any of a list of CIDR blocks (IPv4/IPv6, e.g. an allowlist) and lists which ones match. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting an inclusive start-end IP range (ip-range-to-cidrs). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address (string; required; up to 64 chars). | |
| cidrs | Yes | CIDR blocks (array of string; required; at least 1 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | No | |
| contained | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description still adds real value beyond them by stating that there is no network access or stored state, that the operation is deterministic, and by giving concrete limits: 64 KB input, 1 s per call, and 1 MB result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is stated up front and is clear, but the text is duplicated in Spanish and English, which nearly doubles the length. On top of that, the generic "When" enumeration about URLs, headers, tokens, and documents is padding that does not help an agent decide whether to call this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so it need not describe the shape of return values; rich annotations cover the safety profile; and the limits plus the determinism note round out what is missing. The only real gap is precise semantics for malformed IP addresses or CIDRs, such as whether they error out or are skipped.
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 both parameters are documented with types and examples, so the schema already carries the weight. The description adds only that IPv4 and IPv6 are supported and that the input can be an allowlist-style collection; it gives no syntax rules or edge-case handling for the CIDR strings themselves.
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: checks whether an IP falls inside any of a list of CIDR blocks and lists which ones match. That is enough to distinguish it from siblings such as cidr-info, cidr-split, and ip-range-to-cidrs 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?
The "No para" line explicitly excludes ip-range-to-cidrs, and the description names that sibling, so the agent has a real routing signal. The "Cuándo" list, however, is generic boilerplate about URLs, tokens, and HTML/Markdown documents that has little to do with CIDR containment, so it weakens the guidance instead of sharpening it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cidr-infoDatos de subred CIDRARead-onlyIdempotentInspect
Describe un bloque CIDR IPv4/IPv6: red, broadcast, primer y último host, máscara, comodín y número de direcciones. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: verificar si una IP está dentro de alguno de varios bloques CIDR (cidr-contains). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Describes an IPv4 or IPv6 CIDR block: network and broadcast/last address, first and last usable host, netmask, wildcard mask, total and usable address counts. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | CIDR, e.g. 10.0.0.0/22 (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cidr | No | |
| netmask | No | |
| network | No | |
| version | No | |
| wildcard | No | |
| broadcast | No | |
| last_host | No | |
| first_host | No | |
| last_address | No | |
| usable_hosts | No | |
| total_addresses | No | |
| input_had_host_bits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description still adds substantive context: no network access, no stored state, determinism, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). That is exactly the beyond-annotation information an agent needs to size inputs and avoid misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content (outputs, exclusion, limits) is front-loaded, but the text is bilingual-duplicated and the EN variant degenerates into a pointer ('[EN completo / full EN: inputSchema.description]'), so the agent reads the same material twice while the noisy 'Cuándo' list inflates length without adding selection value.
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, annotations cover the safety profile, and the single parameter is fully documented, so the description only needs to add scope, limits and the sibling exclusion — all of which it does. The remaining gap is the misleadingly broad usage list, which could lead an agent to call it on non-CIDR inputs thinking it parses arbitrary URLs or tokens.
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?
Only one parameter, and schema coverage is 100% with an example, a maxLength and a format hint in the schema itself. The description restates the same facts at a high level and adds no syntax guidance (e.g. host bits tolerance, IPv6 prefix conventions) beyond what structured fields already give, so 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+resource ('Describe un bloque CIDR IPv4/IPv6') and enumerates exactly what is returned (network, broadcast, hosts, mask, wildcard, counts), which distinguishes it from cidr-contains and cidr-split. It loses a point because the purpose sentence is followed by an unrelated laundry list (URLs, tokens, HTML files) that muddies what the tool actually computes.
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?
Has an explicit 'No para: verificar si una IP está dentro de ... (cidr-contains)', naming the sibling and the distinguishing condition, which is the key disambiguation need here. But the 'Cuándo' clause is so broad (any URL, header, token, HTML/Markdown file) that it reads as boilerplate rather than a real selection rule, and other CIDR siblings such as cidr-split or ip-range-to-cidrs are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cidr-splitDividir CIDR en subredesARead-onlyIdempotentInspect
Divide un bloque CIDR en subredes iguales de un prefijo mayor (máx. 1.024). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: describir un bloque CIDR IPv4/IPv6 (cidr-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits a CIDR block into equal subnets of a longer prefix length (at most 1,024 subnets returned). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: describing an IPv4 or IPv6 CIDR block (cidr-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | CIDR (string; required; up to 64 chars). | |
| new_prefix | Yes | New prefix length (integer; required; min 0; max 128). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| subnets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false and openWorldHint=false, yet the description still adds genuine context: determinism, no network access, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result, max 1,024 subnets). That is useful operational detail beyond the structured fields, though it does not describe error behavior for invalid prefix values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the ES/EN duplication is at least structured, but the 'When:' enumeration is a long, mostly irrelevant list that inflates the definition without helping this tool. The useful sentences (purpose, exclusion, limits) are a small fraction of the 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?
With an output schema present, return values need not be explained, and the description covers purpose, sibling exclusion, side effects, determinism and resource limits. The one real deficiency is that the usage guidance is generic template text rather than guidance specific to splitting CIDR blocks.
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% (both params documented with examples and bounds), so baseline is 3. The description earns an extra point by implying the semantic constraint that new_prefix must be longer than the input block's prefix and that output is capped at 1,024 subnets — information the schema's 0–128 range does not convey.
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 scope: 'Divide un bloque CIDR en subredes iguales de un prefijo mayor (máx. 1.024)'. It also explicitly names the sibling it is not ('No para: describir un bloque CIDR IPv4/IPv6 (cidr-info)'), so an agent can separate it from cidr-info 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 exclusion is explicit and correct ('Not for: describing an IPv4 or IPv6 CIDR block (cidr-info)'), which is real routing value. But the positive 'When:' clause is largely boilerplate borrowed from unrelated tools (URLs, HTTP headers, tokens, version strings, HTML/Markdown documents) and only 'IP range' actually applies, so the guidance an agent needs for this tool is muddied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cipher-rot13ROT13ARead-onlyIdempotentInspect
Aplica ROT13 (o un desplazamiento César) a letras ASCII. No es cifrado. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto en código Morse internacional (morse-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Applies ROT13 (or any Caesar shift of ASCII letters) to text. Reversible obfuscation only; not encryption. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding text in International Morse code (morse-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| shift | No | Shift 1-25 (integer; optional; default 13; min 1; max 25). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so 'side effects: none' and 'deterministic' partly restate structured data. However, the description adds genuinely non-derivable operational limits (64 KB JSON input, 1 s per call, 1 MB result) and clarifies the 'no stored state / no network' contract, which is real added 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?
The structure is excellent — front-loaded definition followed by labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites). But the entire content is duplicated verbatim in Spanish and English, roughly doubling length without adding information for a single caller.
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?
Purpose, exclusions, side-effect profile, determinism and hard limits are all covered, and an output schema exists so return values need not be described. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3; the description earns above baseline because 'or any Caesar shift' explains why a 'shift' 1-25 parameter exists and that unchanged defaults give classic ROT13. Minor inconsistency: description cites a 64 KB JSON input cap while the schema advertises maxLength 1048576.
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 ('Applies ROT13 (or any Caesar shift of ASCII letters) to text') and explicitly bounds it against encryption ('Reversible obfuscation only; not encryption'). It also correctly handles the fact that the tool is a general Caesar shift, not just shift-13, matching the sibling landscape of encoders/decoders.
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 contains an explicit 'When:' clause (exact conversion to/from this encoding, no guessing) and an explicit 'Not for:' exclusion that names a concrete sibling, morse-encode. An agent has all the information it needs to route correctly against ~300 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city-distanceDistancia entre dos ciudadesARead-onlyIdempotentInspect
Calcula la distancia ortodrómica (km, millas, millas náuticas) y el rumbo inicial entre dos ciudades dadas por nombre, eligiendo la coincidencia más poblada de la lista GeoNames incluida (o dentro de un país dado). Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la distancia ortodrómica entre dos puntos (geo-haversine). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the great-circle distance (km, miles, nautical miles) and initial bearing between two cities given by name, resolving each to its most populous match in the embedded GeoNames list (or within a given country) and reporting other matches. When: coordinates, distances, bearings or areas have to be computed from given points. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | City name in its usual or Spanish form; a trailing ", country" narrows it (Medellín, Valencia, Venezuela, Nueva York) (string; required; at least 2 chars; up to 100 chars). | |
| from | Yes | City name in its usual or Spanish form; a trailing ", country" narrows it (Medellín, Valencia, Venezuela, Nueva York) (string; required; at least 2 chars; up to 100 chars). | |
| to_country | No | Optional country (ISO code or name) to tell apart cities with the same name (string; optional; at least 1 chars; up to 80 chars). | |
| from_country | No | Optional country (ISO code or name) to tell apart cities with the same name (string; optional; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| method | No | |
| source | No | |
| compass | No | |
| ambiguous | No | |
| distance_km | No | |
| distance_mi | No | |
| distance_nmi | No | |
| other_matches | No | |
| initial_bearing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description repeats that as 'no side effects, no network, no stored state'. The real added value is beyond annotations: determinism, the 64 KB input / 1 s / 1 MB result limits, and the tie-breaking behavior of resolving to the most populous match while reporting other matches.
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?
Well front-loaded: purpose, then when/not-for, then side effects, determinism and limits in a compact labeled structure. It loses a little to the duplicated Spanish/English text and the inaccurate 'áreas' item in the when-clause, which is noise an agent must filter.
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 the safety profile and an output schema covering the return values, the description supplies what's missing: limits, determinism, and disambiguation behavior. The only remaining ambiguity is what happens with country filtering across the two endpoints versus the inline ', country' suffix, which is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the semantics behind the name fields — resolution against the embedded GeoNames list, most-populous selection, and optional country narrowing to disambiguate same-named cities, which the schema only states as 'optional country'.
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: computes great-circle distance in three unit systems plus initial bearing between two named cities, and explains the name-resolution rule (most populous GeoNames match). It also explicitly separates itself from geo-haversine, so an agent can route between them 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 'No para' clause names the alternative (geo-haversine) and the condition that selects it, which is exactly the discrimination that matters here. The 'When' clause is weaker — it generically mentions 'coordinates, distances, bearings or areas', and this tool does not compute areas (geo-polygon-area does), so part of the routing guidance is borrowed boilerplate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city-local-timeHora local en una ciudadARead-onlyInspect
Devuelve la fecha, la hora local, el desfase UTC y si rige el horario de verano en una ciudad dada por nombre (resuelta a su zona IANA con la lista GeoNames incluida), ahora o en un instante dado. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: devolver el instante actual (time-now). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: según el reloj salvo que se dé at. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns the local date, time, UTC offset and daylight-saving status in a city given by name (resolved to its IANA time zone from the embedded GeoNames list), now or at a given instant, with DST transitions from the runtime time-zone database. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Instant to use instead of the clock: ISO 8601 with Z/offset, or local time in the city (for tests and reproducible output) (string; optional; up to 40 chars). | |
| city | Yes | City name in its usual or Spanish form; a trailing ", country" narrows it (Medellín, Valencia, Venezuela, Nueva York) (string; required; at least 2 chars; up to 100 chars). | |
| country | No | Optional country (ISO code or name) to tell apart cities with the same name (string; optional; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| utc | No | |
| city | No | |
| date | No | |
| time | No | |
| offset | No | |
| source | No | |
| timezone | No | |
| ambiguous | No | |
| local_iso | No | |
| weekday_en | No | |
| weekday_es | No | |
| dst_in_effect | No | |
| other_matches | No | |
| offset_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false and destructiveHint=false, and the description goes further: it discloses non-determinism (clock-dependent unless 'at' is supplied), no network/no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). The non-determinism note is essential context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled sections (Cuándo / No para / Efectos secundarios / Límites) are front-loaded and scannable. It loses a point for presenting the same content in Spanish and then English and ending with a pointer to inputSchema.description, which is redundant 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 a full output schema, complete parameter descriptions and annotations, the description covers everything else an agent needs: purpose, alternatives, determinism, side effects and hard limits. Nothing required for a correct call 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 each parameter (city, country, at) is fully documented in the schema, so the baseline is 3. The description adds behavioral color about how 'city' is resolved and that 'at' makes output reproducible, but no additional 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 plus the exact return payload (local date, time, UTC offset, DST status) and how the city is resolved (IANA zone via embedded GeoNames). It explicitly contrasts with the sibling time-now, so an agent can tell them apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit 'Cuándo' guidance (when a date/time-zone/calendar result must be exact, including month ends and leap years) and an explicit 'No para' exclusion naming time-now as the alternative. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city-lookupBuscar ciudad (país, coordenadas, zona)ARead-onlyIdempotentInspect
Busca ciudades de 100.000 habitantes o más por nombre (sin importar tildes, con nombres en español para las grandes) con filtro opcional de país, y devuelve país, población, coordenadas, zona horaria IANA e ID de GeoNames. Cuándo: hay que resolver el nombre de una ciudad a su país, coordenadas, población o zona horaria, o distinguir ciudades homónimas. No para: calcular la distancia ortodrómica (city-distance). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds cities of 100,000 or more inhabitants by name (accent-insensitive, Spanish exonyms for large cities) with an optional country filter, and returns country, population, coordinates, IANA time zone and GeoNames ID, most populous first, flagging homonyms. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | City name in its usual or Spanish form; a trailing ", country" narrows it (Medellín, Valencia, Venezuela, Nueva York) (string; required; at least 2 chars; up to 100 chars). | |
| limit | No | Max results (integer; optional; default 5; min 1; max 20). | |
| country | No | Optional country (ISO code or name) to tell apart cities with the same name (string; optional; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| source | No | |
| results | No | |
| ambiguous | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the 'solo lectura, sin red, sin estado guardado' line largely restates them. However, the description adds genuinely new operational context: the 100k population floor, accent-insensitive matching, Spanish exonyms, most-populous-first ordering, and concrete limits (64 KB input, 1 s/call, 1 MB result). A contradiction check finds nothing — 'sin red' is consistent with openWorldHint=false.
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?
Well structured with labeled sections (Cuándo / No para / Efectos / Límites) and front-loaded purpose. The bilingual duplication and the repeated return-field list across the description and inputSchema.description are mild redundancy, but every block carries actionable 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, annotations covering the safety profile, and 100% parameter coverage in the schema, the description fills the remaining gaps (matching behavior, ordering, homonym handling, limits). Nothing needed to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already spells out the 'name, country' trailing-comma disambiguation trick, the limit default/bounds, and that country accepts ISO code or name. The description adds only the accent-insensitivity and Spanish-exonym note, so it sits at the baseline where 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?
A specific verb plus resource (look up cities ≥100k inhabitants by name) with the exact return fields enumerated (country, population, coordinates, IANA zone, GeoNames ID) and homonym flagging. This is clearly distinct from siblings like city-distance and city-local-time, which the description explicitly separates.
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 'Cuándo' block names the exact triggering conditions (resolving a city name to country/coords/population/time zone, disambiguating homonyms), and the 'No para' block routes the agent away to city-distance for great-circle distance. When-to-use, when-not, and the alternative are all explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cl-rutValidar RUT/RUN (Chile)ARead-onlyIdempotentInspect
Valida un RUT/RUN chileno con su dígito verificador mod 11 (0-9 o K) y lo formatea. Solo valida: el dígito debe venir incluido. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un CPF brasileño (br-cpf-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Chilean RUT/RUN including its mod-11 check digit (0-9 or K) and returns it formatted as 12.345.678-5. Validation only: the check digit must be supplied and is never computed. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CPF (br-cpf-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rut | Yes | RUT including check digit, e.g. 12.345.678-5 (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, destructive=false and openWorldHint=false, so the safety profile is given. The description still earns credit by adding operational limits not present in annotations (64 KB input, 1 s per call, 1 MB result) and the key behavioral rule that the check digit is never computed and must be supplied by the caller.
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 core purpose and organized with explicit labels (Cuándo / No para / Efectos secundarios / Límites), so an agent can skim. The main waste is the full Spanish/English duplication of the same content within one description.
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?
Single required parameter, full schema description, an output schema (so return values need no explanation) and complete annotations. Nothing an agent needs in order to call this correctly is missing, and the limits section covers the remaining operational unknowns.
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% (type, maxLength 20, example), so the baseline is 3. The description adds genuinely non-schema semantics: the check digit must be included in the input and will not be calculated, which prevents a common misuse of check-digit tools.
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 ('Valida un RUT/RUN chileno con su dígito verificador mod 11') plus the output shape (formatted 12.345.678-5). It also explicitly marks itself as validation-only, which distinguishes it from formatting/generation tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' section and an explicit exclusion naming the sibling br-cpf-validate, which is exactly the kind of routing an agent needs. However, the positive condition is phrased broadly ('a user-supplied Latin American or Spanish ID or account number'), which could tempt an agent to send an Argentine CUIT or Mexican CURP to a Chilean-only validator; only the Brazilian CPF is called out as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-amount-in-wordsValor en letras para cheques (Colombia)ARead-onlyIdempotentInspect
Escribe un valor en pesos en letras como en cheques, facturas y contratos colombianos ("UN MILLÓN DOSCIENTOS MIL PESOS M/CTE"). Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: escribir un entero hasta 10^18 en palabras en español (es-number-to-words). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Writes a peso amount in words in the format used on Colombian cheques, invoices and contracts, e.g. "UN MILLÓN DOSCIENTOS MIL PESOS M/CTE", with cents as fraction (50/100) or words. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount as number or decimal string (up to 2 decimals) (number or string; required; up to 30 chars). | |
| suffix | No | Suffix (string; optional; default "M/CTE"; up to 20 chars). | M/CTE |
| uppercase | No | Uppercase (boolean; optional; default true). | |
| cents_style | No | Cents (optional; one of: fraction, words, omit_if_zero; default "omit_if_zero"). | omit_if_zero |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds non-duplicative context: no network, no stored state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That latency/size envelope is exactly the kind of operational detail annotations cannot express.
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 purpose, then When / Not for / Side effects / Determinism / Limits in a scannable order, and the closing pointer to the full EN version avoids bloat. The cost is a near-complete Spanish/English duplication, which inflates the block without adding 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 prose; what remains — scope, exact-rule trigger, alternative tool, purity, determinism, and size/time limits — is all present. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns a bump by clarifying the cents representation ("fraction (50/100) or words"), which gives real meaning to the cents_style enum, and its example fixes the suffix convention "M/CTE". It still leaves uppercase and the amount string-vs-number handling 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 and resource (write a peso amount in words in Colombian cheque/invoice format) and anchors it with a literal output example "UN MILLÓN DOSCIENTOS MIL PESOS M/CTE". It explicitly separates itself from es-number-to-words, so the agent can pick correctly among the many number/word siblings 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?
Uses explicit "Cuándo" / "No para" structure: use when an exact Colombian rule (DIAN, Ley Emiliani, COP, IVA, GMF, UVT) applies, e.g. invoicing or payment flows; do not use for spelling a plain integer in Spanish (es-number-to-words). Both the positive trigger and the exclusion name a concrete alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-business-days-addSumar días hábiles en ColombiaARead-onlyIdempotentInspect
Suma o resta N días hábiles a una fecha usando los festivos de Colombia (plazos legales, facturas, SLA). Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: sumar o restar días hábiles, saltando fines de semana y festivos dados (business-days-add). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds or subtracts N business days (días hábiles) to a date using Colombian national holidays, e.g. for legal deadlines, invoices or SLA due dates. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding or subtracting business days, skipping weekends and given holidays (business-days-add). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| days | Yes | Business days (negative subtracts) (integer; required; min -5000; max 5000). | |
| saturday_is_business | No | Saturday counts as business day (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| weekday | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context: no network access, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). It does not explain error behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded and well structured with labeled Cuándo/No para/Límites sections, but the content is duplicated across ES and EN and ends with a meta artifact ('[EN completo / full EN: inputSchema.description]') that is not tool information. The 'No para' phrasing is also awkwardly worded, requiring a second read to see it points at the generic sibling.
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 plus the limits/determinism notes cover behavior. Parameters are fully documented in the schema. The definition is complete enough to call correctly; only error/failure semantics are absent.
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 all three parameters (date, days, saturday_is_business) are documented in the schema with types, bounds and defaults. The description only restates 'N días' and the date concept, adding no syntax or edge-case meaning 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 and resource ('Suma o resta N días hábiles a una fecha') plus the exact holiday basis (festivos de Colombia), and names the sibling it is not (business-days-add). An agent can distinguish it from the generic business-days-add 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?
Explicit 'Cuándo' clause gives concrete triggers (DIAN, Ley Emiliani, COP, IVA, GMF, UVT, facturación/cobro) and an explicit 'No para' clause routes the generic case to business-days-add. Both when-to-use and when-not-to-use are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-business-days-betweenDías hábiles en Colombia entre fechasARead-onlyIdempotentInspect
Cuenta días hábiles entre dos fechas en Colombia, excluyendo domingos, sábados (opcional) y festivos nacionales. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: contar días hábiles entre dos fechas, excluyendo fines de semana configurables y festivos (business-days-between). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts business days (días hábiles) between two dates in Colombia, excluding Sundays, Saturdays (unless saturday_is_business) and national holidays; lists holidays skipped. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| start | Yes | Start YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| inclusive | No | Count the start date too (boolean; optional; default false). | |
| saturday_is_business | No | Saturday counts as business day (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| business_days | No | |
| holidays_skipped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context annotations do not cover: 'Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado)', determinism guarantee, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). Some of the read-only/no-network wording restates readOnlyHint/openWorldHint, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose well, but the body is duplicated bilingually with the ESS/m inverted order and ends with a dangling artifact '\[EN completo / full EN: inputSchema.description]' that is meta-text, not content. The 'Cuándo' list also drags in IVA/GMF/UVT, which are unrelated to counting days and dilute the signal.
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 it still notes that skipped holidays are listed. Purpose, routing, side effects, determinism and hard limits are all covered; only the trailing truncated-reference artifact and the off-topic 'Cuándo' examples keep it from full marks.
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 schema documents start/end formats, defaults and even examples, so the baseline is 3. The prose reinforces saturday_is_business semantics ('sábados (opcional)') but adds little about `inclusive` beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+locale: counting business days between two dates in Colombia, with the exclusion rules spelled out (Sundays, optional Saturdays, national holidays). The negative clause explicitly names the generic sibling business-days-between, so an agent can discriminate between the two 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?
Provides explicit 'Cuándo' (applying an exact Colombian rule such as DIAN invoicing/payment flows) and an explicit 'No para' that routes to business-days-between for configurable-weekend counting. When-to-use, when-not, and the alternative are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-cedula-formatFormato de cédula colombianaARead-onlyIdempotentInspect
Verifica la SINTAXIS de una cédula colombiana (3 a 10 dígitos) y la formatea con puntos. La cédula no tiene dígito de control. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: calcular el dígito de verificación (co-nit). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks the SYNTAX of a Colombian cédula de ciudadanía number (digits only, 3-10 digits, no leading zero) and formats it with dot separators. Cédulas have no check digit, so validity cannot be confirmed offline. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: computing the DIAN verification digit (co-nit). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cedula | Yes | Cédula number (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| cedula | No | |
| digits | No | |
| formatted | No | |
| valid_syntax | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent and closed-world, so repeating "sin efectos secundarios / determinista" earns no credit. What does add value is the caveat that cédulas have no check digit and validity cannot be confirmed offline, plus concrete operational limits (64 KB input, 1 s per call, 1 MB result) that the annotations do not 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?
The content is front-loaded well, but the entire text is duplicated in Spanish and English, roughly doubling length for the same information, and the side-effects/determinism sentences only restate annotations. The generic Colombian-rules enumeration is filler for this particular tool.
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 syntax rules, the no-check-digit limitation, determinism and resource limits. The one real gap is input normalization behavior (prefixes, dots, whitespace) given the schema's contradictory example.
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 one parameter and 100% schema coverage the baseline is 3, but the description supplies constraints the schema lacks: digits only, 3-10 digits, no leading zero. It does not resolve the mismatch between the schema example "CC 1.020.304.050" (which carries a prefix and dots) and the stated digits-only rule, leaving ambiguity about whether such input is accepted or normalized.
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 ("Verifica la SINTAXIS ... y la formatea con puntos") plus the resource and the acceptance range (3-10 digits, no leading zero), which is enough to distinguish it from the co-nit sibling it explicitly names. An agent knows exactly what it gets 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 "Cuándo / Not for: computing the DIAN verification digit (co-nit)" pair gives an explicit exclusion and names the alternative, which is the main routing risk. The positive "when" clause, however, is generic family-level boilerplate (DIAN, Ley Emiliani, COP, IVA, GMF, UVT) that has little to do with formatting a cédula, so it guides less than it appears to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-cop-formatFormatear pesos colombianos (COP)ARead-onlyIdempotentInspect
Formatea un valor en pesos colombianos ($ 1.234.567, puntos de miles y coma decimal), con 0 o 2 decimales y código COP opcional. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: formatear un monto en cualquier moneda ISO 4217 según el idioma/país (currency-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats an amount as Colombian pesos the way it is written in Colombia ($ 1.234.567 — dot thousands, comma decimals), with 0 or 2 decimals and an optional COP code. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount (number; required; min -1000000000000000; max 1000000000000000). | |
| decimals | No | Decimals (optional; one of: 0, 2; default "0"). | 0 |
| show_code | No | Append COP (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| plain | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds determinism ('misma entrada da la misma salida') and concrete limits (64 KB input, 1 s per call, 1 MB result), which is useful. But 'solo lectura, sin red, sin estado guardado' largely restates the readOnly/openWorld annotations rather than adding new behavioral context, so the extra value is moderate.
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?
Well front-loaded with the core format stated first, then labeled sections for When/Not-for/Side-effects/Limits. Slightly undermined by the trailing partial EN restatement and the 'inputSchema.description' cross-reference, which add a little redundancy but the structure remains scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small, pure formatting tool with an output schema handling return values, the description is complete: it explains purpose, alternatives, side effects, determinism and limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented in the schema. The description mentions 0/2 decimals and the optional COP code, but this duplicates schema content without adding syntax or edge-case detail beyond it. Baseline 3 applies 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 (formatea) and resource (valor en pesos colombianos) with a concrete output example ($ 1.234.567, dot thousands, comma decimals), and explicitly names the sibling it is not (currency-format). An agent can distinguish it from currency-format and number-format-locale without reading 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?
Provides an explicit 'Cuándo' section (Colombian rules: DIAN, Ley Emiliani, IVA, GMF, UVT, invoicing/payment flows) and a 'No para' section that routes to currency-format for ISO 4217 locale formatting. Both when-to-use and when-not are stated with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-cop-parseLeer montos en pesos colombianosARead-onlyIdempotentInspect
Convierte textos de dinero en estilo colombiano ("$ 1.234.567,50", "1,5 millones", "$3 mil") en número. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: leer un número escrito en palabras o cifras en español (es-number-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses money text written in Colombian style ("$ 1.234.567,50", "COP 2.500", "1.5 millones", "$3 mil") into a number, handling dot thousands, comma decimals and millones/mil words. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: reading a number written in Spanish words or digits (es-number-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Money text (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, but the description adds genuinely new context: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not explain the error behavior for unparseable input, which keeps it below 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?
Front-loaded and well organized (purpose, when, not-for, effects, limits), but the same content appears three times: the Spanish block, the English block, and again in inputSchema.description which the description itself points to. That triplication is wasted context for an agent.
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 one-param, read-only parser with an output schema and full annotation coverage, everything needed is present: accepted formats, sibling exclusion, side effects, determinism and size/time limits. No return-value explanation is required since an output schema exists.
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 single param already documents type, requiredness, maxLength and an example, so the baseline is 3. The description earns an extra point by enumerating accepted input shapes ("$ 1.234.567,50", "1,5 millones", "$3 mil", "COP 2.500"), which clarifies dot-thousands/comma-decimal and word-scale handling 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/convert) and resource (Colombian-style money text) plus the output type (a number), with concrete input examples. It explicitly names the sibling it is not (es-number-parse), so an agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit "Cuándo" (when a Colombian rule — DIAN, Ley Emiliani, COP, IVA, GMF, UVT — must be applied exactly, e.g. invoicing) and "No para" routing to es-number-parse for Spanish words/digits. Both the positive and negative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-cufe-verifyVerificar CUFE de factura DIANARead-onlyIdempotentInspect
Recalcula el CUFE de una factura electrónica de venta colombiana (SHA-384 de los 15 campos definidos por la DIAN: número, fecha, hora, valores, impuestos 01/04/03, total, NIT, clave técnica, ambiente) y lo compara con un CUFE dado; o solo revisa el formato de un CUFE/CUDE. Cuándo: hay que recalcular el CUFE de una factura electrónica DIAN a partir de sus campos para comprobar que coincide. No para: calcular el resumen SHA-384 (hash-sha384). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Recomputes the CUFE of a Colombian electronic sales invoice (SHA-384 of the 15 fields defined by DIAN: number, date, time, amounts, tax codes 01/04/03, total, NITs, technical key, environment) and compares it with a given CUFE; or checks a CUFE/CUDE format only. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cufe | No | CUFE/CUDE to check (96 hex chars) (string; optional; up to 200 chars). | |
| fec_fac | No | Issue date YYYY-MM-DD (FecFac) (string; optional; pattern ^\d{4}-\d{2}-\d{2}$). | |
| hor_fac | No | Issue time with offset, e.g. 10:30:45-05:00 (HorFac) (string; optional; pattern ^\d{2}:\d{2}:\d{2}[-+]\d{2}:\d{2}$). | |
| nit_ofe | No | Issuer NIT without DV (NitOFE) (string; optional; pattern ^\d{1,15}$). | |
| num_adq | No | Buyer ID number (NumAdq) (string; optional; up to 30 chars). | |
| num_fac | No | Invoice number with prefix (NumFac) (string; optional; up to 40 chars). | |
| val_fac | No | Amount (number or decimal string, max 2 decimals) (one of several shapes; optional). | |
| val_tot | No | Amount (number or decimal string, max 2 decimals) (one of several shapes; optional). | |
| val_imp1 | No | Amount (number or decimal string, max 2 decimals) (one of several shapes; optional). | |
| val_imp2 | No | Amount (number or decimal string, max 2 decimals) (one of several shapes; optional). | |
| val_imp3 | No | Amount (number or decimal string, max 2 decimals) (one of several shapes; optional). | |
| clave_tecnica | No | Technical key from the numbering resolution (ClTec) (string; optional; up to 200 chars). | |
| tipo_ambiente | No | Environment: 1 production, 2 testing (optional; one of: 1, 2). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cufe | No | |
| chain | No | |
| reason | No | |
| matches | No | |
| format_valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description still adds real information beyond them: no network access, no stored state, determinism guarantee, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That is exactly the operational context annotations cannot express.
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 core definition, then when/not-for, side effects, determinism and limits in scannable labeled blocks; every clause carries information. It loses a point for shipping the same content twice (full Spanish block plus an English block that is then truncated and deferred to inputSchema.description, where it is duplicated again).
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 13-parameter, zero-required, read-only computation with an output schema and rich annotations, the description covers algorithm, modes, exclusions, determinism and resource limits — almost everything an agent needs. The remaining gap is mode-selection guidance: nothing says which fields must accompany cufe to trigger the recompute path versus the format-only path.
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 output schema exists, so the baseline is 3; the description earns one step above by giving domain meaning the schema flattens — it identifies val_imp1/2/3 as tax codes 01/04/03, and típico fields like the technical key and environment, and distinguishes the recompute mode from the format-only mode. It stops short of 5 because it never states which parameter combinations select which mode (all 13 params are optional, so a zero-arg call's behavior is unstated).
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 ('recomputes the CUFE of a Colombian electronic sales invoice') and pins down the exact algorithm (SHA-384 over the 15 DIAN fields), plus a second documented mode (format-only validation of a CUFE/CUDE). An agent can distinguish it from hash-sha384 and from generic validators 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?
Explicit 'Cuándo' section names the trigger (recompute the CUFE from invoice fields to check it matches) and an explicit 'No para' section routes the agent to hash-sha384 when a plain SHA-384 digest is wanted. Both the use case and the nearest alternative are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-dane-departmentCódigos DANE de departamentoARead-onlyIdempotentInspect
Consulta los 33 códigos DIVIPOLA de departamentos (32 + Bogotá D.C.) por código, nombre o prefijo de código municipal, con su capital. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: buscar países ISO 3166-1 alfa-2 por código o por nombre en español o inglés (iso-country-lookup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Looks up Colombia's 33 DIVIPOLA department-level codes (32 departments + Bogotá D.C.) by code, name (accent-insensitive) or a 5-digit municipality code prefix, returning the capital and its municipality code. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Code (05, 05001) or name (antioquia) (string; optional; default ""; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| source | No | |
| departments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered; the description still adds operational limits (64 KB input, 1 s per call, 1 MB result), 'sin red, sin estado guardado' and determinism, which are not in the annotations. It does restate read-only/idempotent in prose, so it is additive rather than fully independent.
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 and label-structured (Cuándo / No para / Efectos / Determinista / Límites), which aids scanning, but the whole block is duplicated: the English half is explicitly the same text as inputSchema.description, and 'Determinista' largely restates idempotentHint. Redundancy costs it here.
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 one optional parameter, full schema coverage, an output schema carrying return values, and annotations covering the safety profile, the description supplies everything an agent needs: what is queried, how, when to choose it, the sibling to avoid, and hard limits. Nothing material 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%, giving a baseline of 3, and the description still adds meaning beyond the schema: name matching is accent-insensitive and the 5-digit form is interpreted as a municipality code prefix (schema only shows '05, 05001, antioquia'). It stops short of describing matching/precedence behavior when a query matches multiple departments.
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: looks up Colombia's 33 DIVIPOLA department-level codes by code, name or 5-digit municipality prefix, returning capital and municipality code. The scope (32 departments + Bogotá D.C.) and the accepted key forms are explicit, so an agent can distinguish it from any of the hundreds of sibling lookup 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?
Provides an explicit 'Cuándo' clause (applying a Colombian rule exactly: DIAN, Ley Emiliani holidays, COP, IVA, GMF, UVT, e.g. invoicing/payment flows) and an explicit 'No para' clause naming the alternative sibling iso-country-lookup and the exact disambiguation criterion (ISO 3166-1 country codes vs. Colombian departments). When-to-use, when-not-to-use and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code-blocks-extractExtraer bloques de códigoARead-onlyIdempotentInspect
Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: encontrar y analizar objetos/arreglos JSON dentro de un texto libre (json-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts fenced code blocks (``` or ~~~) from Markdown or LLM output with their language tags and line counts, optionally filtered by language. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: finding and parsing JSON objects/arrays embedded in free text (json-extract). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| language | No | Only this language tag (string; optional; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| blocks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false and idempotentHint, so 'sin efectos secundarios' and 'determinista' are largely restatements. What genuinely adds value beyond annotations is the operational envelope (1 s per call, up to 1 MB of result) and the note that results include language tags and line counts. One caveat: the stated 'input up to 64 KB' conflicts with the schema's text maxLength of 1048576, which could mislead an agent sizing its input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and cleanly segmented (purpose / when / not-for / effects / limits), but the full text is duplicated in Spanish and English and then terminated with a pointer '[EN completo / full EN: inputSchema.description]' that repeats what is already in the schema description. Roughly half the length is redundancy, which dilutes the signal for a tool this simple.
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 correctly avoids explaining return values, and it covers side effects, determinism, time and size limits, and the sibling boundary. The only real gap is the internal inconsistency between the 64 KB input cap and the schema's 1 MB text maxLength, which leaves the actual input limit ambiguous.
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 both `text` and `language` are documented with types, maxLength and an example, giving a baseline of 3. The description only adds that filtering by language tag is optional and how output is tagged; it offers no extra syntax or matching rules (e.g. case sensitivity, alias handling like 'js' vs 'javascript') that the schema does not already convey.
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 ('Extracts fenced code blocks (``` or ~~~) from Markdown or LLM output'), including the delimiters, the language tags and the line counts, and even names the sibling it is not (json-extract). An agent can distinguish it from json-extract, markdown-* and html-* extractors 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?
Has explicit 'Cuando/When' (exact, repeatable bookkeeping step: tokens, costs, retries, chunking, ranking, JSON clean-up) and explicit 'No para/Not for' with the named alternative json-extract plus the condition that selects it (parsing JSON objects/arrays embedded in free text). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-gmfCalcular GMF (4x1000)ARead-onlyIdempotentInspect
Calcula el GMF (cuatro por mil, 0,4 %) de un retiro o transferencia, con la exención mensual opcional de 350 UVT en una cuenta marcada. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: calcular el IVA colombiano (co-iva). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes Colombia's financial transactions tax (GMF, "cuatro por mil") of 0.4% on a withdrawal or transfer, optionally applying the monthly 350 UVT exemption for one designated account. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding or extracting Colombian IVA at the general 19%, reduced 5% or 0% (co-iva). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | UVT year (integer; optional; default 2026; min 2024; max 2026). | |
| amount | Yes | Withdrawal/transfer amount (number; required; min 0; max 1000000000000000). | |
| exempt_account | No | Account marked as exempt (350 UVT/month) (boolean; optional; default false). | |
| already_withdrawn_this_month | No | Amount already withdrawn this month from the exempt account (number; optional; default 0; min 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| gmf | No | |
| exempt_amount | No | |
| taxable_amount | No | |
| monthly_exempt_cap | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description largely restates those ('side effects: none', 'deterministic'), which earns no extra credit. What it does add beyond annotations is concrete operational limits – 64 KB JSON input, 1 s per call, 1 MB result – which are genuinely useful for deciding when and how to call 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?
The Spanish block is tight and front-loaded (purpose, when, not-for, effects, limits), but the definition is then duplicated in a partially truncated English block that ends with a dangling pointer '[EN completo / full EN: inputSchema.description]'. Roughly half the text is redundant translation rather than additional signal.
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 deterministic, four-parameter calculator, the description covers purpose, applicability, the competing sibling, side effects, determinism and input/output limits, and an output schema exists so return values need not be explained. Nothing an agent needs in order 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 description coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining the relationship between exempt_account and already_withdrawn_this_month (the exemption is a monthly 350 UVT cap per designated account) and by anchoring year to UVT. It does not, however, spell out how the exemption is prorated or applied against the current amount.
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 with exact semantics: computes Colombia's GMF (4x1000) of 0.4% on a withdrawal or transfer, with an optional 350 UVT monthly exemption for one designated account. It also names the sibling it is not (co-iva), so an agent can separate the two tax tools 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?
Explicit 'Cuándo/When' section gives the triggering condition (applying a Colombian DIAN/Ley Emiliani/COP/GMF/UVT rule exactly, e.g. invoicing or payment flows) and a 'No para/Not for' exclusion that routes IVA work to co-iva by name. This is the strongest pattern for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-holidaysFestivos de ColombiaARead-onlyIdempotentInspect
Lista los 18 festivos nacionales de Colombia de un año, aplicando la Ley Emiliani (traslado a lunes) y las fechas según la Pascua. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: indicar si una fecha es festivo nacional en Colombia (co-is-holiday). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists the 18 Colombian national holidays for a year, applying Ley 51 de 1983 (Ley Emiliani) Monday moves and Easter-based dates (Holy Week, Ascension, Corpus Christi, Sacred Heart). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (1984 onward, when Ley 51 de 1983 took effect) (integer; required; min 1984; max 2200). |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | No | |
| count | No | |
| holidays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so 'solo lectura, sin red' largely repeats structured data. The description still earns credit for adding operational limits (64 KB input, 1 s per call, 1 MB result) and explicit determinism, which are not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded correctly, opening with what the tool does, but it is bilingual and ends with a dangling pointer ('full EN: inputSchema.description') that adds no value. The 'Cuándo' block enumerates unrelated Colombian rules, padding the definition with content that does not help select this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description need not explain return values, and it covers purpose, exclusion, determinism and limits. The only gap is the lack of any note on what the 18-entry result looks like or ordering, though the output schema likely covers that.
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, including min 1984, max 2200 and an example, so the schema carries the semantics. The description only restates that the output is for a given year and does not add format or edge-case 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 and resource: lists the 18 Colombian national holidays for a year, applying Ley Emiliani and Easter-based rules. It also names the sibling it is not (co-is-holiday), so an agent can distinguish the two 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 'No para' clause explicitly excludes the per-date check and points to co-is-holiday, which is exactly the routing information an agent needs. However, the 'Cuándo' clause lists broader topics (COP amounts, IVA, GMF, UVT) that this tool does not actually compute, which introduces mild misdirection even though the exclusion sentence limits the damage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-is-holiday¿Es festivo en Colombia?ARead-onlyIdempotentInspect
Indica si una fecha es festivo nacional en Colombia (con nombre), fin de semana y si es día hábil. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: listar los 18 festivos nacionales de Colombia de un año, aplicando la Ley Emiliani (co-holidays). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Says whether a date is a Colombian national holiday (with its name), a Sunday or Saturday, and whether it is a business day (Monday-Friday, or Monday-Saturday if saturday_is_business). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| saturday_is_business | No | Treat Saturday as a business day (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| holiday | No | |
| name_en | No | |
| name_es | No | |
| weekday | No | |
| business_day | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations cover read-only status, the description adds rich, necessary behavioral context that annotations omit: stating it is 'sin red, sin estado guardado' (no network, no stored state), deterministic, and specifying operational limits (64KB input, 1s call time).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The information is front-loaded and logically structured, moving from function to practical use (When), limitations (Not for), and operational constraints (Side effects). No language 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?
Given the specialized nature of Colombian regulatory compliance (DIAN, Ley Emiliani), the description is complete. It defines the scope, jurisdiction, and technical limitations necessary for correct deployment.
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?
Since schema description coverage is 100%, the schema already documents the parameters thoroughly. The description does not add semantic meaning to the parameters beyond what is already structurally defined. This meets the baseline score for comprehensive schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition explicitly states the tool checks if a date is a Colombian national holiday, weekend, or business day. Crucially, it distinguishes itself from related tools like co-holidays by stating it is not for listing all holidays.
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 extremely specific use cases for invocation: when 'a Colombian rule... has to be applied exactly, e.g. in invoicing or payment flows.' It also provides an explicit exclusion: 'Not for: listing the 18 Colombian national holidays.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-ivaCalcular IVA de ColombiaARead-onlyIdempotentInspect
Calcula el IVA colombiano (19 % general, 5 % reducido o 0 %): suma a una base o extrae de un total con IVA, redondeando a pesos. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: sumar o extraer un impuesto (vat-calculate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds or extracts Colombian IVA at the general 19%, reduced 5% or 0% (exento) rate: from a base before tax or from a total that includes IVA, rounding to whole pesos by default. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding tax to a net amount or extracting it from a gross (vat-calculate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | IVA rate % (optional; one of: 19, 5, 0; default "19"). | 19 |
| amount | Yes | Amount (number; required; min 0; max 1000000000000000). | |
| round_to_peso | No | Round to whole pesos (boolean; optional; default true). | |
| amount_includes_iva | No | Amount already includes IVA (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| iva | No | |
| base | No | |
| total | No | |
| rate_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the 'sin efectos secundarios' line adds nothing; the description does add real value with determinism, a 64 KB input cap, a 1 s per-call timeout and a 1 MB result cap. It stops short of saying what the output contains or how rounding interacts with the extraction mode.
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 and the when/not-for structure is easy to scan, but the body is near-duplicated in Spanish and English and ends with a meta-pointer ('[EN completo / full EN: inputSchema.description]') that is noise for an agent. The contradictory 'No para' sentence also costs space without adding usable 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?
Rich annotations, a full output schema and 100 % parameter coverage mean the description need not explain return values. What is missing is unambiguous disambiguation from vat-calculate — the stated exclusion conflicts with the tool's own stated behavior, which is the one thing an agent most needs here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100 % and every property (rate enum, amount bounds, round_to_peso, amount_includes_iva) is documented in the schema. The description restates the rate set and the rounding default but adds no new semantics such as how rounding applies when extracting IVA from a gross amount, so 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 and resource ('Calcula el IVA colombiano') plus the supported rates (19 %, 5 %, 0 %) and the two modes (add to a base / extract from a total), with rounding to pesos. It explicitly names the sibling it is not (vat-calculate), so an agent can differentiate 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?
It has the right structure — a 'Cuándo' clause (DIAN, Ley Emiliani, COP, IVA, GMF, UVT; invoicing/payment flows) and a 'No para' clause naming vat-calculate. However, the exclusion says it is not for 'sumar o extraer un impuesto', which is exactly what the first sentence says this tool does ('suma a una base o extrae de un total con IVA'), so the routing rule is self-contradictory and may push the agent away from the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-liquidacion-laboralLiquidación de prestaciones socialesARead-onlyIdempotentInspect
Calcula la liquidación de prestaciones sociales en Colombia para un salario fijo entre dos fechas: cesantías, intereses del 12 %, prima de servicios y vacaciones pendientes, con el auxilio de transporte 2026, días de 360, normas y puntos no verificados. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: calcular la retención en la fuente mensual por salarios, procedimiento 1 (co-retencion-salarios). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes Colombian employment-termination benefits for a fixed salary between two dates: severance (cesantías), its 12% interest, service bonus (prima) and unused vacation pay, with the 2026 transport allowance, 360-day counting, legal sources… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | Termination date, inclusive (YYYY-MM-DD) (string; required; up to 10 chars). | |
| start_date | Yes | Contract start date (YYYY-MM-DD) (string; required; up to 10 chars). | |
| monthly_salary | Yes | Monthly salary in pesos (fixed, not integral) (number; required; min 0; > 0; max 1000000000000). | |
| transport_allowance | No | Monthly transport allowance; omit to use the 2026 value ($249.095) when the salary is at most 2 minimum wages; 0 = not paid (number; optional; min 0; max 1000000000000). | |
| vacation_days_taken | No | Vacation business days already taken during the contract (number; optional; default 0; min 0; max 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| fuente | No | |
| cesantias | No | |
| fecha_fin | No | |
| supuestos | No | |
| vacaciones | No | |
| fecha_inicio | No | |
| dias_contrato | No | |
| no_verificado | No | |
| auxilio_aplica | No | |
| auxilio_fuente | No | |
| prima_servicios | No | |
| salario_mensual | No | |
| base_prestaciones | No | |
| auxilio_transporte | No | |
| intereses_cesantias | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false and openWorldHint=false, yet the description still adds real value: determinism (same input, same output), no network or persisted state, and concrete limits (64 KB input, 1 s per call, 1 MB output). It also flags that the output contains "normas y puntos no verificados" and that the count uses 360-day periods, which is behaviorally important and not derivable from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites) are well front-loaded, but the text is duplicated bilingually across the description and again inside inputSchema.description, roughly doubling length without new information. The clause "normas y puntos no verificados" is vague and does not earn its space as written.
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 annotations cover safety, so the description need not explain return values; what it must carry — determinism, limits, exclusion of the retención sibling, and the 360-day convention — is present. The remaining gap is that the "when to use" trigger is generic boilerplate rather than specific to severance computation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the transport-allowance default of $249.095 and the "0 = not paid" convention. The description adds only the underlying conventions (12% interest, 360-day basis, fixed non-integral salary) rather than parameter-level detail, 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 and resource ("Calcula la liquidación de prestaciones sociales en Colombia") and enumerates the exact components computed: cesantías, 12% interest, prima de servicios, vacaciones pendientes, transport allowance, 360-day counting. Scope is bounded to a fixed salary between two dates, so an agent can tell it apart from generic salary or retención tools 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 "No para" clause is a genuine strength: it explicitly excludes monthly income-tax withholding and names the sibling co-retencion-salarios. However, the "Cuándo" clause is boilerplate that does not match this tool — it cites DIAN, Ley Emiliani holidays, IVA, GMF and UVT and mentions "facturar o cobrar", none of which relate to severance calculation, so an agent could be routed here for VAT or GMF work. The correct trigger (applying a Colombian severance rule) is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-adjustAclarar, oscurecer o saturar colorARead-onlyIdempotentInspect
Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: encontrar el color más cercano (color-contrast-fix). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adjusts a color in OKLCH: change lightness, chroma (saturation) and hue by deltas, or set alpha; results are mapped back into the sRGB gamut. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: finding the closest color to a foreground (color-contrast-fix). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | No | Hue rotation in degrees (number; optional; default 0; min -360; max 360). | |
| alpha | No | Set alpha 0-1 (number; optional; min 0; max 1). | |
| color | Yes | CSS color: hex, rgb(), hsl(), hwb(), oklch(), oklab() or a named color (string; required; up to 100 chars). | |
| chroma | No | Chroma delta (-0.4..0.4) (number; optional; default 0; min -0.4; max 0.4). | |
| lightness | No | Lightness delta (-1..1) (number; optional; default 0; min -1; max 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: no network access, no stored state, deterministic behavior, and hard limits (64 KB input, 1 s per call, 1 MB result), plus the sRGB gamut-mapping behavior. The 'read-only' clause duplicates readOnlyHint=true, so it is not entirely additive, but the limits and determinism disclosure are valuable for a compute 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?
Front-loaded with the operation, then cleanly labeled blocks (When / Not for / Side effects / Deterministic / Limits). The full Spanish and English text is duplicated, which is redundant for a reader but appears intentional for this server; within each language 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 no explanation. The description still covers the operation, the gamut-mapping result, usage routing, side-effect profile, determinism, and operational limits — everything needed to invoke a 5-parameter pure-compute tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's 'lightness, chroma (saturation) and hue by deltas, or set alpha' mirrors what each property already documents (delta ranges, optionality, defaults), adding only the gloss that chroma means saturation.
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 ('Adjusts a color in OKLCH') plus the exact axes being modified (lightness, chroma, hue deltas, alpha) and the gamut-mapping outcome. It explicitly names the sibling it is not (color-contrast-fix), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When:' (exact color/contrast/palette computation, e.g. accessibility checks) and 'Not for:' (finding the closest color, routed to color-contrast-fix). Both the positive trigger and the exclusion are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-blindness-simulateSimular daltonismoARead-onlyIdempotentInspect
Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Simulates how a color appears with protanopia, deuteranopia, tritanopia (Machado et al. 2009, severity 1) or achromatopsia, to check palettes for color-blind users. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | CSS color: hex, rgb(), hsl(), hwb(), oklch(), oklab() or a named color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| protanopia | No | |
| tritanopia | No | |
| deuteranopia | No | |
| achromatopsia | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, and the description still adds substantive beyond-annotation facts: no network access, no stored state, deterministic output, plus concrete limits (64 KB JSON input, 1 s per call, 1 MB result). This is exactly the rate/limit and side-effect detail an agent needs and cannot infer from the annotation block.
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?
Each language block is tightly front-loaded with purpose, then When/Not-for/Side effects/Determinism/Limits in a consistent scannable order. The cost is that the whole definition is duplicated verbatim in Spanish and English, roughly doubling length with no new 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 describe return values, and annotations plus the explicit limits, determinism and no-side-effects notes cover everything else. Nothing material for a 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% and the single parameter documents accepted CSS color formats, so the schema already carries the semantics. The description adds only an indirect constraint (JSON payload up to 64 KB) but nothing about the color format, mixing model or severity handling. 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 and resource (simulate how a color appears) plus the exact deficit variants covered (protanopia, deuteranopia, tritanopia, achromatopsia) and the underlying model. It is immediately distinguishable from neighbors like color-convert, color-contrast or color-delta-e.
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?
Explicit 'When' clause (exact computation of colors, contrast or palettes, e.g. accessibility checks) and an explicit 'Not for' clause naming the sibling color-convert that handles CSS color parsing. Both the selection and exclusion conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-contrastContraste WCAGARead-onlyIdempotentInspect
Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: encontrar el color más cercano (color-contrast-fix). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the WCAG 2.x contrast ratio between foreground and background colors (alpha composited over the background) with AA/AAA pass/fail for normal text, large text and UI components. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: finding the closest color to a foreground (color-contrast-fix). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| background | Yes | Background color (string; required; up to 100 chars). | |
| foreground | Yes | Text/foreground color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ratio | No | |
| aa_large | No | |
| aa_normal | No | |
| aaa_large | No | |
| aaa_normal | No | |
| ui_components | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description adds real context: alpha compositing over the background, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). This is information an agent cannot get from 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?
Well front-loaded: purpose, then when/not-for, then side effects and limits. It loses a point for the bilingual duplication and the meta-fragment '[EN completo / full EN: inputSchema.description]', which adds length without adding 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 need not explain return values; it instead covers invocation-relevant concerns — scope, exclusions, side effects, determinism and resource limits — so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds meaningful semantics: colors are alpha-composited over the background before ratio computation, which affects how inputs are interpreted. It does not, however, enumerate accepted color syntaxes beyond the schema examples.
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 and resource — computes the WCAG 2.x contrast ratio between foreground and background colors — and names the exact outputs (AA/AAA pass/fail for normal text, large text, UI components). It explicitly distinguishes itself from the similar sibling color-contrast-fix.
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?
Uses an explicit 'When:' clause (exact color/contrast/palette computation, e.g. accessibility checks) and an explicit 'Not for:' clause routing the closest-color use case to color-contrast-fix. Both inclusion and exclusion are stated with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-contrast-fixAjustar color para cumplir contrasteARead-onlyIdempotentInspect
Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: calcular la relación de contraste WCAG entre dos colores (color-contrast). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds the closest color to a foreground (changing only OKLCH lightness, keeping hue) that reaches a target WCAG contrast ratio against a background, trying darker and lighter directions. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: computing the WCAG contrast ratio of two colors (color-contrast). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| background | Yes | Background (string; required; up to 100 chars). | |
| foreground | Yes | Color to adjust (string; required; up to 100 chars). | |
| target_ratio | No | Target ratio (number; optional; default 4.5; min 1; max 21). |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No | |
| ratio | No | |
| changed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, no-network, idempotent and non-destructive, and the description reinforces this ('sin red, sin estado guardado') plus adds genuinely new constraints: 64 KB input cap, 1 s per call, 1 MB result cap. The determinism claim largely restates idempotentHint, so it is confirmatory rather than new, keeping this below 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?
Content is front-loaded and well ordered (what → when/not → effects → limits), but the same text is duplicated in Spanish and English and ends with an awkward artifact ('[EN completo / full EN: inputSchema.description]') that adds no information. Roughly half the length is redundant.
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 details need not be described, and when/when-not, side effects, determinism and resource limits are all covered. One gap: it never says what happens when the target ratio is unreachable (e.g. ratio 21 for a given pair) — a failure mode an agent calling this tool should anticipate.
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% with per-parameter descriptions, defaults and min/max for target_ratio, so the schema already carries parameter meaning. The description adds conceptual context (lightness-only adjustment, WCAG target) but no format details for foreground/background beyond the schema examples.
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: finds the closest color to a foreground by varying only OKLCH lightness (keeping hue) until a target WCAG contrast ratio against a background is met, trying darker and lighter directions. The mechanism is precise enough that an agent can predict the output transformation, and it is clearly distinguished from color-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?
Explicit 'Cuándo' (compute color values/contrast/palettes exactly, e.g. accessibility checks) and explicit 'No para' naming the sibling color-contrast for merely measuring the ratio between two colors. The routing decision between the two tools is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-convertConvertir formatos de colorARead-onlyIdempotentInspect
Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: generar paletas armónicas desde un color base (color-palette). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses any common CSS color (hex 3/4/6/8, rgb(), hsl(), hwb(), oklch(), oklab(), 148 named colors) and returns hex, RGB, HSL, HSV, CMYK (naive), OKLab, OKLCH and CIELAB (D65). Out-of-gamut OKLCH is chroma-reduced into sRGB. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: generating harmony palettes from a base color by rotating OKLCH hue (color-palette). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | CSS color: hex, rgb(), hsl(), hwb(), oklch(), oklab() or a named color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| hsl | No | |
| hsv | No | |
| lab | No | |
| rgb | No | |
| cmyk | No | |
| alpha | No | |
| oklab | No | |
| oklch | No | |
| css_hsl | No | |
| css_rgb | No | |
| css_oklch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: out-of-gamut OKLCH is chroma-reduced into sRGB, CMYK is naive, output is D65-referenced, plus determinism and hard limits (64 KB input, 1 s per call, 1 MB result). Some of this restates the annotations (read-only, no network, no stored state), and the trailing pointer '[EN completo / full EN: inputSchema.description]' is meta-noise rather than disclosure.
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?
Well front-loaded and labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), but the entire content is delivered twice in Spanish and English, roughly doubling the token cost for a single agent with no gain. The trailing 'full EN' pointer is dead weight.
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 prose, yet the description still names the output color spaces. With one required parameter, full schema coverage, and explicit limits and gamut behavior, an agent has everything needed to call this correctly on the first try.
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 already lists accepted formats, but the description adds specifics the schema omits — hex 3/4/6/8 variants, 148 named colors, hwb/oklch/oklab — so an agent knows the accepted grammar without opening the schema. It does not mention the 100-char cap, though the schema does.
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 ('Convierte colores CSS') and enumerates both the accepted input formats (hex 3/4/6/8, rgb(), hsl(), hwb(), oklch(), oklab(), 148 named colors) and the full output set (hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH, CIELAB). It also explicitly distinguishes itself from the nearest sibling, color-palette.
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?
Explicit 'Cuándo' clause gives concrete use cases (exact color/contrast/palette math, accessibility checks) and a 'No para' clause names the alternative tool (color-palette) plus the condition that selects it (harmony palettes by rotating OKLCH hue). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-delta-eDiferencia de color (ΔE 2000)ARead-onlyIdempotentInspect
Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: calcular la relación de contraste WCAG entre dos colores (color-contrast). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the perceptual difference between two colors: CIEDE2000 ΔE (CIELAB D65) and Euclidean OKLab ΔE, with a plain-language interpretation (< 1 imperceptible … > 10 very different). When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: computing the WCAG contrast ratio of two colors (color-contrast). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First color (string; required; up to 100 chars). | |
| b | Yes | Second color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| delta_e_2000 | No | |
| delta_e_oklab | No | |
| interpretation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, closed-world, idempotent and non-destructive, and the description reinforces these (no network, no stored state, deterministic) rather than contradicting them. It then adds information the annotations cannot carry: hard limits (64 KB input, 1 s per call, 1 MB result) and the interpretation thresholds (<1 imperceptible … >10 very different), which materially affects how an agent reads the result.
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?
Each language block is tightly front-loaded: purpose, when, not-for, side effects, limits. The full text is roughly doubled by the ES/EN bilingual pairing and the redundant 'deterministic' sentence, which costs some density but serves the declared locale 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?
Output schema exists, so return-shape explanation is not required, yet the description still gives the interpretation scale an agent needs to narrate results. With limits, side effects, determinism and sibling disambiguation all present, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two required params 'a' and 'b' are already documented with examples and max lengths — baseline 3. The description adds nothing about accepted color formats (hex only? rgb()? named colors?), which is the one parameter question the schema leaves unanswered.
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 the exact operation and both metrics ('CIEDE2000 ΔE (CIELAB D65)' and 'Euclidean OKLab ΔE') plus the plain-language interpretation band. It also distinguishes itself from the nearest sibling by name (color-contrast), so an agent can route correctly 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?
Explicit 'When' clause (exact color/contrast/palette computation, e.g. accessibility checks) and an explicit 'Not for' clause naming the WCAG contrast-ratio tool. Both the positive and negative selection conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-luminanceLuminancia relativaARead-onlyIdempotentInspect
Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns WCAG relative luminance, OKLCH lightness, whether the color reads as light or dark, and whether black or white text has more contrast on it. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | CSS color: hex, rgb(), hsl(), hwb(), oklch(), oklab() or a named color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| is_light | No | |
| best_text_color | No | |
| oklch_lightness | No | |
| relative_luminance | No | |
| contrast_with_black | No | |
| contrast_with_white | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, but the description adds real value beyond them: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those operational bounds are exactly what an agent needs and cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each language block is tight and front-loaded with the return value, but the entire content is duplicated in Spanish and English, roughly doubling length without adding information. One block plus a short locale note would suffice.
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 one-parameter, read-only, deterministic tool with an output schema, annotations and explicit limits, nothing an agent needs is missing. Return values, scope, non-goals and failure-relevant constraints are all covered.
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 single 'color' parameter is fully documented in the schema (formats, examples, maxLength), and there is an output schema, so the description adds little parameter meaning. Its only extra is the input-size ceiling, which is a payload limit rather than a semantic for 'color'.
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?
Concrete verb-plus-resource: returns WCAG relative luminance, OKLCH lightness, the light/dark reading, and which text color contrasts better. It also names the specific sibling it is not (color-convert), so an agent can separate it from the rest of the color-* family.
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?
Explicit 'When:' (exact color/contrast/palette computation, e.g. accessibility checks) and 'Not for:' routing to color-convert. It does not address the other near neighbors color-contrast / color-contrast-fix, which an agent may reasonably confuse with this, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-mixMezclar dos coloresARead-onlyIdempotentInspect
Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Mixes two colors by a weight (like CSS color-mix) in OKLab (perceptual, default), linear sRGB or gamma sRGB space. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First color (string; required; up to 100 chars). | |
| b | Yes | Second color (string; required; up to 100 chars). | |
| space | No | Interpolation space (optional; one of: oklab, srgb-linear, srgb; default "oklab"). | oklab |
| weight | No | Fraction of b, 0-1 (number; optional; default 0.5; min 0; max 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description's "side effects: none / no network / no stored state" largely restates them. It does add genuinely new operational facts the annotations cannot express: deterministic output, 64 KB input cap, 1 s per-call budget and 1 MB result cap — real value for an agent sizing inputs.
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?
Each language version is tightly front-loaded — purpose, then when, then not-for, then behavior, then limits — with no filler. The full ES/EN duplication roughly doubles the token cost, which is a deliberate i18n choice but does dilute conciseness slightly.
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; safety and idempotency are covered by annotations and reinforced in prose; and the operational limits plus the sibling routing cover what an agent needs to call this correctly. Nothing material is missing for a 4-parameter, single-purpose 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 100%, including the enum for `space`, the 0-1 bounds for `weight` and examples for `a`/`b`, so baseline is 3. The description only restates that mixing is weighted and that OKLab is the default; it adds no color-syntax guidance (e.g. which string formats are accepted for `a`/`b`) beyond what the schema already carries.
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 (mix two colors by weight) plus the exact algorithm analogy (CSS color-mix) and the three supported interpolation spaces, with the default named. It also explicitly distinguishes itself from the nearest sibling, color-convert, in the same breath.
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?
Contains an explicit "When:" clause (exact color/contrast/palette computation, e.g. accessibility checks) and an explicit "Not for:" clause routing CSS parsing to color-convert. Both the positive and negative selection conditions are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-name-nearestNombre CSS de color más cercanoARead-onlyIdempotentInspect
Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds the closest of the 148 CSS named colors to a given color (by OKLab distance), with the distance, and whether it is an exact match. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | How many candidates (integer; optional; default 1; min 1; max 10). | |
| color | Yes | CSS color: hex, rgb(), hsl(), hwb(), oklch(), oklab() or a named color (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| exact | No | |
| matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, so restating 'no side effects' adds little. However, the description adds genuinely new behavioral context beyond annotations: deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). Return-shape detail is deferred to the output schema.
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?
Well front-loaded with labelled sections (When / Not for / Side effects / Limits) that are easy to scan. The only waste is the bilingual duplication, which doubles length but does not add noise for a Spanish/English audience.
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. With purpose, exclusions, determinism and limits all stated, nothing an agent needs to invoke this 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% with both parameters fully documented, so the baseline is 3. The description mentions the input is a color value but does not clarify the 'top' parameter (candidate count) or add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds the closest of the 148 CSS named colors to a given color') and specifies the OKLab distance metric plus exact-match reporting. It explicitly names the sibling it is not (color-convert), so an agent can distinguish the two 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?
Provides an explicit 'When' clause (exact color/contrast/palette computation, accessibility checks) and a 'Not for' clause pointing to color-convert as the alternative. The routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-palettePaleta de armonía de colorARead-onlyIdempotentInspect
Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates harmony palettes from a base color by rotating OKLCH hue: complementary, analogous, triadic, split-complementary, tetradic (square) or monochromatic (lightness steps). When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | Base color (string; required; up to 100 chars). | |
| count | No | Colors for monochromatic (integer; optional; default 5; min 2; max 12). | |
| scheme | Yes | Harmony (required; one of: complementary, analogous, triadic, split_complementary, tetradic, monochromatic). |
Output Schema
| Name | Required | Description |
|---|---|---|
| colors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the 'readOnlyHint' in annotations, the description provides rich behavioral context, including 'no network access,' 'deterministic' behavior, and specific operational limits (time/size constraints). This significantly enhances the agent's understanding of the tool's operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally well-structured, using clear headings (When, Not for, Effects, Limits) to front-load and categorize high-value information efficiently.
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 definition is complete for a multi-schema, complex function. It covers all necessary usage conditions, constraints, and safety profiles, leaving no major gap for the agent to fill.
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?
Although the schema coverage is 100%, the description adds crucial semantic value by explaining the conceptual roles of the inputs—namely, that the calculation is intended for precise tasks like accessibility checks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the function as generating harmonic color palettes using specific methods (complementary, analogous, etc.) and immediately differentiates itself from sibling tools like color-convert.
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 explicit usage guidelines ('When:') and specific exclusions ('Not for: converting colors CSS (color-convert)'), preventing misuse and routing the agent correctly to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-scaleEscala de tintes y sombrasARead-onlyIdempotentInspect
Crea una rampa de colores entre dos colores o una escala 50-950 tipo sistema de diseño a partir de un color de marca. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: convertir colores CSS (color-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds an evenly spaced color ramp between two colors in OKLab (n steps), or a 50-950 design-system scale from one brand color by varying OKLCH lightness at constant hue. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: parsing any common CSS color (color-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End color (omit for 50-950 scale) (string; optional; up to 100 chars). | |
| color | Yes | Start or brand color (string; required; up to 100 chars). | |
| steps | No | Number of colors for a ramp (integer; optional; default 5; min 2; max 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
| colors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: determinism (same input, same output) and hard limits (64 KB JSON input, 1 s per call, 1 MB result), plus the algorithmic behavior (OKLCH lightness varied at constant hue). The 'read-only, no network access, no stored state' clause largely restates readOnlyHint/openWorldHint/destructiveHint, so it is not maximally additive, but the limits and determinism are genuinely useful.
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 core behavior, then neatly labeled blocks (Cuándo/No para/Efectos/Determinista/Límites, then the EN mirror). Every clause carries information, but the full bilingual duplication roughly doubles length and pushes the limits section well past the leading description of what the tool does.
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 describe return values, and it covers the remaining gaps: algorithmic basis, both operating modes, when to prefer it over siblings, determinism, and resource limits. Nothing an agent needs before calling 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 baseline is 3, but the description adds genuine meaning: it explains that omitting the end color produces a 50-950 scale and that 'steps' controls ramp granularity in OKLab. Color-space details (OKLab vs. OKLCH hue-constant) are semantics the schema does not convey, though input format details (hex support) are left implicit.
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 ('Builds an evenly spaced color ramp between two colors in OKLab... or a 50-950 design-system scale from one brand color') and names the color space and construction method. It also explicitly rules out the nearest sibling ('Not for: parsing any common CSS color (color-convert)'), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When:' condition (exact color values, contrast, palettes, e.g. accessibility checks) and a 'Not for:' exclusion routing to color-convert. The two modes (two-color ramp vs. single-color scale) are also clearly conditioned on whether an end color is supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color-temperatureTemperatura de color a RGBARead-onlyIdempotentInspect
Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. para revisar accesibilidad. No para: ajustar un color en OKLCH (color-adjust). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Approximates the sRGB color of a black-body light source at a temperature from 1,000 K to 40,000 K (Tanner Helland fit), e.g. 2700 K warm white or 6500 K daylight. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: adjusting a color in OKLCH (color-adjust). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| kelvin | Yes | Temperature in kelvin (number; required; min 1000; max 40000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| rgb | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so restating "read-only, no network, no state, deterministic" is largely redundant. What the description genuinely adds beyond structured data are the operational limits — 64 KB JSON input, 1 s per call, 1 MB result — which are not encoded in any annotation or schema.
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?
Each block is tight and front-loaded: capability, then When / Not for, then side effects, then limits. The only cost is that the entire text is duplicated verbatim in Spanish and English, doubling length without adding information for a reader who parses both.
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, deterministic, read-only conversion with a fully documented schema, a declared output schema, and complete annotations, nothing an agent needs is missing — routing, semantics, limits and determinism are all covered.
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 one parameter at 100% schema coverage, the baseline is 3; the description goes slightly beyond by framing kelvin as a black-body light-source temperature and tying it to real-world reference values (2700 K warm white, 6500 K daylight), which helps an agent pick a sensible input rather than just a bounded number.
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?
"Approximates the sRGB color of a black-body light source at a temperature from 1,000 K to 40,000 K" states a concrete verb, a precise resource, and an explicit domain range, plus the implementation fit (Tanner Helland) and concrete examples (2700 K warm white, 6500 K daylight). It is instantly distinguishable from color-convert, color-mix and color-adjust.
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?
Contains explicit "When:" guidance (computing exact color values, contrast, palettes, accessibility checks) and an explicit "Not for:" that names the correct alternative sibling (color-adjust for OKLCH). Both the positive and negative routing conditions are stated rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combinatoricsCombinaciones y permutacionesARead-onlyIdempotentInspect
Calcula las combinaciones nCr y permutaciones nPr exactas, con o sin repetición. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: realizar aritmética exacta de enteros grandes (bigint-calc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact nCr (combinations) and nPr (permutations), with or without repetition, for n ≤ 10,000. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | n (integer; required; min 0; max 10000). | |
| r | Yes | r (integer; required; min 0; max 10000). | |
| repetition | No | Allow repetition (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| combinations | No | |
| permutations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful beyond-annotation context: determinism ('same input gives same output') and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). It could say more about output shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized with clear labels for usage, exclusions, side effects, determinism, and limits. However, the full Spanish and English versions duplicate the same information, so the description is longer than strictly necessary for an agent.
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 simple 3-parameter tool with full schema coverage, rich annotations, and an output schema, the description covers everything an agent needs: exact scope, alternative tool, determinism, side effects, and hard limits. No important behavioral or usage gap remains.
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 n, r, and repetition are already fully documented with types, bounds, default, and examples. The description adds only the n ≤ 10,000 scope and the phrase 'with or without repetition', which is marginal beyond the schema. Baseline 3 is appropriate when the schema carries parameter 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?
States a specific verb and resource: computes exact nCr and nPr with or without repetition for n ≤ 10,000. It clearly distinguishes itself from the sibling bigint-calc by scope, so an agent can tell which tool handles combinatorics versus general arbitrary-precision arithmetic.
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?
Explicitly says when to use it ('a numeric result has to be exact or reproducible instead of estimated') and when not to use it ('Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc)'). The alternative sibling is named directly, leaving little inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-nitDígito de verificación del NITARead-onlyIdempotentInspect
Calcula el dígito de verificación (DV) de un NIT con el método mod 11 publicado por la DIAN, valida el DV dado y formatea (900.373.913-4); práctica estándar en facturación. Cuándo: hay que comprobar o formatear un NIT con su dígito de verificación DIAN, p. ej. antes de emitir una factura. No para: verificar la SINTAXIS de una cédula colombiana (co-cedula-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the DIAN verification digit (DV) of a Colombian NIT business tax ID with DIAN's published mod-11 method, validates a given DV and formats it (900.373.913-4). DV computation is standard practice in invoicing. When: a Colombian NIT has to be checked or formatted with its DIAN verification digit, e.g. before issuing an invoice. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| dv | No | Verification digit, if separate (string; optional; pattern ^\d$). | |
| nit | Yes | NIT with or without DV (dots, dashes ok) (string; required; up to 30 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| dv | No | |
| nit | No | |
| valid | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the 'sin efectos secundarios / solo lectura / sin red' and 'determinista' sentences largely restate them. What is genuinely additive are the operational limits (64 KB JSON input, 1 s per call, 1 MB result), which 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?
The content is front-loaded and logically ordered (what → when → not-for → side effects → limits), but the same material is presented in full Spanish and then again in English, and the schema's description field repeats the English block verbatim. That bilingual duplication costs space without adding information for the caller.
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 remaining gaps an agent would care about: determinism, no network, size/time limits, and the sibling boundary. Only the handling of already-formatted NITs with embedded DV is 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 coverage is 100% and both parameters (nit, dv) are documented in the schema, so the baseline is 3. The description clarifies that the DV is validated when supplied and shows the expected formatted output, but it adds no format or edge-case detail for `dv` or for NITs supplied with dots/dashes beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (computes the DIAN verification digit of a Colombian NIT), names the algorithm (mod 11 published by DIAN), and covers the validation/formatting facets plus an output example. It also explicitly separates itself from the sibling that could be confused with it (co-cedula-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?
Gives an explicit 'Cuándo' with a concrete trigger (checking/formatting a NIT with its DV, e.g. before issuing an invoice) and an explicit 'No para' naming the alternative tool (co-cedula-format) for cédula syntax checks. Both the use case and the exclusion are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content-type-parseLeer Content-TypeARead-onlyIdempotentInspect
Analiza Content-Type en tipo, subtipo, sufijo (+json) y parámetros (charset, boundary…). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar Content-Security-Policy en directivas y señala configuraciones riesgosas (csp-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a Content-Type / media type header into type, subtype, structured-syntax suffix (+json) and parameters (charset, boundary…), lowercasing names. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| header | Yes | Content-Type value (string; required; up to 2048 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| params | No | |
| suffix | No | |
| subtype | No | |
| media_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new operational facts: no network access, no stored state, determinism, and hard limits (64 KB input, 1 s, 1 MB result), which the annotations do not express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and precise, but the 'when' inventory of unrelated artifact types is filler that does not help this tool's caller, and the Spanish/English duplication pads 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 single-parameter, read-only parse tool with an output schema and rich annotations, the definition covers purpose, alternative, side effects and limits — an agent has everything needed to call it correctly. The only shortfall is the slightly confusing scope list.
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 one parameter and 100% schema description coverage, the schema already documents the required 'header' string with maxLength 2048 and an example. The description adds only the normalization behavior (lowercasing names), not parameter-level meaning beyond the schema, so 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 precise verb and resource: parse a Content-Type/media type header into type, subtype, structured-syntax suffix and parameters. It also names the sibling it is not (csp-parse), so an agent can distinguish it from other header parsers 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 gives an explicit 'Cuándo' clause plus a 'No para' exclusion pointing at csp-parse, which is exactly the routing information an agent needs. The when-list is partly boilerplate (URLs, tokens, versions, IP ranges are not Content-Type artifacts), which dilutes the guidance slightly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-accelerationConvertir aceleraciónARead-onlyIdempotentInspect
Convierte aceleración entre unidades (m/s2, g, ft/s2, gal). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir velocidad entre unidades (convert-speed). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts acceleration between units (m/s2, g, ft/s2, gal). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting speed between units (convert-speed). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: m/s2, g, ft/s2, gal (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The limits block (64 KB JSON input, 1 s per call, 1 MB result) and the 12-significant-digit precision are real behavioral facts not present in annotations. However, "side effects: none (read-only, no network, no stored state)" and "deterministic" largely restate readOnlyHint/openWorldHint/idempotentHint, so some of the transparency budget is spent on redundancy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and well structured (When / Not for / Side effects / Limits), but it is delivered twice in full, Spanish and English, roughly doubling length with no added information. The bilingual duplication costs conciseness.
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 3-parameter pure computation with an output schema and full annotation coverage, the description covers units, default behavior, precision, sibling exclusion and resource limits — everything an agent needs to call it correctly. Only the repeated annotation restatements keep it from being fully tight.
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 schema itself already documents "omit to for all" and the from-unit list, so the description adds little parameter-level meaning. The one extra detail, 12-significant-digit output, describes results rather than parameters. 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 ("Converts acceleration between units") and enumerates the supported units (m/s2, g, ft/s2, gal), plus clarifies the default when "to" is omitted. It explicitly names the nearest sibling it is not (convert-speed), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit "When:" condition (a quantity must be converted with exact definitional factors) and an explicit "Not for:" with the alternative named (convert-speed). Nothing about tool selection 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.
convert-angleConvertir ánguloARead-onlyIdempotentInspect
Convierte ángulo entre unidades (rad, deg, grad, turn, arcmin, arcsec, mrad). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: formatear coordenadas decimales como grados, minutos y segundos (coordinates-to-dms). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts angle between units (rad, deg, grad, turn, arcmin, arcsec, mrad). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: formatting decimal coordinates as degrees, minutes and seconds (coordinates-to-dms). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: rad, deg, grad, turn, arcmin, arcsec, mrad (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description still adds real value beyond them: determinism, 12 significant digits precision, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not say what happens on an invalid unit string, which is the only notable behavioral 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?
Content is front-loaded and labeled (When / Not for / Side effects / Deterministic / Limits), which aids scanning. However, the entire payload is duplicated in Spanish and English, roughly doubling length for no informational gain, and the EN block even embeds a meta-reference to the schema description.
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 it still covers scope, exclusions, determinism, precision and operational limits. An agent has everything required to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents `value`, `from`, and `to` (including the 'omit for all' behavior and the unit list). The description restates those facts rather than adding syntax or validation detail, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("converts angle between units") and enumerates the supported units (rad, deg, grad, turn, arcmin, arcsec, mrad), so an agent knows exactly what domain this covers. It also names the adjacent non-goal (coordinates-to-dms) so it is distinguishable from the closest sibling.
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?
Explicit "When:" clause (converting a quantity with exact definitional factors) and explicit "Not for:" clause pointing at coordinates-to-dms. Both the positive trigger and the exclusion are stated, which is the top of this dimension's scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-areaConvertir áreaARead-onlyIdempotentInspect
Convierte área entre unidades (m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir volumen entre unidades (convert-volume). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts area between units (m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting volume between units (convert-volume). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral context beyond annotations: exact definitional factors, 12 significant digits, deterministic output, no network/stored state, and explicit limits (64 KB input, 1 s per call, 1 MB result). These details go beyond the read-only/idempotent annotations and help an agent know what to expect operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and efficient, but it is presented twice (Spanish and English), which doubles length without adding new information. Removing the duplication would make it tighter, though the individual sentences are otherwise purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema and full schema coverage, the description provides everything an agent needs: purpose, alternatives, side-effect profile, determinism, precision, and limits. It does not need to explain return values because the output schema covers 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 description coverage is 100%, so the schema already documents value, from, and to. The description repeats the unit list and the 'omit to return all' behavior, which is useful but does not add new parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Convierte área entre unidades') and lists the supported units, making it clearly distinct from unrelated conversion tools. It also names the sibling it does not replace ('convert-volume'), so an agent can route correctly without schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the use case ('Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos') and the exclusion ('No para: convertir volumen entre unidades (convert-volume)'). It also explains the 'to'-omitted behavior, which is the main branching decision for callers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-cookingMedidas de cocinaARead-onlyIdempotentInspect
Convierte medidas de cocina entre volumen (taza, cucharada…) y peso (g, oz…) para ingredientes comunes, con densidades típicas. Resultados aproximados. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir volumen entre unidades (convert-volume). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts kitchen measures between volume (cup, tbsp, tsp, ml, l, fl_oz, metric cup) and weight (g, kg, oz, lb) for common ingredients using typical densities. Results are approximate. When: a quantity has to be converted between units with exact definitional factors. Not for: converting volume between units (convert-volume). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target measure (required; one of: cup, tbsp, tsp, ml, l, fl_oz, cup_metric, g, kg, oz, lb). | |
| from | Yes | Source measure (required; one of: cup, tbsp, tsp, ml, l, fl_oz, cup_metric, g, kg, oz, lb). | |
| value | Yes | Amount (number; required; min 0). | |
| ingredient | No | Ingredient (needed for volume↔weight) (optional; one of: water, milk, flour, sugar, brown_sugar, powdered_sugar, butter, oil, honey, rice, oats, cocoa, salt, cornstarch, …; default "water"). | water |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
| ingredient | No | |
| approximate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful non-annotation context: typical densities, approximate results, determinism, and size/time limits. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core Spanish description is front-loaded and structured with Cuándo/No para/Efectos/Límites labels. However, the full English restatement duplicates nearly all content and makes the definition unnecessarily long; 'exact definitional factors' also adds ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, complete parameter schema, and rich annotations. The description covers purpose, sibling exclusion, determinism, side effects, and operational limits, so an agent has enough to invoke it correctly. The only gap is that the exact-factor wording vs approximate results could confuse expectations.
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 value, from, to, and ingredient, including the ingredient default and volume-to-weight need. The description adds only broad context that common ingredients use typical densities and results are approximate, which is useful but not substantial beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: converting kitchen measures between volume and weight for common ingredients. It explicitly distinguishes this from the sibling convert-volume, which handles volume-to-volume conversion, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear 'Cuándo'/'When' condition and an explicit 'No para' pointing to convert-volume as the alternative. The guidance is slightly weakened by the phrase 'factores de definición exactos', which sits awkwardly with the stated approximate density-based results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-data-rateConvertir velocidad de datosARead-onlyIdempotentInspect
Convierte tasa de datos entre unidades (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir tamaño de datos entre unidades (convert-data-size). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts data rate between units (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting data size between units (convert-data-size). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description nonetheless adds genuine non-annotation detail: 12-significant-digit precision, exact definitional factors, and hard limits (64 KB input, 1 s per call, 1 MB result). It slightly restates annotation claims ("sin red, sin estado guardado"), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded (units, then behavior, then when/not-for, then side effects), but the full Spanish block is followed by a near-identical English block plus a pointer to inputSchema.description, roughly doubling length without adding 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-shape explanation is unnecessary; the description still covers units, default all-units behavior, precision, determinism, time/size limits and the sibling alternative. Nothing an agent needs in order 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%: units, required status and the "omit for all" behavior of `to` are already documented per-parameter. The description's "Sin 'to' devuelve todas" echoes the schema rather than extending it, so 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 and resource ("Convierte tasa de datos entre unidades") and enumerates all supported units, including the bit vs byte vs binary distinction. It also names the sibling it must not be confused with (convert-data-size), so an agent can separate it from the long list of convert-* 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?
Explicit "Cuándo:" clause defines the triggering condition (exact definitional unit conversion) and "No para:" names the alternative tool (convert-data-size) for data-size conversion. That covers when-to-use, when-not, and the alternative in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-data-sizeConvertir tamaño de datosARead-onlyIdempotentInspect
Convierte tamaño de datos entre unidades (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir tasa de datos entre unidades (convert-data-rate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts data size between units (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting data rate between units (convert-data-rate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the 'side effects: none' sentence restates structured data. What it genuinely adds is determinism, 12-significant-digit precision, and hard limits (64 KB input, 1 s per call, 1 MB result), which are real behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The when/not-for/limits structure is well front-loaded, but the entire content is duplicated verbatim in Spanish and English, roughly doubling length without adding information. A pointer to the EN copy in inputSchema.description would suffice.
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 available and full parameter coverage, the description only needs routing and behavioral context — both present, including precision and resource limits. Complete enough that an agent can call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is individually documented, so the baseline applies. The description's only added semantic is that omitting 'to' returns all units — useful but already implied by the schema's 'omit for all'.
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 (converts) and resource (data size), enumerates the supported units, and explicitly excludes the sibling convert-data-rate. An agent can distinguish it from the other ~20 convert-* tools 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?
Explicit 'Cuándo' clause states the condition (exact definitional factors) and 'No para' names the alternative tool and the excluded case (data rates). This is the when/when-not/alternative pattern at its clearest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-densityConvertir densidadARead-onlyIdempotentInspect
Convierte densidad entre unidades (kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir masa entre unidades (convert-mass). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts density between units (kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting mass between units (convert-mass). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description largely restates these ("solo lectura, sin red, sin estado guardado", determinism). The genuinely additive facts are the 12-significant-digit precision and the hard limits (64 KB input, 1 s per call, 1 MB result), which the agent cannot get from annotations or schema.
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?
Each language block is tightly front-loaded with labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites), so scanning is fast. The cost is that the entire block is duplicated in Spanish and English, roughly doubling length for the same information; justified only if the bilingual audience is real.
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 pure-function conversion tool with an output schema present, everything an agent needs is covered: units, default behavior when `to` is omitted, precision, determinism, and resource limits. Return-value shape is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three parameters is documented there, including the unit list for `from` and "omit for all" for `to`. The description adds the same unit enumeration and the default-all behavior, so it is essentially redundant at the parameter level — 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 ("Convierte densidad entre unidades") and enumerates the supported units, so the agent knows exactly what magnitude is being transformed. It also disambiguates from the large family of convert-* siblings by naming convert-mass as the one it is not. No schema access needed to identify it.
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?
Explicit "Cuándo / When" condition (a quantity must be converted with exact definitional factors) and an explicit "No para / Not for" exclusion routing mass conversions to convert-mass. The "sin 'to' devuelve todas" note also tells the agent the behavior of the optional-parameter branch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-energyConvertir energíaARead-onlyIdempotentInspect
Convierte energía entre unidades (J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir potencia entre unidades (convert-power). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts energy between units (J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting power between units (convert-power). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuine value beyond that: exact definitional factors, 12 significant digits, and concrete limits (64 KB input, 1 s per call, 1 MB result), though it somewhat redundantly restates 'no side effects'/'deterministic' already implied by 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?
Front-loaded with the core purpose, then cleanly sectioned into When/Not-for/Side effects/Limits. Slightly padded by the full ES/EN duplication and unit enumeration repeated in both the prose and the schema, but each 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?
Output schema exists, and the description supplies precision (12 significant digits) and operating limits that an agent needs to call it correctly. Nothing material is missing for a stateless conversion 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 100%, so all three parameters are already documented. The description adds the meaningful behavior that omitting 'to' returns all units, but otherwise mostly repeats the unit list the schema already contains.
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 (converts) and resource (energy units), enumerates the supported units, and explicitly names the sibling it is not (convert-power). An agent can distinguish it from the other unit converters 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?
Includes an explicit 'When' clause (converting quantities with exact definitional factors) and an explicit 'Not for' clause routing power conversions to convert-power. The 'without "to", every unit is returned' note further guides invocation choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-flow-rateConvertir caudalARead-onlyIdempotentInspect
Convierte caudal entre unidades (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir volumen entre unidades (convert-volume). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts flow rate between units (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting volume between units (convert-volume). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so restating 'read-only, no network, no stored state, deterministic' earns little new credit. What does add value beyond the structured fields is the operational envelope: 64 KB JSON input, 1 s per call, 1 MB result, and 12 significant digits of precision. That is genuine disclosure, just partly offset by redundant safety restatement.
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 core conversion statement, then cleanly labeled sections (When / Not for / Side effects / Deterministic / Limits). The one cost is that the entire content is duplicated in Spanish and English, roughly doubling length for an agent that only needs one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 scalar params, no nesting), an output schema exists so return shape need not be explained, and the description covers units, defaults, precision, exclusions, and resource limits. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds meaning by clarifying that omitting 'to' returns all units and that output carries 12 significant digits. It also supplies the full unit vocabulary that the schema only gives for 'from', which reduces the risk of an invalid 'to' value.
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 and resource (converts flow rate between units) and enumerates the exact supported units (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min). It explicitly distinguishes itself from the nearest sibling, convert-volume, so an agent can route without inspecting 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?
Provides an explicit 'When' clause (converting a quantity between units with exact definitional factors) and an explicit 'Not for' clause naming the alternative tool convert-volume. It also states the default behavior when 'to' is omitted, so the omission case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-forceConvertir fuerzaARead-onlyIdempotentInspect
Convierte fuerza entre unidades (N, kN, lbf, kgf, dyn). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir presión entre unidades (convert-pressure). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts force between units (N, kN, lbf, kgf, dyn). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting pressure between units (convert-pressure). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: N, kN, lbf, kgf, dyn (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is largely redundant here. The description nevertheless adds real value beyond annotations: exact definitional factors, 12-significant-digit precision, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). Its only weakness is restating the side-effect-free profile already in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource, units, and default behavior; the When/Not-for/Side-effects/Limits structure is scannable. The bilingual duplication roughly doubles the length, which is the main cost, though each individual 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 no explanation, and the description still covers precision, default expansion, limits, and exclusions. For a 3-parameter conversion tool this leaves nothing an agent needs 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 baseline is 3; the description adds genuine meaning by explaining that omitting 'to' returns every unit, which the schema only hints at with 'omit for all'. It does not add unit-factor or accepted-alias detail beyond the schema, so not a 5.
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 (converts), resource (force), and the exact unit set (N, kN, lbf, kgf, dyn), and explicitly names the sibling it is not (convert-pressure). An agent can distinguish it from convert-mass/convert-torque/convert-pressure 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?
Has explicit 'When:' and 'Not for:' clauses with the alternative tool named (convert-pressure). The default behavior when 'to' is omitted is also described, so selection and invocation conditions are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-frequencyConvertir frecuenciaARead-onlyIdempotentInspect
Convierte frecuencia entre unidades (Hz, kHz, MHz, GHz, rpm, bpm). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir tiempo entre unidades (convert-time). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts frequency between units (Hz, kHz, MHz, GHz, rpm, bpm). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting time between units (convert-time). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: Hz, kHz, MHz, GHz, rpm, bpm (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so some prose ("solo lectura, sin red, sin estado guardado") restates structured data. What is genuinely additive are the hard limits (64 KB JSON input, 1 s per call, 1 MB result) and the 12-significant-digit output precision, which no structured field carries.
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?
Content is front-loaded with the core verb, units and the omit behavior before usage, side effects and limits. The Spanish/English duplication roughly doubles the length, but each language block is tight and the parallel structure makes scanning easy.
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 3-parameter pure-conversion tool with an output schema already describing the return shape, the description covers units, exactness, deterministic behavior, timeouts, size caps and the sibling alternative. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents all three parameters, including "omit for all" for `to` and the unit list for `from`. The description's "Sin 'to' devuelve todas" is a useful behavioral reinforcement but largely duplicates 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 and resource (converts frequency), enumerates the supported units (Hz, kHz, MHz, GHz, rpm, bpm), and explicitly contrasts with the nearest sibling convert-time. An agent can identify this 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?
"Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos" gives the triggering condition, and "No para: convertir tiempo entre unidades (convert-time)" names the exclusion and the alternative tool by name, which is the routing decision an agent actually needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-fuel-economyConvertir consumo de combustibleARead-onlyIdempotentInspect
Convierte rendimiento de combustible entre km/L, L/100 km y mpg (EE. UU. e imperial). Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir volumen entre unidades (convert-volume). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts fuel economy between km/L, L/100 km, US mpg and imperial mpg (inverse relationship for L/100 km). When: a quantity has to be converted between units with exact definitional factors. Not for: converting volume between units (convert-volume). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | km/l, l/100km, mpg or mpg_imp (string; required; up to 20 chars). | |
| value | Yes | Value (number; required; > 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, and the description still adds context beyond them: no side effects, no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits and the determinism guarantee are operationally useful and not present in the 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?
Front-loaded with the purpose and then cleanly labeled When / Not for / Side effects / Deterministic / Limits, so an agent can skim. It is duplicated in Spanish and English, roughly doubling length, which costs a little but the content is non-redundant per language.
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 3-parameter pure conversion tool with a full output schema, the description covers purpose, scope, exclusions, safety profile, determinism and operational limits. Nothing an agent needs to call it correctly or set expectations about the response 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 'value', 'from', 'to' and the omit-for-all behavior are already documented in the schema. The description nevertheless adds real meaning by naming the supported unit tokens and flagging the inverse relationship for L/100 km, which changes how an agent should interpret and present results.
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 (converts fuel economy) and enumerates the exact unit set (km/L, L/100 km, US mpg, imperial mpg), plus calls out the inverse relationship for L/100 km. It also names the sibling it is not (convert-volume), so an agent can separate it from the other convert-* tools in the 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?
Explicit 'When:' clause scopes use to conversions with exact definitional factors, and an explicit 'No para / Not for:' clause routes volume conversion to convert-volume. Both the include and exclude conditions are stated, which is the strongest form of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-lengthConvertir longitudARead-onlyIdempotentInspect
Convierte longitud entre unidades (m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir área entre unidades (convert-area). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts length between units (m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting area between units (convert-area). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, and the description partly restates them ("solo lectura, sin red, sin estado guardado", "determinista"). It earns credit for information absent from annotations: the 64 KB input cap, 1 s per-call budget, 1 MB result cap, and output rounded to 12 significant digits.
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 and well ordered: purpose, unit list, default behavior, when/when-not, limits. The cost is full bilingual duplication — the same content appears in Spanish and English, roughly doubling length without adding 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 small 3-parameter conversion tool with an output schema, full annotation coverage and 100% schema descriptions, nothing an agent needs is missing: units, default behavior, determinism, precision and resource limits are all stated, so return values need no further explanation.
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 already documents all three params, including "omit for all" for `to` and the full unit list for `from`; the "Sin 'to' devuelve todas" line merely restates that. No additional semantic detail (e.g. case sensitivity of unit codes, error behavior on unknown units) is added, so baseline 3 is right.
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 and resource ("Convierte longitud") and enumerates all 13 supported units, so the scope is unambiguous. It also explicitly separates itself from the most confusable sibling (convert-area), which lets an agent pick the right tool 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?
Provides an explicit "When" clause and an explicit "No para" exclusion naming convert-area. All three slots (when, when-not, alternative) are filled, leaving nothing to inference for the adjacent-conversion case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-massConvertir masaARead-onlyIdempotentInspect
Convierte masa entre unidades (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir densidad entre unidades (convert-density). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts mass between units (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting density between units (convert-density). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the baseline is covered; the description adds real value with operational limits (64 KB input, 1 s per call, 1 MB result), determinism, and 12-significant-digit output precision. It does not repeat the safety hints redundantly beyond a brief confirmation, and the output schema covers return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded and clearly labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), but the entire body is duplicated verbatim in Spanish and English, roughly doubling length with zero new information. The trailing "[EN completo / full EN: inputSchema.description]" fragment is also noise rather than content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter, 2-required conversion tool with a full output schema and rich annotations, everything needed to call it correctly is present: units, default behavior, precision, limits, and the sibling exclusion.
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 unit enumeration, examples and "omit for all" note all already appear in the schema. The description's only marginal addition is restating that omitting "to" returns every unit, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Convierte masa entre unidades") and enumerates the full unit set, which pins down the scope unambiguously among the many sibling convert-* tools. It also explicitly names the adjacent-but-different tool (convert-density), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit "Cuándo" trigger (converting a quantity between units with exact definitional factors) and an explicit "No para" exclusion routing to convert-density. The "Without 'to', every unit is returned" note also tells the agent how to use the tool in its two modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-powerConvertir potenciaARead-onlyIdempotentInspect
Convierte potencia entre unidades (W, kW, MW, GW, hp, PS, BTU/h, kcal/h). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir energía entre unidades (convert-energy). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts power between units (W, kW, MW, GW, hp, PS, BTU/h, kcal/h). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting energy between units (convert-energy). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: W, kW, MW, GW, hp, PS, BTU/h, kcal/h (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds real context beyond them: no network access, no stored state, determinism, 12-significant-digit precision, and concrete limits (64 KB input, 1 s per call, 1 MB result). That is exactly the extra behavioral surface an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded and every clause (units, default behavior, when/not-for, side effects, limits) carries information. The main inefficiency is the full Spanish/English duplication, which doubles length without adding new facts, though it is a deliberate bilingual pattern.
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 3-parameter, fully documented, output-schema-backed conversion tool, nothing an agent needs is missing: units, default behavior, exclusions, safety profile, determinism, and resource limits are all present. Return-value shape is covered by the output schema, so its absence from the description is correct.
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 adds the meaningful behavioral rule that omitting 'to' returns every unit — a semantic consequence the schema only hints at with 'omit for all'. It does not add unit-alias or case-sensitivity guidance, so not a 5.
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 ('Convierte potencia entre unidades') and enumerates the supported units (W, kW, MW, GW, hp, PS, BTU/h, kcal/h), which immediately separates it from the many other convert-* siblings. It also names the one sibling it could be confused with (convert-energy) and rules it out.
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?
Explicit 'Cuándo' clause gives the triggering condition (a quantity must be converted with exact definitional factors) and an explicit 'No para' clause routes energy conversion to convert-energy. Both when-to-use and when-not-to-use are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-pressureConvertir presiónARead-onlyIdempotentInspect
Convierte presión entre unidades (Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir fuerza entre unidades (convert-force). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts pressure between units (Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting force between units (convert-force). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint/openWorldHint, yet the description still adds real value: no network, no stored state, determinism, 12-significant-digit precision, and concrete limits (64 KB input, 1 s per call, 1 MB result). These are traits annotations cannot express.
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?
Each sentence is substantive and front-loaded with purpose, then constraints. The only inefficiency is the full Spanish/English duplication, which doubles length, though the dual-language presentation is defensible given the Spanish title and description pairing.
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 format needn't be described; the description instead covers precision, determinism, and operational limits, which is exactly the residual information an agent needs. A simple conversion tool is fully specified here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already lists the units per parameter, so the schema carries most of the burden. The description adds the meaningful behavior that omitting 'to' returns every unit, which clarifies the optional parameter's semantics beyond the schema's terse '(omit for all)'.
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 ('Convierte presión entre unidades') and enumerates the supported units, so scope is unambiguous. It also names the tool it is not ('No para: convertir fuerza entre unidades (convert-force)'), distinguishing it from the other convert-* siblings.
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?
Has an explicit 'When:' clause (converting a quantity between units with exact definitional factors) and an explicit 'Not for:' exclusion routing to convert-force. Nothing about tool selection 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.
convert-speedConvertir velocidadARead-onlyIdempotentInspect
Convierte velocidad entre unidades (m/s, km/h, mph, kn, ft/s). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir aceleración entre unidades (convert-acceleration). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts speed between units (m/s, km/h, mph, kn, ft/s). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting acceleration between units (convert-acceleration). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: m/s, km/h, mph, kn, ft/s (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, and the description still adds real context beyond them: no stored state, determinism, 12 significant digits precision, and hard limits (64 KB input, 1 s per call, 1 MB result). The one gap is error behavior — it doesn't say what happens if "to" or "from" names an unsupported unit.
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 and well-ordered (purpose, default behavior, when, not-for, side effects, limits), but the entire body is duplicated verbatim in Spanish and English, roughly doubling token cost with no new 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 three-parameter pure conversion tool with full annotations and an output schema, nothing needed to call it correctly is missing: unit vocabulary, default for "to", precision, side effects and resource limits are all stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with per-parameter descriptions and examples for value and from, so the baseline of 3 applies. The description reinforces the unit vocabulary and the "omit to => all units" default, but adds little that the schema does not already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Convierte velocidad entre unidades") and enumerates the supported units (m/s, km/h, mph, kn, ft/s), which pins down scope exactly. It also names the sibling it is not (convert-acceleration), so an agent can distinguish it without opening another 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?
Explicit "Cuándo" section gives the selecting condition (converting a quantity between units with exact definitional factors) and an explicit "No para" exclusion that routes to convert-acceleration. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-temperatureConvertir temperaturaARead-onlyIdempotentInspect
Convierte temperaturas entre Celsius, Fahrenheit, Kelvin y Rankine; rechaza valores bajo el cero absoluto. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir energía entre unidades (convert-energy). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts temperatures between Celsius, Fahrenheit, Kelvin and Rankine (affine conversion). Rejects values below absolute zero. When: a quantity has to be converted between units with exact definitional factors. Not for: converting energy between units (convert-energy). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | C, F, K or R (string; required; up to 20 chars). | |
| value | Yes | Temperature (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is partly redundant. The description nevertheless adds genuinely new context: determinism, no network/stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). The absolute-zero rejection is a useful behavioral constraint the annotations cannot express.
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?
Each language version is front-loaded and efficient, but the full text is duplicated in Spanish and English, roughly doubling length for a single agent. The duplication is defensible given the Spanish title, yet it is waste from the consumer's perspective.
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 schema exists so return values need no explanation, and the description covers determinism, side effects, size/time limits and the absolute-zero boundary. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the 'omit for all' behavior for the optional 'to' parameter, so the schema carries the parameter burden. The description only adds the semantic frame 'affine conversion', which is real but modest added value 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?
States a specific verb and resource ('Convierte temperaturas entre Celsius, Fahrenheit, Kelvin y Rankine'), enumerates the supported units, and names an edge case (rejects below absolute zero). It also explicitly separates itself from the sibling convert-energy, so an agent can disambiguate 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?
Provides explicit 'When:' and 'Not for:' clauses, naming convert-energy as the alternative for energy conversion. This is the when/when-not/alternatives structure at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-timeConvertir unidades de tiempoARead-onlyIdempotentInspect
Convierte tiempo entre unidades (ns, us, ms, s, min, h, d, wk, month, yr, decade, century). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: analizar una duración ISO 8601 (duration-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts time between units (ns, us, ms, s, min, h, d, wk, month, yr, decade, century). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: parsing an ISO 8601 duration (duration-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: ns, us, ms, s, min, h, d, wk, month, yr, decade, century (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds non-trivial operational context: determinism, exact definitional factors, 12 significant digits, and hard limits (64 KB input, 1 s per call, 1 MB result) that the annotations do not carry. Slight redundancy in restating 'no side effects' keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (what it does, then When / Not for / Side effects / Deterministic / Limits) and every section is actionably short. The main inefficiency is that the entire block is duplicated verbatim in Spanish and English, roughly doubling length, and the 12-significant-digit detail appears only in the EN copy.
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 pure, deterministic conversion utility the definition covers everything an agent needs: unit vocabulary, default behavior, exactness/precision, resource limits, and the alternative tool. An output schema exists, so return-value shape need not be described.
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; the description earns a bump by clarifying the semantics of omitting 'to' (all units returned) and by stating the numeric contract (exact definitional factors, results to 12 significant digits). The supported-unit list mirrors the 'from' schema description, so most of the value is the rounding/precision behavior, which is genuinely 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+resource ('Convierte tiempo entre unidades') and enumerates the exact unit set (ns through century), plus the default behavior when 'to' is omitted. It also names the sibling it is not (duration-parse), so an agent can separate it from the other time-related tools in a huge sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' clause gives the positive condition (converting a quantity between units with exact definitional factors) and an explicit 'No para' exclusion routing ISO 8601 duration parsing to duration-parse. That is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-torqueConvertir par de torsiónARead-onlyIdempotentInspect
Convierte par de torsión entre unidades (N·m, kN·m, lbf·ft, lbf·in, kgf·m). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir energía entre unidades (convert-energy). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts torque between units (N·m, kN·m, lbf·ft, lbf·in, kgf·m). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting energy between units (convert-energy). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: N·m, kN·m, lbf·ft, lbf·in, kgf·m (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing operational limits (64 KB JSON input, 1 s per call, 1 MB result), determinism, and output precision (12 significant digits). The 'no side effects / read-only' sentence largely restates readOnlyHint and destructiveHint, which slightly dilutes the added value.
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 is front-loaded and each sentence carries information (units, default behavior, when/when-not, limits). The full Spanish/English duplication roughly doubles the length, which is a structural cost even if intentional for locale coverage.
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, annotations fully declare the safety profile, and the description still supplies precision, default-return behavior, and runtime limits. Nothing an agent needs to invoke this 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 adds a genuinely behavioral detail the schema only hints at: omitting 'to' returns every unit rather than erroring. It does not add syntax guidance for unit string spelling beyond the already-listed names.
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 (converts torque between units) and enumerates the supported units, so scope is unambiguous. It also names the sibling it is not for (convert-energy), which matters in a catalog with ~15 other convert-* 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?
Explicit 'When:' clause (quantity must be converted using exact definitional factors) plus an explicit 'Not for:' exclusion pointing to convert-energy. The alternative and the condition selecting it are both named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert-volumeConvertir volumenARead-onlyIdempotentInspect
Convierte volumen entre unidades (l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3). Sin "to" devuelve todas. Cuándo: hay que convertir una cantidad entre unidades con factores de definición exactos. No para: convertir medidas de cocina entre volumen (convert-cooking). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts volume between units (l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3). Without "to", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting kitchen measures between volume (convert-cooking). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target unit (omit for all) (string; optional; up to 20 chars). | |
| from | Yes | Source unit: l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3 (string; required; up to 20 chars). | |
| value | Yes | Value to convert (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | No | |
| from | No | |
| value | No | any JSON value |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the 'sin efectos secundarios / solo lectura' sentence is largely redundant. The description does add genuinely new context beyond annotations: determinism, 12-significant-digit precision, and hard limits (64 KB input, 1 s per call, 1 MB result), which materially affect how an agent batches and sizes calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and well ordered (units, default behavior, when/not-for, side effects, limits), but the full text is duplicated verbatim in Spanish and English, roughly doubling length with no new information. The trailing '[EN completo / full EN: inputSchema.description]' stub is also noise.
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, annotations covering safety and determinism, and 100% schema coverage, the description supplies everything still needed: unit vocabulary, omit-to semantics, sibling routing, and execution limits. No gap remains that would cause a misinvocation.
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 every property is documented, including 'to' being optional and the full unit list on 'from', so the baseline of 3 applies. The description's 'Sin "to" devuelve todas' adds the useful nuance that omitting the target returns all units rather than nothing, but it does not explain unit aliasing, case sensitivity, or invalid-unit 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?
States a specific verb and resource (converts volume between units) and enumerates the full unit set, so scope is unambiguous. It also names the sibling it is not (convert-cooking) for kitchen measures, letting an agent separate it from the other convert-* tools 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?
Explicit 'Cuándo:' clause defines the triggering condition (quantity must be converted with exact definitional factors) and an explicit 'No para:' exclusion routing kitchen measures to convert-cooking. This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookie-parseLeer cabecera CookieARead-onlyIdempotentInspect
Analiza el encabezado Cookie (nombre=valor; …) en un objeto. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar un encabezado Set-Cookie en nombre, valor y atributos, y señala omisiones de seguridad (set-cookie-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a Cookie request header (name=value; …) into an object, percent-decoding values when valid; first occurrence wins. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Set-Cookie response header into name, value and attributes (set-cookie-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cookie | Yes | Cookie header value (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cookies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, so the 'solo lectura, sin red' sentence is partly redundant. However the description adds genuinely new behavior: values are percent-decoded only when valid, the first occurrence of a duplicate name wins, output is deterministic, and there are explicit limits (64 KB input, 1 s per call, 1 MB result). Those are real operational constraints the annotations do not 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?
The content is front-loaded and each individual sentence is useful, but the entire description is duplicated verbatim in Spanish and English, and it closes with the meta-note '[EN completo / full EN: inputSchema.description]', which is artifact noise rather than agent-facing information. The generic 'When' enumeration also adds bulk without distinguishing this tool.
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?
This is a one-parameter, single-purpose tool with a full output schema, and the description covers scope, exclusion, determinism, and limits. What is missing is edge-case behavior for malformed input (e.g. a segment without '=', or invalid percent-escapes) since the 'valid' qualifier on percent-decoding implies but does not state fallback behavior.
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 single parameter is documented with an example, so the baseline is 3. The description goes beyond the schema by explaining how the string is interpreted (semicolon-delimited pairs, percent-decoding, duplicate-name resolution) and by stating the 64 KB ceiling, which clarifies the maxLength constraint in practical terms.
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 names the exact resource ('encabezado Cookie / Cookie request header') and the exact operation (parse 'name=value; …' into an object), including the subtle rule 'first occurrence wins'. It also explicitly names the sibling it is not ('set-cookie-parse'), so an agent can route between the two cookie tools 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 'No para / Not for' clause is precise and actionable: it excludes Set-Cookie parsing and names the alternative tool that handles it. The positive 'When' clause is weaker because it is a generic template list ('una URL, una cabecera HTTP, un token… archivo para agentes') that is not specific to Cookie headers and reads as boilerplate shared across many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coordinates-to-decimalCoordenadas GMS a decimalesARead-onlyIdempotentInspect
Convierte coordenadas en GMS (4°38'8"N), grados y minutos decimales o decimales con hemisferio (N/S/E/W/O) a grados decimales. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: formatear coordenadas decimales como grados, minutos y segundos (coordinates-to-dms). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses latitude/longitude written as DMS (4°38'8"N), degrees-decimal-minutes (4°38.13'N), decimal with hemisphere letters (N/S/E/W, O for oeste) or signs, into signed decimal degrees. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: formatting decimal coordinates as degrees, minutes and seconds (coordinates-to-dms). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude text (string; required; up to 64 chars). | |
| longitude | Yes | Longitude text (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No |
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 goes beyond by adding determinism and concrete limits (64 KB input, 1 s per call, 1 MB result), which are genuinely useful operational context an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded and well-organized, but the description is bilingual and largely duplicated in the schema description (with an explicit pointer to it), which is redundant bulk. Every sentence is relevant, but the repetition costs structure points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, a complete schema, and an existing output schema, the description covers purpose, alternatives, side effects, and limits thoroughly. Nothing an agent needs to call it correctly is missing; only minor redundancy keeps it from a 5.
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 both latitude/longitude carry descriptions plus examples, so the schema does the heavy lifting. The description lists input formats but adds little parameter-specific meaning beyond what the schema and examples already convey; 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 (DMS/decimal-minutes/hemisphere coordinates to signed decimal degrees), enumerates all accepted input formats, and explicitly distinguishes itself from the coordinates-to-dms sibling. An agent can identify exactly what this does 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?
Explicitly provides a 'Cuándo/When' clause (computing coordinates, distances, bearings, areas from given points) and a 'No para/Not for' clause naming coordinates-to-dms as the alternative. The selection condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coordinates-to-dmsCoordenadas decimales a GMSARead-onlyIdempotentInspect
Formatea latitud/longitud decimal como grados, minutos y segundos (y grados con minutos decimales). Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: convertir coordenadas en GMS (coordinates-to-decimal). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats decimal latitude/longitude as degrees-minutes-seconds with hemisphere letters, and as degrees-decimal-minutes. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: parsing latitude/longitude written as DMS (coordinates-to-decimal). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (number; required; min -90; max 90). | |
| lon | Yes | Longitude in decimal degrees (number; required; min -180; max 180). | |
| seconds_decimals | No | Decimals for seconds (integer; optional; default 1; min 0; max 4). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ddm | No | |
| latitude | No | |
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, but the description adds concrete operational context: no network, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB output). Those limits are genuinely useful for call planning and are not visible in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded with labeled sections, but the entire content is duplicated verbatim in Spanish and English, roughly doubling length for a two-parameter formatter. The 'When' sentence does not earn its place because it describes tasks the tool does not do.
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 unnecessary; limits, determinism, side effects and the inverse-tool alternative are all covered. The only shortfall is that the description never mentions the seconds_decimals output-formatting choice, which is the one behavioral knob an agent might want set deliberately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with lat/lon ranges, examples and the seconds_decimals default already documented in the schema. The description adds no per-parameter meaning (it does not explain the 0-4 seconds_decimals range or the two output formats' relationship to it), 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 and resource: formats decimal latitude/longitude into DMS and degrees-decimal-minutes, including hemisphere letters. It explicitly names the sibling it is not (coordinates-to-decimal), so an agent can distinguish the two 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 'Not for' clause explicitly routes the inverse operation to coordinates-to-decimal, which is exactly the disambiguation an agent needs. However, the 'When' clause ('coordinates, distances, bearings or areas have to be computed from given points') describes computation tasks this formatting tool does not perform, making the positive trigger vague and slightly off-target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-phone-validateValidar teléfono colombianoBRead-onlyIdempotentInspect
Verifica la SINTAXIS de un teléfono colombiano (celular 3XX, fijo 60X con región, 01 8000) y devuelve formato E.164. No verifica que la línea exista. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: clasificar una placa colombiana por SINTAXIS (co-plate-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks the SYNTAX of a Colombian phone number (mobile 3XX XXX XXXX; fixed lines in the 2021 10-digit plan 60X XXX XXXX with region; 01 8000 toll-free) and returns E.164. Does not check that the line exists. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | Phone number (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| e164 | No | |
| type | No | |
| region | No | |
| national | No | |
| valid_syntax | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds substantive, non-redundant behavior: it explicitly does NOT verify line existence, and it states concrete limits (64 KB input, 1 s per call, 1 MB result). The 'sin red, sin estado guardado' and 'determinista' lines largely restate 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?
Good front-loading (what it does first) and useful labeled sections (Cuándo / No para / Efectos / Límites). But the definition is long, duplicates the full text in both Spanish and English, and spends a whole clause on an irrelevant fiscal-rule scenario that should have been cut.
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 the single parameter is simple and documented. The missing piece is trustworthy routing: nothing tells an agent when to pick this over phone-e164-validate or phone-parse, and the mis-scoped 'Cuándo' clause degrades an otherwise complete 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?
One required parameter with 100% schema description coverage, so the schema baseline applies. The description contributes the accepted syntax families (3XX, 60X with region, 01 8000) and the E.164 output format, which help interpret the input, but it gives no examples or normalization behavior beyond the schema's own example.
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 ('Verifica la SINTAXIS de un teléfono colombiano') and enumerates the accepted families (celular 3XX, fijo 60X con región, 01 8000) plus the E.164 output. The boundary 'No verifica que la línea exista' is a genuinely useful disambiguation. However, the sibling it names in 'No para' (co-plate-validate) is unrelated to phone validation, while the far more confusable siblings phone-e164-validate and phone-parse go unmentioned, so differentiation is misdirected.
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 'Cuándo' clause is plainly wrong for this tool: it tells the agent to use phone validation when a Colombian tax/fiscal rule (DIAN, Ley Emiliani, COP, IVA, GMF, UVT) must be applied exactly — copy-paste residue from a fiscal tool. That actively steers an agent toward the wrong use case. The 'No para' exclusion of co-plate-validate is real guidance, which keeps this above a 1, but the primary when-to-use signal is misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-plate-validateValidar placa colombianaARead-onlyIdempotentInspect
Clasifica una placa colombiana por SINTAXIS: carro (ABC123), moto (ABC12D), remolque (R12345), diplomática. No consulta el RUNT. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: verificar la SINTAXIS de un teléfono colombiano (co-phone-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Classifies a Colombian license plate by SYNTAX: car/public service (ABC123), motorcycle (ABC12D, or older ABC12), trailer/semitrailer (R12345 / S12345), diplomatic (CD/CC/OI + 4 digits). Does not check registration in RUNT. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| plate | Yes | Plate (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| normalized | No | |
| valid_syntax | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's repetition of 'read-only, no network, no stored state, deterministic' earns little credit. It does add genuinely new operational context: explicit size and time limits (64 KB input, 1 s per call, 1 MB result) and the fact that RUNT registration is not consulted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded and well ordered (what, when, not-for, side effects, limits), but the Spanish and English blocks are near-verbatim duplicates, adding length without new information. The meta pointer '[EN completo / full EN: inputSchema.description]' is also noise inside a description.
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?
Return values need not be explained given an output schema exists, and the syntactic scope is well covered. However, the misaligned 'When' clause (fiscal/e-invoicing rules) leaves the actual trigger condition for plate validation unstated, which is a real gap for a tool whose only job is a syntax check.
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 100% and only one parameter, the baseline is 3, and the description exceeds it by characterizing which input shapes are valid (ABC123, ABC12D, R12345, CD/CC/OI + 4 digits), which is exactly the semantics an agent needs to construct a correct plate string. It also implies case/space tolerance via the 'abc 123' example.
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 (classify a Colombian plate by SYNTAX) and enumerates the accepted formats: car ABC123, moto ABC12D/ABC12, trailer R12345/S12345, diplomatic CD/CC/OI+4 digits. It also scopes out RUNT registration checks, so an agent can distinguish it from validation tools that hit a registry.
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 an explicit 'Not for' routing to co-phone-validate, but the 'When' clause is boilerplate that does not match the tool: it cites DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF and UVT, none of which relate to plate syntax. An agent following that guidance could plausibly invoke this tool for tax or invoicing calculations, which is misleading rather than merely incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-retencion-salariosRetención en la fuente por salariosARead-onlyIdempotentInspect
Calcula la retención en la fuente mensual por salarios, procedimiento 1 (tabla del art. 383 del E.T. en UVT, renta exenta del 25 %, límite del 40 %), con la UVT 2026; cita norma y URL de cada dato y marca lo no verificado. Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: convertir entre UVT y pesos para 2024 (co-uvt-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes Colombian monthly income-tax withholding on wages by procedure 1 (Estatuto Tributario art. 383 table in UVT, 25% exempt income, 40% cap) with the 2026 UVT, citing the rule and URL of each figure and flagging what is not verified. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| uvt_value | No | UVT value in pesos; default 2026 = 52374 (Resolución DIAN 000238 de 2025) (number; optional; default 52374; min 1000; max 1000000). | |
| deductions | No | Monthly deductions already capped by their own limits (dependents, mortgage interest, prepaid health) (number; optional; default 0; min 0; max 1000000000000). | |
| other_exempt_income | No | Other exempt income of the month already capped (voluntary pension, AFC/AVC) (number; optional; default 0; min 0; max 1000000000000). | |
| monthly_labor_income | Yes | Taxable labor payments of the month (salary and other wage payments) in pesos (number; required; min 0; max 1000000000000). | |
| mandatory_contributions | No | Employee mandatory pension (incl. solidarity fund) and health contributions of the month, non-taxable income (number; optional; default 0; min 0; max 1000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uvt | No | |
| aviso | No | |
| fuente | No | |
| rango_uvt | No | |
| retencion | No | |
| deducciones | No | |
| ingreso_neto | No | |
| base_gravable | No | |
| no_verificado | No | |
| procedimiento | No | |
| retencion_uvt | No | |
| ingreso_laboral | No | |
| renta_exenta_25 | No | |
| base_gravable_uvt | No | |
| limite_beneficios | No | |
| tarifa_efectiva_pct | No | |
| beneficios_aplicados | No | |
| otras_rentas_exentas | No | |
| beneficios_recortados | No | |
| ingresos_no_constitutivos | No | |
| tope_mensual_renta_exenta_25 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuine traits beyond the annotations: each figure is returned with its cited norm and URL and unverified data is flagged, plus concrete limits (64 KB input, 1 s per call, 1 MB result) and determinism. It does restate the read-only/no-network/no-state properties already carried by readOnlyHint/openWorldHint/destructiveHint, so it is additive rather than fully original.
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 core computation, then clearly labeled Cuándo / No para / Efectos secundarios / Determinista / Límites blocks — very scannable. Minor waste from the duplicated full English restatement and the 'full EN: inputSchema.description' pointer.
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 deterministic calculation tool with an output schema present, everything an agent needs is covered: scope, legal basis, exclusions, side effects, determinism and hard limits. Return-value shape is legitimately delegated to 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 100%, with every parameter's meaning, default, cap and min/max already documented in-schema. The description contributes the rule constants (25% exempt, 40% cap) that explain how the inputs are combined, but it adds no parameter-level syntax or edge-case guidance, 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 precise verb+resource+scope: 'Calcula la retención en la fuente mensual por salarios, procedimiento 1', and pins the exact legal basis (art. 383 E.T., UVT table, 25% exempt income, 40% cap, UVT 2026). This distinguishes it from generic tax/withholding siblings 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?
Explicitly names an alternative and the condition that excludes it: 'No para: convertir entre UVT y pesos para 2024 (co-uvt-convert)'. The 'Cuándo' clause gives context (applying Colombian rules exactly, invoicing/payment flows) but the exclusion is narrow – it never says that other withholding concepts or procedure 2 fall outside this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count-occurrencesContar aparicionesARead-onlyIdempotentInspect
Cuenta apariciones de una subcadena y devuelve sus posiciones. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar la frecuencia de palabras en un texto (word-frequency). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts non-overlapping (or overlapping) occurrences of a substring, optionally case-insensitive, and returns their indices (first 1,000). When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting word frequencies in text (word-frequency). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). | |
| substring | Yes | Substring (string; required; at least 1 chars; up to 1000 chars). | |
| overlapping | No | Count overlapping matches (boolean; optional; default false). | |
| case_sensitive | No | Case sensitive (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| indices | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds concrete operational context beyond them: no network, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). This is exactly the extra context the annotations 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?
Front-loaded with the core action, then organized into labeled sections (When / Not for / Side effects / Deterministic / Limits). The bilingual duplication makes it longer than strictly necessary, but 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?
For a 4-parameter read-only tool with an output schema, the description covers purpose, alternatives, side effects, determinism, and resource limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that matches are non-overlapping by default (overlapping optional), case-insensitive mode is available, and only the first 1,000 indices are returned. That clarifies the two boolean flags' effect on results.
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 ('Cuenta apariciones de una subcadena y devuelve sus posiciones') and explicitly names the sibling it is not for (word-frequency), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' condition (exact text transformation/comparison/measurement rather than approximation) and an explicit 'No para' exclusion pointing to word-frequency. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country-infoDatos de un país (capital, moneda, idiomas)ARead-onlyIdempotentInspect
Devuelve los datos de un país buscado por código ISO 3166-1 o por nombre en español o inglés (sin importar tildes): nombres, capital, monedas ISO 4217, idiomas, prefijos telefónicos, zonas horarias IANA y continente, con su fuente. Cuándo: se necesitan datos de un país (capital, moneda, idiomas, prefijo telefónico, zonas horarias) de una fuente citada y no de memoria. No para: buscar países ISO 3166-1 alfa-2 por código o por nombre en español o inglés (iso-country-lookup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns the facts of one country found by ISO 3166-1 code or by name in English or Spanish (accent-insensitive): names, capital, ISO 4217 currencies, languages, international calling codes, IANA time zones and continent, from embedded open data with its source. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country: ISO 3166-1 alpha-2 (CO) or alpha-3 (COL) code, or name in English or Spanish (Colombia, Alemania, Germany) (string; required; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| alpha3 | No | |
| source | No | |
| capital | No | |
| name_en | No | |
| name_es | No | |
| part_of | No | |
| continent | No | |
| languages | No | |
| timezones | No | |
| currencies | No | |
| matched_by | No | |
| native_name | No | |
| calling_codes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, idempotent, closed-world behavior, but the description adds concrete context: embedded open data with a source, no network access, no stored state, determinism, and limits (64 KB input, 1 s per call, 1 MB result). It does not contradict the annotations and meaningfully supplements 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?
The definition is front-loaded with purpose and enumerates the most useful details in a logical order. It is somewhat long due to bilingual duplication and a pointer to the full English copy in inputSchema.description, but each content block still carries substantive 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 the output schema, comprehensive annotations, complete parameter description coverage, and one-parameter shape, the description is complete enough for correct selection and invocation. It covers source, determinism, side effects, and operational limits, leaving no major 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 coverage is 100%, and the property description already documents alpha-2/alpha-3 codes, English/Spanish names, examples, and length constraints. The description repeats those accepted forms and mentions accent-insensitive matching, which is also reflected in the schema description, so it adds little new parameter meaning beyond the structured 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?
The description opens with a specific verb and resource: it returns facts for one country found by ISO code or English/Spanish name. It enumerates the returned fields (names, capital, currencies, languages, calling codes, time zones, continent, source) and explicitly names the sibling iso-country-lookup as not the right tool for that lookup role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear 'Cuándo' condition (facts needed from a cited source rather than memory) and an explicit 'No para' exclusion pointing to iso-country-lookup. This is exactly the when/when-not/alternative routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country-populationPoblación de un país (Banco Mundial)ARead-onlyIdempotentInspect
Devuelve la población total de un país (indicador SP.POP.TOTL del Banco Mundial, último año de los datos incluidos, CC BY 4.0) con el año y la fuente; el país se busca por código ISO 3166-1 o por nombre en español o inglés. Cuándo: se necesita la población de un país con su año y su fuente y no una cifra de memoria. No para: devolver los datos de un país buscado por código ISO 3166-1 o por nombre en español o inglés (country-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns the total population of a country (World Bank indicator SP.POP.TOTL, latest year in the embedded data, CC BY 4.0) with the year and source; the country is found by ISO 3166-1 code or by name in English or Spanish. When: the population of a country is needed with its year and source instead of an estimate from memory. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country: ISO 3166-1 alpha-2 (CO) or alpha-3 (COL) code, or name in English or Spanish (Colombia, Alemania, Germany) (string; required; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| note | No | |
| year | No | |
| source | No | |
| name_en | No | |
| name_es | No | |
| indicator | No | |
| matched_by | No | |
| population | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, but the description goes further by stating no network access, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result) — operational constraints the annotations do not carry. It rests just short of 5 because the read-only and determinism statements partly restate the hints.
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 statement of what is returned, then purpose/labels for when-not, side effects and limits — every block is scannable. It loses a point for the truncated, self-referential tail ('[EN completo / full EN: inputSchema.description]') and for re-listing the accepted country forms that the schema already carries.
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 single required parameter, full schema coverage, rich annotations and an output schema, nothing an agent needs is missing. The description adds the data vintage, license, alternative routing and operational limits, so failure modes are covered.
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 already documents that 'country' accepts ISO 3166-1 alpha-2/alpha-3 or an English/Spanish name, so the description largely repeats it. It adds the useful point that the result is the latest available year, but that is output semantics rather than parameter 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?
States a specific verb and resource (returns total population), names the exact World Bank indicator, and specifies the data vintage and license. It also explicitly names the sibling it replaces (country-info), so an agent can disambiguate 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?
Provides an explicit 'Cuándo' trigger (population with year and source, not an estimate from memory) and a 'No para' exclusion routing to country-info. Both the when and the when-not are stated with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
co-uvt-convertUVT ↔ pesos (Colombia)ARead-onlyIdempotentInspect
Convierte entre UVT y pesos para 2024 ($47.065), 2025 ($49.799) o 2026 ($52.374, Resolución DIAN 000238 de 2025). Cuándo: hay que aplicar con exactitud una regla colombiana (DIAN, festivos de la Ley Emiliani, montos en COP, IVA, GMF, UVT), p. ej. al facturar o cobrar. No para: formatear un valor en pesos colombianos (co-cop-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts between UVT (Unidad de Valor Tributario) and Colombian pesos for 2024 ($47.065), 2025 ($49.799) or 2026 ($52.374, DIAN Resolución 000238 de 2025). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: formatting an amount as Colombian pesos the way it is written in Colombia (co-cop-format). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| uvt | No | Amount in UVT (number; optional; min 0; max 1000000000). | |
| year | No | Tax year (integer; optional; default 2026; min 2024; max 2026). | |
| pesos | No | Amount in pesos (number; optional; min 0; max 1000000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uvt | No | |
| year | No | |
| pesos | No | |
| uvt_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, so the safety profile is covered; the description still adds genuinely new context: determinism, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). Only gap is that it does not state how out-of-range or missing input is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish text is front-loaded and well structured (When / Not for / Side effects / Deterministic / Limits), but the content is then repeated verbatim in EN and again in the schema description, roughly tripling the length for the same information. Duplication rather than size is the 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?
An output schema exists, so return values need no explanation, and the description covers purpose, routing, determinism and limits. The only material omission for a 3-param, all-optional tool is the uvt-vs-pesos input-choice rule, which an agent must infer.
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 each parameter is documented, so the baseline is 3; the description earns an extra point by giving the per-year UVT rates ($47.065 / $49.799 / $52.374), which explains what the `year` parameter actually selects. It does not clarify that exactly one of `uvt` or `pesos` should be supplied, even though both are optional with no required field — a real ambiguity left unresolved.
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 (converts between UVT and Colombian pesos) and names the exact scope (2024/2025/2026 with the actual UVT values and the DIAN resolution for 2026). It explicitly names the sibling it is not (co-cop-format) and contrasts formatting vs. conversion, so an agent can route correctly 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?
"Cuándo" gives the positive condition (applying a Colombian rule exactly — DIAN, Ley Emiliani, COP amounts, IVA, GMF, invoicing/payment flows) and "No para" gives the exclusion with the named alternative (co-cop-format for formatting). This is explicit when/when-not/alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crockford32-decodeDecodificar Base32 CrockfordARead-onlyIdempotentInspect
Decodifica Base32 de Crockford; mapea O→0 e I/L→1, ignora guiones. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar en Base32 de Crockford (crockford32-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes Crockford Base32; case-insensitive, maps O→0 and I/L→1, ignores hyphens. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding bytes in Douglas Crockford's Base32 (crockford32-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| crockford32 | Yes | Crockford Base32 string (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, but the description adds genuinely new behavior: case-insensitivity, O→0 and I/L→1 mapping, hyphen ignoring, plus concrete limits (64 KB input, 1 s, 1 MB result). Some sentences (no network, no stored state) merely restate 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?
Front-loaded with the definition and cleanly sectioned (Cuándo / No para / Efectos / Límites). It is efficient per language, but the full bilingual duplication roughly doubles length for an agent that only needs one.
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 purpose, the alternative tool, side effects, determinism and operating limits, and an output schema exists so return values need no explanation. The ambiguous 'Cuándo' phrasing is the only meaningful gap.
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 crockford32 and output_encoding. The description adds the tolerant-input rules but says nothing about the output_encoding choices, so 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 and resource ('Decodifica Base32 de Crockford') and immediately names the sibling it is not (crockford32-encode). An agent can distinguish it from crockford32-encode without opening either schema, though it doesn't explicitly contrast with plain base32-decode.
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?
Explicitly provides a 'No para' clause routing encoding to crockford32-encode, and a 'Cuándo' clause. However the Cuándo wording ('convertir bytes o texto a esta codificación, o desde ella') is muddled for a one-directional decode tool and doesn't distinguish it from the generic base32-decode sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crockford32-encodeCodificar Base32 CrockfordARead-onlyIdempotentInspect
Codifica en Base32 de Crockford (sin I, L, O, U), el alfabeto de los ULID. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar Base32 de Crockford (crockford32-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes bytes in Douglas Crockford's Base32 (no I, L, O, U; no padding), the alphabet used by ULIDs. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding Crockford Base32 (crockford32-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| crockford32 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explicitly discloses that there are no side effects, no network access, no stored state, deterministic output, and concrete limits of 64 KB input, 1 s per call, and 1 MB result. This gives the agent substantial behavioral context for invoking the tool safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with labels for when, not for, side effects, determinism, and limits. But the entire Spanish section is duplicated in English, which roughly doubles length without adding new information. The internal 'to or from' ambiguity also costs some conciseness.
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 available annotations, 100% schema coverage, and an output schema, the description supplies everything an agent needs: purpose, exclusion, side effects, determinism, and operational limits. The only minor issue is the wording ambiguity around decoding, not a missing category of information.
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 both parameters are already documented in the schema. The description adds only general context like 'bytes or text' and size limits, without explaining the utf8 versus hex input_encoding distinction. A baseline 3 is appropriate when the schema carries parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: encode in Crockford Base32, with the no-I/L/O/U and no-padding details that distinguish it from standard base32-encode. It also names the sibling it is not for, crockford32-decode. The 'o desde ella' wording is ambiguous, but the first sentence and English restatement still make the encoding purpose 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?
It explicitly states when to use it and names the decoding sibling as the alternative, which is strong guidance. However, the 'convertir ... a esta codificación, o desde ella' phrase incorrectly suggests decoding is also in scope, creating an internal conflict with 'No para: decodificar'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cron-explainExplicar expresión cronARead-onlyIdempotentInspect
Valida una expresión cron de 5 campos y la describe en inglés y español, con los valores expandidos. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: listar las próximas N ejecuciones (cron-next-runs). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 5-field cron expression (minute hour day-of-month month day-of-week; lists, ranges, steps, names, @daily-style macros) and describes it in English and Spanish, with the expanded field values. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the next N (cron-next-runs). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | Cron expression (string; required; up to 200 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| fields | No | |
| normalized | No | |
| description_en | No | |
| description_es | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description still adds determinism and concrete limits (64 KB input, 1 s per call, 1 MB result). Minor deduction because the tail line ('[EN completo / full EN: inputSchema.description]') is meta-text rather than disclosure, and the limits duplicate the schema description.
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 purpose followed by When/Not-for/effects/limits, which is good structure, but the Spanish and English blocks are near-verbatim duplicates and the trailing pointer to inputSchema.description is wasted text. Efficient content, roughly double the length it needs to be.
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 schema exists, so return shape need not be described; the description still covers accepted format, determinism, side-effect posture and resource limits. Nothing an agent needs to invoke this 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% and the single parameter is already documented, so baseline is 3; the description earns a point by enumerating the accepted cron syntax (5 fields, lists, ranges, steps, names, @daily macros) that the schema's one-line 'Cron expression' field does not convey.
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 ('Valida una expresión cron de 5 campos y la describe en inglés y español, con los valores expandidos') plus the accepted grammar (lists, ranges, steps, names, macros). It also explicitly names the sibling it is not (cron-next-runs), so an agent can separate the two 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?
Explicit 'Cuándo:' clause scopes it to exactness-critical date/timezone/calendar results, and an explicit 'No para:' clause routes the next-N-runs case to cron-next-runs. Both the when and the when-not are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cron-next-runsPróximas ejecuciones de cronARead-onlyIdempotentInspect
Lista las próximas N ejecuciones (≤ 50) de una expresión cron después de un instante, en una zona horaria IANA. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: validar una expresión cron de 5 campos y la describe en inglés y español, con los valores expandidos (cron-explain). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists the next N (≤ 50) run times of a 5-field cron expression after a given instant, evaluated in an IANA time zone (DST-aware; non-existent local times are skipped). Searches at most 8 years ahead. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: validating a 5-field cron expression (cron-explain). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | Start instant (exclusive) (string; required; up to 40 chars). | |
| count | No | How many runs (integer; optional; default 5; min 1; max 50). | |
| timezone | No | IANA time zone, e.g. America/Bogota (default UTC) (string; optional; default "UTC"; up to 64 chars). | UTC |
| expression | Yes | Cron expression (string; required; up to 200 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| runs | No | |
| runs_utc | No | |
| timezone | No | |
| expression | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-open-world, non-destructive, but the description adds real behavioral detail beyond them: DST-aware evaluation, skipping of non-existent local times, an 8-year search horizon, no network access, determinism, and concrete limits (64 KB input, 1 s/call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish block is tight, front-loaded and every clause earns its place (purpose, when, not-for, side effects, limits). The bilingual duplication of content in the EN paragraph costs some conciseness, but structure and ordering remain clear.
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, an agent needs no description of return values, and the description fully covers inputs constraints, evaluation semantics (DST, 8-year horizon), safety profile and resource limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; however the description adds meaning beyond the schema by specifying the 5-field constraint on the expression, the ≤ 50 cap on count, and that the timezone is IANA and DST-aware. It stops short of restating the exclusive-'after' semantics, hence 4.
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 ('Lists the next N run times of a 5-field cron expression') with scope qualifiers (≤ 50, after an instant, IANA time zone). It explicitly names the sibling it is not for (cron-explain), so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Cuándo / When' clause gives the exact condition (a date, time-zone or calendar result that must be exact: offsets, DST, month ends, leap years) and the 'No para / Not for' clause routes validation requests to cron-explain. Both when-to-use and the alternative are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
csp-parseLeer Content-Security-PolicyARead-onlyIdempotentInspect
Analiza Content-Security-Policy en directivas y señala configuraciones riesgosas (unsafe-inline, comodines…). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar Content-Type en tipo, subtipo, sufijo (content-type-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a Content-Security-Policy header into directives and source lists, and flags risky settings (unsafe-inline, unsafe-eval, wildcard sources, missing default-src/object-src/base-uri). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| policy | Yes | CSP header value (string; required; up to 16384 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| warnings | No | |
| directives | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds concrete value beyond them: determinism (same input, same output) and hard limits (64 KB JSON, 1 s per call, 1 MB result), which an agent needs when deciding whether to call it on a large policy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the definition is bilingual and duplicates the same text in ES and EN, and the 'Cuándo' sentence carries clause clutter (IP ranges, agent-readiness files) irrelevant to CSP parsing. Several sentences do not earn their 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, rich annotations, and a single fully documented parameter, an agent has everything needed to call it correctly, and the limits/determinism note fills the remaining behavioral gap. Only the non-discriminating usage clause keeps it from 5.
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 one parameter at 100% schema description coverage, including an example CSP string and a maxLength, so the schema does the heavy lifting. The description adds no syntax or formatting guidance for the policy string beyond what the schema and example already provide; 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 and resource: parses a CSP header into directives and source lists and flags named risk patterns (unsafe-inline, unsafe-eval, wildcard sources, missing default-src/object-src/base-uri). This is directly distinguishable from content-type-parse, which the description also names.
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 'No para' clause explicitly routes away from content-type-parse, which is a real exclusion. However, the positive 'Cuándo' clause is generic boilerplate (URLs, tokens, versions, IP ranges, HTML/Markdown, agent files) that does not discriminate among the many sibling parsers like http-headers-parse or cache-control-parse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
csv-buildJSON a CSVARead-onlyIdempotentInspect
Convierte un arreglo de objetos en CSV (RFC 4180); columnas = unión de claves; puede neutralizar fórmulas de hoja de cálculo. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir CSV (csv-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts an array of objects (or arrays) to RFC 4180 CSV; columns are the union of keys in first-seen order, nested values are JSON-encoded, and spreadsheet formula prefixes can be neutralized. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing RFC 4180 CSV (csv-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Rows (array; required). | |
| columns | No | Explicit column order (array of string; optional; up to 1000 items). | |
| delimiter | No | Delimiter (optional; one of: ,, ;, , |; default ","). | , |
| line_ending | No | Line ending (optional; one of: , ; default "\n"). | |
| escape_formulas | No | Prefix cells starting with = + - @ with ' (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| csv | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint/openWorldHint, so the safety profile is covered; the description still adds real value with concrete limits (64 KB input, 1 s per call, 1 MB output), determinism, and the absence of network or stored state. It stops short of describing error conditions (e.g., what happens when the 64 KB or 1 s limit is exceeded), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and each section (purpose, when, not-for, side effects, determinism, limits) earns its place. The full Spanish/English duplication roughly doubles the length for identical information, which is a real cost even if it serves bilingual matching.
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; the description covers what an agent still needs — scope, the sibling alternative, side effects, determinism, size/time limits, and the formula-escaping behavior. 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 the baseline is 3, but the description genuinely adds meaning beyond the schema: columns default to the union of keys in first-seen order, nested values are JSON-encoded, and escape_formulas prefixes cells starting with = + - @. Those are behaviors the schema's per-property text does not state.
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 clause names a specific verb and resource ("Convierte un arreglo de objetos en CSV (RFC 4180)") plus the exact column-derivation rule. The EN restatement adds that arrays are also accepted, nested values are JSON-encoded, and formula prefixes can be neutralized, so the agent knows precisely what transformation is performed rather than a generic "convert".
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?
"Cuándo:" enumerates the situations this tool serves (transform, compare, or check structured data exactly), and "No para:" names the counterpart explicitly: parsing CSV belongs to csv-parse. That is an explicit when/when-not plus a named alternative, leaving nothing for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
csv-parseCSV a JSONARead-onlyIdempotentInspect
Convierte CSV (RFC 4180) en un arreglo de objetos usando la fila de encabezado; infiere números y booleanos opcionalmente. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir un arreglo de objetos en CSV (csv-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses RFC 4180 CSV (quoted fields, escaped quotes, CRLF, BOM) with a chosen delimiter into an array of objects using the header row, or arrays of strings; optional number/boolean inference. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: converting an array of objects (csv-build). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | CSV text (string; required). | |
| header | No | First row is a header (boolean; optional; default true). | |
| delimiter | No | Delimiter (optional; one of: ,, ;, , |; default ","). | , |
| infer_types | No | Convert numbers, booleans, empty→null (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
| rows | No | |
| columns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld=false and non-destructive, but the description adds determinism, absence of network/stored state, and concrete limits (1 s per call, 1 MB result). One inconsistency holds it below 5: it states a 64 KB input limit while the schema's csv field allows maxLength 1048576, leaving the agent unsure which ceiling actually applies.
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 core operation, then when/not-for, then side effects and limits – a sensible order. It loses a point for duplication: the bilingual ES/EN blocks restate the same content, and the EN section even ends with a self-referential pointer to inputSchema.description.
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 description still covers operation, exclusions, purity, determinism and resource limits. For a 4-parameter read-only parser, nothing an agent needs in order 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 3 is the floor, and the description earns more by explaining the header-row/array-of-strings branch (which maps to header=false) and that inference covers numbers and booleans plus empty→null. It does not cover the delimiter enum values, but the schema already enumerates them explicitly.
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: parses RFC 4180 CSV into an array of objects using the header row (or arrays of strings), with optional type inference and a chosen delimiter. The Spanish and EN blocks both name the inverse operation sibling csv-build, so the agent can distinguish them 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?
Explicit 'Cuándo' clause scopes it to transforming/comparing/checking structured data exactly, and 'No para: convertir un arreglo de objetos en CSV (csv-build)' names the alternative and the condition that selects it. Both the positive trigger and the exclusion are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currency-formatFormatear moneda por paísARead-onlyIdempotentInspect
Formatea un monto en cualquier moneda ISO 4217 según el idioma/país (símbolo, código o nombre), con sus decimales estándar. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: formatear un valor en pesos colombianos (co-cop-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats an amount in any ISO 4217 currency for a locale via Intl (symbol, narrow symbol, code or name), using the currency's standard minor units unless overridden, and accounting style for negatives. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: formatting an amount as Colombian pesos the way it is written in Colombia (co-cop-format). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount (number; required; min -1000000000000000; max 1000000000000000). | |
| locale | No | BCP 47 locale (string; optional; default "en-US"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en-US |
| display | No | Currency display (optional; one of: symbol, narrowSymbol, code, name; default "symbol"). | symbol |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
| decimals | No | Override decimals (integer; optional; min 0; max 6). | |
| accounting | No | Parentheses for negatives (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| formatted | No | |
| minor_units | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing determinism ('la misma entrada da la misma salida') and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result), which annotations cannot express. The 'solo lectura, sin red, sin estado guardado' clause largely restates readOnlyHint and openWorldHint=false, so part of the sentence is redundant rather than additive.
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 core purpose, then cleanly segmented into Cuándo / No para / Efectos / Determinista / Límites, so an agent can scan it fast. The full ES and EN duplication inflates length noticeably for a tool whose schema is already self-documenting.
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 documented in the schema, an output schema exists so return values need no prose, and the description still covers the decision criteria, safety profile and hard limits. Nothing an agent needs to invoke this 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 adds real meaning beyond the schema: it explains that decimals override the currency's standard minor units and that accounting renders negatives in parentheses. It does not clarify locale fallback or currency-case handling, which the schema only encodes as a regex.
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 ('Formatea un monto en cualquier moneda ISO 4217') plus the locale-driven output variants (símbolo, código o nombre) and standard minor units. It explicitly names the sibling it is not (co-cop-format), so an agent can distinguish it from co-cop-parse, currency-info, number-format-locale and es-number-parse 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?
Uses explicit 'Cuándo' (money/tax/financial-math results needing exact, reproducible rounding and cents) and 'No para' with the named alternative co-cop-format. Both the inclusion and exclusion conditions are given, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currency-infoDatos de moneda (ISO 4217)ARead-onlyIdempotentInspect
Devuelve los datos de una moneda ISO 4217 (decimales, símbolo y nombre en inglés y español). Sin tasas de cambio. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: formatear un monto en cualquier moneda ISO 4217 según el idioma/país (currency-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns facts about an ISO 4217 currency from the runtime's CLDR data: display decimals (CLDR may differ from ISO, e.g. COP shows 0), symbol and narrow symbol in a locale, and localized names in English and Spanish. No exchange rates. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | BCP 47 locale (string; optional; default "en-US"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en-US |
| currency | Yes | ISO 4217 code (string; required; pattern ^[A-Za-z]{3}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| known | No | |
| symbol | No | |
| name_en | No | |
| name_es | No | |
| minor_units | No | |
| narrow_symbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered; the description's 'solo lectura, sin red, sin estado guardado' largely restates them. It does earn its keep with genuinely new facts: determinism, hard limits (64 KB input, 1 s, 1 MB result) and the CLDR-vs-ISO caveat (COP shows 0 decimals), which affects rounding 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?
Front-loaded with the core statement, then clearly labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites), which is easy to scan. It loses a point for the bilingual duplication and the awkward meta-reference to 'inputSchema.description' instead of closing the English sentence in 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 need not describe return values, and everything else an agent needs is covered: what the tool returns, when to use it, the alternative, side effects, determinism and operational limits. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description goes past it by explaining that the symbol/narrow symbol is locale-dependent while names are fixed in English and Spanish, which clarifies the scope of the optional locale parameter. It still leaves the locale default/pattern and the code pattern to the schema, so not a 5.
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 ('Devuelve los datos de una moneda ISO 4217') and enumerates exactly what is returned: decimales, símbolo y nombre en inglés y español, plus an explicit exclusion ('Sin tasas de cambio'). It also names the distinct sibling it is not (currency-format), so an agent can separate the two 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?
Uses explicit 'Cuándo:' and 'No para:' framing: use it when money/tax/financial math must be exact and reproducible, and do not use it for locale/país amount formatting (currency-format). Positive trigger and named alternative with the selecting condition are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cusip-validateValidar CUSIPARead-onlyIdempotentInspect
Valida un CUSIP de 9 caracteres con su dígito de control. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un IBAN (iban-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 9-character CUSIP (US/Canada security identifier) with its modulus-10 double-add-double check digit. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating an IBAN (iban-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| cusip | Yes | CUSIP (string; required; up to 12 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| issue | No | |
| valid | No | |
| issuer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, and the description reinforces this with concrete operational facts the annotations cannot express: no network, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). That is genuine added context, though the 'solo lectura' restatement partially duplicates 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?
Well front-loaded and partitioned into labeled clauses (purpose, when, not-for, side effects, determinism, limits), so scanning is easy. It loses a point for shipping the entire content twice (ES and EN), which roughly doubles length without adding 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?
The tool is simple, has an output schema (so return values need no explanation), full annotation coverage and full parameter coverage. Purpose, triggering condition, exclusion, side-effect profile and resource limits are all present — 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?
Only one parameter and schema coverage is 100%, so the baseline is 3. The description does add meaning the schema lacks — that the value is exactly 9 characters and includes a check digit — but it also conflicts mildly with the schema's maxLength of 12, which an agent may notice; that ambiguity keeps it from a 4.
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 ('Valida un CUSIP de 9 caracteres con su dígito de control') and even names the algorithm (modulus-10 double-add-double), plus parenthetical scope '(US/Canada security identifier)'. It explicitly contrasts itself with iban-validate, so an agent can pick it out of a very large sibling list without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'Cuándo' (verify format and check digit offline before the identifier is used) and 'No para' clauses naming the alternative tool (iban-validate). Both the positive trigger and the exclusion are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
damerau-levenshteinDistancia de Damerau-LevenshteinARead-onlyIdempotentInspect
Calcula la distancia OSA (Levenshtein con transposiciones), útil para errores de tipeo. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular la distancia de edición de Levenshtein entre dos cadenas y similitud normalizada (levenshtein-distance). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the optimal string alignment distance: Levenshtein plus transposition of adjacent characters, useful for typo matching. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the edit distance (levenshtein-distance). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First string (string; required; up to 20000 chars). | |
| b | Yes | Second string (string; required; up to 20000 chars). | |
| case_sensitive | No | Case sensitive (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| distance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the description does not need to re-argue safety; it still adds real value with concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result) and an explicit determinism guarantee. Only return-shape/pagination-style detail is absent, and an output schema exists to cover 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?
Purpose, exclusions, side effects and limits are front-loaded and each sentence carries information. The full ES/EN duplication roughly doubles the length for no added meaning to an agent, which is the main structural inefficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description covers what it must: what is computed, which sibling to use instead, side effects, determinism, and hard limits. The only meaningful gap is the unmentioned case-sensitivity default, which affects result interpretation.
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 all three parameters (a, b, case_sensitive with default and maxLength), so the schema already carries the semantics. The description adds nothing parameter-specific – notably it never mentions that comparison is case-sensitive by default, which is the one non-obvious behavioral choice a caller might get wrong.
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 the exact algorithm ('distancia OSA: Levenshtein con transposiciones') and its use case (typo matching), then explicitly distinguishes itself from the levenshtein-distance sibling. An agent can tell this apart from levenshtein-distance, jaro-winkler or hamming-distance 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?
The 'No para / Not for' clause explicitly routes edit-distance and normalized-similarity work to levenshtein-distance, which is the key disambiguation among many string-comparison siblings. The positive 'When' clause is weaker – 'transform, compare or measure text exactly instead of approximated' is generic enough to apply to several siblings – so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dammDígito de control DammARead-onlyIdempotentInspect
Valida un número con el dígito de control Damm (el último dígito). Solo valida. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un número con el dígito de control Verhoeff (verhoeff). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a digit string with the Damm quasigroup checksum (detects all single-digit errors and adjacent transpositions); the last digit is the check digit. Validation only. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a digit string with the Verhoeff dihedral-group checksum (verhoeff). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Digits including the final check digit (string; required; pattern ^\d{2,100}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes well beyond them: it states no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). The error-detection claim is genuinely useful behavioral context an agent cannot get from 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?
Content is well front-loaded and organized under labeled headings (Cuándo / No para / Efectos secundarios / Determinista / Límites). However, the entire block is duplicated verbatim in Spanish and English, roughly doubling length for an agent that only needs one rendering, which dilutes conciseness.
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 validation tool with full annotation coverage and an output schema, nothing is missing: scope, exclusions, limits, determinism, and side effects are all stated. The description does not need to explain return values because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter already documents the pattern and that the check digit is included, so the baseline is 3. The description reinforces the critical semantic point — that the last digit is the check digit and validation is all-or-nothing — which slightly reduces the risk of an agent passing a body without its check digit.
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 ("Valida un número con el dígito de control Damm") and adds the algorithm's discriminating property (detects all single-digit errors and adjacent transpositions). It explicitly separates itself from the sibling checksum tool by name (verhoeff), so an agent can route correctly 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?
Provides explicit labeled guidance: "Cuándo: hay que verificar sin conexión..." gives the use condition, and "No para: validar un número con el dígito de control Verhoeff (verhoeff)" gives the exclusion plus the exact alternative tool. This is the when/when-not/alternative triad in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data-uri-buildConstruir data: URIARead-onlyIdempotentInspect
Construye una URI data: (RFC 2397) desde texto o bytes y un tipo MIME. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: analizar una URI data (data-uri-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds an RFC 2397 data: URI from text or base64 bytes and a MIME type, using base64 or percent-encoding. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: parsing an RFC 2397 data: URI into MIME type, parameters, base64 flag, byte size and content (data-uri-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Content (string; required). | |
| mime | No | MIME type (string; optional; default "text/plain"; up to 200 chars; pattern ^[\w.+-]+/[\w.+-]+(;\s*[\w.+-]+=[\w.+-]+)*$). | text/plain |
| base64 | No | Use base64 (boolean; optional; default true). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses determinism, absence of network/state, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result) that no structured field conveys. Annotations already cover read-only/idempotent, and the description adds operational constraints rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and clearly labeled (When / Not for / Side effects / Deterministic / Limits), but the entire body is duplicated in Spanish and English, roughly doubling length with no added information. A single-language version would be 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 4 parameters, full schema coverage, and an output schema present, the description covers everything an agent needs: what it produces, when to choose it over the sibling, safety profile, determinism, and size/time limits.
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. The description adds only light semantics over the schema — 'text or base64 bytes' maps to input_encoding and 'base64 or percent-encoding' hints at the base64 flag — but gives no per-parameter 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 (builds), resource (an RFC 2397 data: URI) and inputs (text or base64 bytes plus a MIME type, base64 or percent-encoding). It explicitly names the inverse sibling (data-uri-parse), so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' clause (converting bytes/text to or from this encoding exactly, without guessing) and an explicit 'Not for' clause routing to data-uri-parse. The alternative and the condition that selects it are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data-uri-parseLeer data: URIARead-onlyIdempotentInspect
Analiza una URI data: en tipo MIME, parámetros, tamaño y contenido. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: construir una URI data (data-uri-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an RFC 2397 data: URI into MIME type, parameters, base64 flag, byte size and content (UTF-8 text when valid, otherwise base64). When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: building an RFC 2397 data: URI from text or base64 bytes and a MIME type, using base64 or percent-encoding (data-uri-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | data: URI (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mime | No | |
| text | No | |
| bytes | No | |
| base64 | No | |
| params | No | |
| base64_content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, no network, idempotent and non-destructive behavior, and the description adds useful operational context: no stored state, deterministic output, 1 s per call, and result-size limits. This is meaningful extra transparency beyond the annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well structured and front-loaded: purpose first, then when/not-for guidance, side effects, determinism and limits. However, the full Spanish and English versions duplicate the same information, making it longer than necessary for an agent to consume.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, high schema coverage and presence of an output schema, the description is nearly complete for correct use. The main gap is the apparent conflict between the described 64 KB input limit and the schema's much larger maxLength, which could leave an agent unsure which limit applies.
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%: the single required uri parameter has a type, example, description and maxLength, so the schema already carries most parameter semantics. The description does not add URI syntax detail, and its stated 64 KB input limit appears inconsistent with the schema's maxLength of 1,400,000, so it adds limited reliable 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 description names a specific verb and resource: parse an RFC 2397 data: URI into MIME type, parameters, base64 flag, byte size and content. It also explicitly distinguishes this from the sibling tool data-uri-build, so an agent can identify the correct 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?
It gives an explicit 'When' condition: bytes or text need exact conversion to or from this encoding. It also gives an explicit 'Not for' condition and names the alternative data-uri-build for constructing a data URI.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date-addSumar duración a una fechaARead-onlyIdempotentInspect
Suma o resta años, meses, semanas, días, horas, minutos y segundos a una fecha; ajusta fines de mes. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: sumar o restar días hábiles, saltando fines de semana y festivos dados (business-days-add). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds (or subtracts, with negatives) years, months, weeks, days, hours, minutes and seconds to a date-time. Calendar parts use local wall time in the zone and clamp month ends (Jan 31 + 1 month = Feb 28/29). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: adding or subtracting business days, skipping weekends and given holidays (business-days-add). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days (integer; optional; default 0; min -3650000; max 3650000). | |
| hours | No | Hours (number; optional; default 0; min -87600000; max 87600000). | |
| weeks | No | Weeks (integer; optional; default 0; min -520000; max 520000). | |
| years | No | Years (integer; optional; default 0; min -10000; max 10000). | |
| months | No | Months (integer; optional; default 0; min -120000; max 120000). | |
| minutes | No | Minutes (number; optional; default 0; min -5256000000; max 5256000000). | |
| seconds | No | Seconds (number; optional; default 0; min -320000000000; max 320000000000). | |
| datetime | Yes | ISO 8601 date-time (with Z/offset, or naive local time in `timezone`) or YYYY-MM-DD (string; required; up to 40 chars). | |
| timezone | No | IANA time zone, e.g. America/Bogota (default UTC) (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| utc | No | |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description reinforces with 'sin red, sin estado guardado' plus determinism and concrete limits (64 KB input, 1 s per call, 1 MB result). The semantic disclosure that calendar parts use local wall time in the zone and clamp month ends is genuinely additive. It stops short of output-shape detail, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The 'When / Not for / Side effects / Deterministic / Limits' labeling is well front-loaded and scannable, but the payload is duplicated in Spanish and English and ends with a dangling pointer ('[EN completo / full EN: inputSchema.description]') that adds no information. Roughly half the text is redundant.
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 9 parameters, a fully described schema, an output schema, and rich annotations, the description covers all that remains: exactness guarantees, month-end semantics, exclusions, and execution limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns more by explaining that negative values subtract, that calendar units operate on local wall time in `timezone`, and the Jan 31 + 1 month = Feb 28/29 clamping rule — behavior the schema's numeric bounds cannot convey.
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 (adds/subtracts) and resource (date-time) plus the exact unit families supported and the month-end clamping rule. It explicitly distinguishes itself from the sibling business-days-add, so an agent can differentiate 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?
Uses explicit 'When:' (offsets, DST, month ends, leap years) and 'Not for:' clauses that name the alternative tool (business-days-add) with the condition that selects it. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date-betweenDiferencia entre fechasARead-onlyIdempotentInspect
Calcula la diferencia entre dos fechas: desglose en años, meses y días y totales en semanas, días, horas, minutos y segundos. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: contar días hábiles entre dos fechas, excluyendo fines de semana configurables y festivos (business-days-between). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the difference between two dates or date-times: calendar breakdown (years, months, days) plus totals in weeks, days, hours, minutes and seconds; sign indicates order. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End (string; required; up to 40 chars). | |
| start | Yes | Start (string; required; up to 40 chars). | |
| timezone | No | IANA time zone, e.g. America/Bogota (default UTC) (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| sign | No | |
| total | No | |
| calendar | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description adds value beyond that: it states determinism (same input, same output) and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result). Those limits are not derivable from any structured field and directly affect whether an agent should call the tool with a large payload.
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?
Content is front-loaded: purpose first, then when, then exclusions, then side effects and limits. The only cost is duplication — the Spanish block and the English block repeat nearly the same statements, so the definition is roughly twice the necessary length for a bilingual audience.
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 only three flat, fully described parameters and an output schema covering return values, the description needs to carry little else. It still supplies the exactness rationale, the sibling exclusion, side effects, determinism and resource limits, leaving nothing an agent needs missing before 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 start, end and timezone are already documented with types, defaults and examples. The description adds one genuinely semantic detail beyond the schema — that the sign of the result indicates the order of the dates — which is real information an agent would otherwise have to infer.
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 ('Calcula la diferencia entre dos fechas') and immediately enumerates the output shape: calendar breakdown in years/months/days plus totals in weeks, days, hours, minutes and seconds. The note that 'sign indicates order' further pins down what the result means, so an agent can distinguish it from date-add, date-range or business-days-between 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 gives an explicit 'Cuándo' condition (results that must be exact: offsets, daylight saving, month ends, leap years) and an explicit 'No para' exclusion naming the sibling tool 'business-days-between' for working-day counts. Both the when and the when-not are stated, plus the alternative to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date-iso-weekSemana ISO de una fechaARead-onlyIdempotentInspect
Convierte una fecha a semana ISO 8601 (AAAA-Www-D) o una semana ISO a su rango de fechas. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: describir un año y mes (month-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a date to its ISO 8601 week date (YYYY-Www-D) or an ISO week (year + week) to its Monday-Sunday date range; also reports weeks in that ISO year. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: describing a year and month (month-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to convert (string; optional; up to 10 chars; format date). | |
| week | No | ISO week 1-53 (integer; optional; min 1; max 53). | |
| iso_year | No | ISO week-numbering year (integer; optional; min 1; max 9999). |
Output Schema
| Name | Required | Description |
|---|---|---|
| end | No | |
| iso | No | |
| week | No | |
| start | No | |
| weekday | No | |
| iso_year | No | |
| weeks_in_year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the restatement of 'no side effects' and 'deterministic' is largely redundant. However, the description adds genuinely new operational context not in annotations: 64 KB JSON input cap, 1 s per call, 1 MB result cap, and no stored state.
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, then When / Not for / Side effects / Limits in a scannable order; every clause carries information. It loses a point because the full text is duplicated in Spanish and English, roughly doubling length for a single-locale caller.
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. The description still covers modes, exclusions, determinism and runtime limits, which is everything an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it explains the two modes and implicitly which parameters pair (date alone vs. week + iso_year). It still does not state what happens if all three are supplied or omitted (all params are optional), leaving the combination rules partly implicit.
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 ('Convierte una fecha a semana ISO 8601 ... o una semana ISO a su rango de fechas') and even covers the third behavior (reports weeks in an ISO year). It explicitly names the sibling it is not for (month-info), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo/When' trigger (exact date, time-zone or calendar results with offsets, DST, month ends, leap years) and an explicit 'No para/Not for' exclusion pointing at month-info. Both the positive selection condition and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date-rangeFechas de un rangoARead-onlyIdempotentInspect
Lista fechas entre inicio y fin con paso en días, semanas o meses (máx. 1.000). Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: calcular la diferencia entre dos fechas (date-between). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists dates from start to end (inclusive) stepping by days, weeks or months (month steps clamp to month end), up to 1,000 dates, optionally skipping weekends. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing the difference between two dates or date-times (date-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End (string; required; up to 10 chars; format date). | |
| step | No | Step size (integer; optional; default 1; min 1; max 1000). | |
| unit | No | Step unit (optional; one of: day, week, month; default "day"). | day |
| start | Yes | Start (string; required; up to 10 chars; format date). | |
| skip_weekends | No | Skip Saturday and Sunday (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| dates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds value beyond them: determinism guarantee, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result) that no annotation encodes. It also discloses the subtle month-step clamping behavior, which is the kind of trait that would otherwise cause wrong calls.
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?
Content is front-loaded and the When/Not-for/Side-effects/Limits labels are scannable, but the payload is duplicated wholesale in Spanish and English and ends with a dangling artifact ('[EN completo / full EN: inputSchema.description]'). The redundancy costs tokens without adding 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; the description covers purpose, exclusions, determinism, side effects, limits, and the non-obvious clamping rule. Nothing an agent needs to invoke this 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; the description earns above that by clarifying semantics the schema only hints at, such as month steps clamping to month end and the 1,000-date ceiling interacting with step size. It does not, however, explain the skip_weekends interaction with step/unit or give format examples, so it stops short of 5.
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 ('Lists dates from start to end, inclusive') plus the scope qualifiers that matter: step unit, month-end clamping, 1,000-date cap, optional weekend skipping. It also names the sibling it is not (date-between), so an agent can distinguish it 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?
Explicit 'When' clause ties usage to exact calendar/time-zone results (DST, leap years, offsets, month ends), and an explicit 'Not for' clause routes difference computations to date-between. Both the use case and the exclusion are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
date-relativeTiempo relativo en palabrasARead-onlyIdempotentInspect
Describe el tiempo entre dos instantes como frase localizada ("en 3 días", "hace 2 horas"). Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: formatear una fecha/hora en una zona e idioma con estilos Intl o un patrón (datetime-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Describes the time between an instant and a reference instant as a localized phrase via Intl.RelativeTimeFormat ("in 3 days", "hace 2 horas"), choosing the largest sensible unit. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: formatting an instant in a time zone and locale, either with Intl styles (datetime-format). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | BCP 47 locale (string; optional; default "en"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en |
| numeric | No | auto allows "yesterday"/"ayer" (optional; one of: always, auto; default "always"). | always |
| datetime | Yes | Target instant (string; required; up to 40 chars). | |
| reference | Yes | Reference instant ("now") (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| value | No | any JSON value |
| phrase | No | |
| seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so restating "sin red, sin estado guardado, determinista" earns little credit. The description does add genuine new behavior: concrete limits (64 KB input, 1 s per call, 1 MB result) and the largest-sensible-unit selection rule, which annotations 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?
Front-loaded with the core action and cleanly separated by labeled clauses (Cuándo / No para / Efectos / Límites), so an agent can skim it. It loses a point for the ES/EN duplication plus a meta-pointer to inputSchema.description, which adds length without adding 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?
The tool has an output schema and full param coverage, and the description still covers purpose, selection conditions, the excluded alternative, side effects, determinism and resource limits. 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 description coverage is 100%, so locale, numeric, datetime and reference are already fully documented in the schema, including the numeric enum and defaults. The description only adds that the output is a localized phrase whose unit is auto-chosen; it does not clarify reference-vs-now semantics or accepted datetime formats beyond the schema examples. 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 precise verb+resource: describes the time between two instants as a localized phrase via Intl.RelativeTimeFormat, and states the unit-selection rule ("choosing the largest sensible unit"). It explicitly distinguishes itself from the nearest sibling (datetime-format), so an agent can pick between them 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?
Has an explicit "Cuándo/When" clause scoped to exactness-sensitive date, time-zone and calendar results (offsets, DST, month ends, leap years) and an explicit "No para/Not for" clause pointing at datetime-format for Intl styles and patterns. Both the positive condition and the exclusion are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datetime-formatFormatear fecha y horaARead-onlyIdempotentInspect
Formatea una fecha/hora en una zona e idioma con estilos Intl o un patrón (YYYY MM DD HH mm…). Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: analizar una fecha/hora ISO 8601 o RFC 2822 en sus partes (datetime-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats an instant in a time zone and locale, either with Intl styles (full/long/medium/short) or a pattern (YYYY MM DD HH mm ss SSS MMMM ddd dddd hh A Z; [text] for literals). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: parsing an ISO 8601 or RFC 2822 date-time into its parts (datetime-parse). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Intl style (ignored when pattern is set) (optional; one of: full, long, medium, short; default "long"). | long |
| locale | No | BCP 47 locale (string; optional; default "en-US"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en-US |
| pattern | No | Pattern (string; optional; up to 200 chars). | |
| datetime | Yes | ISO 8601 date-time (with Z/offset, or naive local time in `timezone`) or YYYY-MM-DD (string; required; up to 40 chars). | |
| timezone | No | IANA time zone, e.g. America/Bogota (default UTC) (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful operational context beyond that, notably determinism and explicit limits (64 KB input, 1 s per call, 1 MB result), though it also repeats the no-side-effects point already 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?
The content is front-loaded and well-structured into purpose, when, not-for, side effects, determinism, and limits. It is somewhat longer than necessary because the Spanish and English versions duplicate the same 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 annotations, full schema coverage, and an output schema already present, the description supplies everything needed: purpose, routing guidance, determinism, and resource limits. Return-value explanation is unnecessary because an output schema exists.
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. The description still adds value by explaining the pattern token vocabulary and bracketed literals, which the schema only describes generically as an optional pattern string.
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: formatting an instant in a time zone and locale using Intl styles or a pattern. It explicitly distinguishes itself from the parsing sibling datetime-parse, so an agent can route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions (exact date, time-zone, or calendar results involving offsets, DST, month ends, leap years) and explicitly excludes parsing into parts, naming datetime-parse as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
datetime-parseLeer fecha y horaARead-onlyIdempotentInspect
Analiza una fecha/hora ISO 8601 o RFC 2822 y devuelve ISO UTC, Unix, hora local con desfase, día de la semana, semana ISO y trimestre. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: formatear una fecha/hora en una zona e idioma con estilos Intl o un patrón (datetime-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an ISO 8601 or RFC 2822 date-time (or YYYY-MM-DD) and returns UTC ISO, Unix seconds/ms, local wall time in a time zone with offset, weekday, day of year, ISO week, quarter and leap-year flag. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | ISO 8601 date-time (with Z/offset, or naive local time in `timezone`) or YYYY-MM-DD (string; required; up to 40 chars). | |
| timezone | No | Zone for naive input and for local output (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| utc | No | |
| unix | No | |
| local | No | |
| offset | No | |
| quarter | No | |
| unix_ms | No | |
| weekday | No | |
| iso_week | No | |
| timezone | No | |
| leap_year | No | |
| day_of_year | No | |
| iso_week_year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real context beyond them: explicit 'no side effects / no network / no stored state', determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result), which are operationally useful for batching decisions.
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 purpose, then when, when-not, effects and limits in a predictable order — no filler sentences. It is somewhat verbose for a two-parameter tool, and the full English text is duplicated in both the description and inputSchema.description, which is redundant but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter coverage, the description covers everything an agent needs to decide and call correctly. The only minor gap is not stating the failure behavior for unparseable or out-of-range inputs, which matters for a parser that will reject malformed strings.
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 both parameters carry their own descriptions plus a default for timezone, so the schema does the heavy lifting. The description only re-states the accepted formats and implies the naive-input/timezone relationship; it adds no syntax or edge-case detail (e.g., how conflicting input offset vs. timezone argument is resolved) 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) plus accepted input formats (ISO 8601 / RFC 2822 / YYYY-MM-DD) and enumerates the derived fields returned (UTC, Unix, local with offset, ISO week, quarter). It also names the adjacent sibling datetime-format as out of scope, so an agent can distinguish the two 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?
Explicit 'Cuándo' clause defines the trigger condition (exactness in offsets, DST, month ends, leap years) and an explicit 'No para' clause routes formatting-with-locale/Intl-pattern work to datetime-format. Both the when and the when-not are stated, with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decimal-to-fractionDecimal a fracciónARead-onlyIdempotentInspect
Encuentra la fracción más cercana a un decimal con denominador acotado (fracciones continuas). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: suma, resta, multiplica o dividir dos fracciones exactas y devolver el resultado simplificado (fraction-arithmetic). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds the closest fraction to a decimal with a denominator ≤ max_denominator using continued fractions (e.g. 3.14159 → 355/113). When: a numeric result has to be exact or reproducible instead of estimated. Not for: adds,ing subtracts, multiplies or divides two exact fractions (fraction-arithmetic). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Decimal value (number; required; min -1000000000000000; max 1000000000000000). | |
| max_denominator | No | Maximum denominator (integer; optional; default 1000; min 1; max 1000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| fraction | No | |
| numerator | No | |
| denominator | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely new behavior beyond the annotations: determinism (same input, same output) and hard limits (64 KB JSON input, 1 s per call, 1 MB result). The side-effect sentence partly restates readOnlyHint=true and openWorldHint=false, but the determinism and limit disclosures are real value-add for an agent planning a call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each sentence carries content, but the entire description is duplicated in Spanish and English, roughly doubling length without adding information. The Spanish 'No para' clause even contains a garbled translation artifact ("adds,ing subtracts"), which adds noise.
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, annotations covering safety and idempotency, and 100% schema coverage, the remaining gaps an agent would care about are covered: when to use, when not to, determinism, and execution limits. Nothing needed for a correct call 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 baseline is 3, but the description adds semantics the schema cannot: the denominator bound is what defines the approximation ("denominador acotado") and the example shows the returned form 355/113 under the default bound. It does not name the parameters literally, but the meaning of max_denominator is clarified.
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 ("Encuentra la fracción más cercana a un decimal"), names the algorithm (continued fractions) and gives a concrete example (3.14159 → 355/113). It also explicitly distinguishes itself from the sibling fraction-arithmetic, so an agent can route 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?
Uses an explicit Cuándo / No para structure: use it when a numeric result must be exact or reproducible rather than estimated, and route to fraction-arithmetic for operations between two fractions. This is exactly the when/when-not/alternative pattern, with only the fraction-simplify sibling left unmentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dedupe-similarQuitar textos casi duplicadosARead-onlyIdempotentInspect
Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: eliminar líneas duplicadas conservando la primera aparición y el orden (lines-dedupe). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Groups near-duplicate strings (Jaccard similarity of character 3-grams ≥ threshold, accent- and case-insensitive) among up to 2,000 items, keeping the first of each group. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Strings (array of string; required; at least 1 items; up to 2000 items). | |
| threshold | No | Similarity threshold 0-1 (number; optional; default 0.8; min 0; max 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | No | |
| unique | No | |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds real context: no side effects, no network, no stored state, full determinism, and hard limits (64 KB JSON input, 1 s per call, 1 MB result) that affect how an agent should batch calls. It also discloses the accent- and case-insensitive normalization that changes matching 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?
Well front-loaded with labeled When / Not for / Side effects / Deterministic / Limits sections, but the same content is presented in Spanish and English and then closed with a dangling pointer ('EN completo / full EN: inputSchema.description') that duplicates the schema description verbatim. That redundancy costs space without adding 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 two-parameter, non-destructive utility with an output schema, the description covers purpose, alternatives, side effects, determinism, and operational limits — everything an agent needs to invoke it correctly and size its input.
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 beyond the schema by explaining what the threshold actually measures (Jaccard over character trigrams, accent- and case-insensitive) and that the first item of each group is preserved. It does not explain item-length tradeoffs or how equal-similarity ties are broken.
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 and resource: groups near-duplicate strings using Jaccard similarity of character 3-grams above a threshold, keeping the first of each group, over up to 2,000 items. It also names the sibling it is not (lines-dedupe for exact duplicate lines preserving order), so an agent can discriminate 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?
Explicit 'When:' clause scopes it to exact, repeatable bookkeeping steps (tokens, costs, retries, chunking, ranking, JSON clean-up) and an explicit 'No para / Not for:' clause routes exact-line deduplication to lines-dedupe. Both the selection and the exclusion condition are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dice-similaritySimilitud de Sørensen-DiceARead-onlyIdempotentInspect
Calcula el coeficiente de Sørensen-Dice sobre bigramas de caracteres (0-1). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular la similitud Jaro y Jaro-Winkler (jaro-winkler). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the sørensen-Dice coefficient over character bigrams (0-1); robust for fuzzy matching of phrases and titles. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the Jaro and Jaro-Winkler similarity (jaro-winkler). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First string (string; required; up to 20000 chars). | |
| b | Yes | Second string (string; required; up to 20000 chars). | |
| case_sensitive | No | Case sensitive (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| similarity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds concrete operational context beyond the annotations: no network access, no stored state, determinism, and hard limits of 64 KB JSON input, 1 s per call and 1 MB result — none of which appear in the annotations. The read-only and deterministic claims partly restate readOnlyHint/idempotentHint, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition, then labeled sections for when/not-for/side effects/determinism/limits, so an agent can scan it quickly. The full Spanish and English duplication makes it roughly twice as long as necessary for a single reader.
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 the description covers the algorithm basis, exclusion, side effects and resource limits. The one remaining gap is guidance on how this metric compares to other string-similarity siblings beyond jaro-winkler, which matters given the dense sibling set.
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 a, b and case_sensitive are already documented with types, maxLength and default, making 3 the baseline. The description adds only the algorithmic framing (character bigrams) that contextualizes what a and b are compared on, but gives no per-parameter guidance 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 algorithm and resource — the Sørensen-Dice coefficient over character bigrams, with an explicit 0-1 output range — and explicitly names the sibling (jaro-winkler) that computes a different similarity. An agent can distinguish this from jaro-winkler or levenshtein-distance 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?
Provides an explicit 'Cuándo' and a 'No para' that names the alternative jaro-winkler, which is exactly the routing signal an agent needs. The positive 'when' clause, however, is generic ('transformar, comparar o medir un texto') and does not distinguish this from other similarity siblings such as levenshtein-distance, damerau-levenshtein, soundex or vector-similarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff-linesDiferencias por líneaARead-onlyIdempotentInspect
Calcula las diferencias por líneas entre dos textos en formato unificado, con conteo de líneas añadidas y eliminadas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular un JSON Patch (json-diff-patch). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the line-based diff of two texts using longest common subsequence; returns a unified diff with configurable context and counts of added/removed lines. Changed-region product capped at 4M lines². When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing an RFC 6902 JSON Patch that transforms document a into document b (json-diff-patch). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Original text (string; required). | |
| b | Yes | New text (string; required). | |
| context | No | Context lines (integer; optional; default 3; min 0; max 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
| added | No | |
| removed | No | |
| unified | No | |
| identical | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description still adds real context: determinism, no network, no stored state, a 1 s per-call timeout, a 1 MB result cap and the 4M lines² changed-region cap. One flaw: it advertises "JSON input up to 64 KB" while the schema allows 500,000 characters per string, so the stated limit is internally inconsistent with the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core English sentences are well front-loaded and each earns its place, but the full Spanish mirror plus the meta-leak "[EN completo / full EN: inputSchema.description]" roughly doubles the length without adding information. The two language blocks are also not perfectly parallel (4M lines² cap appears only in EN).
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 it still summarizes the unified-diff + counts shape; limits and determinism round it out. The only gap is the size-limit mismatch against the schema's maxLength, which could mislead an agent about how much text it may submit.
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; the description goes slightly beyond by explaining that the diff is a unified diff with *configurable context*, which gives meaning to the `context` parameter that the schema's terse "Context lines" does not. It does not clarify that `a` is the original and `b` the new side 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?
States a specific verb+resource (line-based diff of two texts), names the algorithm (LCS), and specifies the output shape (unified diff with context and added/removed counts). It also explicitly distinguishes itself from the nearest sibling, json-diff-patch, so an agent can choose 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?
Contains explicit "When" (exact transform/compare/measure, not approximation) and "Not for" clauses that name the alternative tool (json-diff-patch) and the condition that selects it. This is the strongest form of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discount-calculateCalcular descuentosARead-onlyIdempotentInspect
Aplica uno o varios descuentos (porcentaje o fijo), compuestos o sumados, y opcionalmente el impuesto después. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular utilidad, margen bruto % (margin-markup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Applies one or more percentage and fixed discounts to a price, either compounded in order or summed, optionally adding tax afterwards; reports effective discount %. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing profit, gross margin % (margin-markup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | How to combine (optional; one of: compound, additive; default "compound"). | compound |
| price | Yes | Original price (number; required; min 0; max 1000000000000000). | |
| decimals | No | Decimals (integer; optional; default 2; min 0; max 6). | |
| discounts | Yes | Discounts (array of object; required; at least 1 items; up to 20 items). | |
| tax_percent | No | Tax % applied after discounts (number; optional; default 0; min 0; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| savings | No | |
| final_price | No | |
| price_with_tax | No | |
| effective_discount_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so 'no side effects, read-only, no network, no stored state' largely restates structured data. However, the description adds genuinely new behavioral facts not in annotations: hard limits of 64 KB input, 1 s per call, 1 MB result, which matter for an agent planning a large discount array. Determinism claim is redundant with idempotentHint but harmless.
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 purpose and organized under labeled sections (When / Not for / Side effects / Limits), each carrying distinct information. The full ES+EN duplication doubles the length without adding information, which is the main cost; the individual sentences themselves are 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?
An output schema exists so return values need no prose. With usage conditions, exclusions, side-effect profile, determinism and execution limits all covered, an agent has everything needed to decide to call it and to size its input correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning the schema lacks: the mode values translate to 'compounded in order' vs 'summed', revealing that ordering matters, and it clarifies tax is applied after discounts and that the output reports the effective discount %. It does not, however, clarify how a mixed percent/amount discount object is resolved.
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 (applies one or more percentage/fixed discounts), the two combination modes, that tax is applied afterwards, and that it reports an effective discount %. Explicitly names the sibling it is not for (margin-markup), so the agent can distinguish it 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?
Has explicit 'When' (money/tax/financial math needing exact, reproducible results with rounding and cents) and 'No para / Not for' (profit, gross margin % → margin-markup) clauses in both languages. The condition that selects the alternative tool is spelled out, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain-syntax-validateValidar sintaxis de dominioARead-onlyIdempotentInspect
Verifica la sintaxis de un nombre de dominio (etiquetas, longitudes, TLD), sin consultar DNS. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: verificar solo la SINTAXIS de un correo (email-syntax-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks hostname syntax (RFC 1035/1123 labels, total ≤ 253, label ≤ 63, alphabetic or xn-- TLD), detects IDN/punycode labels and IP literals. Does not query DNS and does not use the Public Suffix List. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name (string; required; up to 300 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| idn | No | |
| valid | No | |
| labels | No | |
| reasons | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false and idempotentHint, yet the description still contributes genuinely new facts: no DNS query, no Public Suffix List, and hard limits (64 KB input, 1 s, 1 MB result). Determinism restates idempotentHint somewhat, which is the only redundancy.
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 purpose then structured into labeled blocks (Cuándo / No para / Efectos / Límites) that scan quickly. It loses a point for restating the full EN text that also lives in inputSchema.description, creating near-duplicate 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 no explanation, and the description covers the remaining gaps: validation rules, offline behavior, determinism and size/time limits. Nothing needed to call a single-parameter validator 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?
Only one parameter at 100% schema coverage, so the baseline is 3; the description nevertheless adds semantic constraints beyond the schema — total ≤ 253, label ≤ 63, alphabetic or xn-- TLD, IDN/punycode and IP-literal detection — which tell the agent what input will actually pass.
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 ("Verifica la sintaxis de un nombre de dominio") and immediately scopes it ("etiquetas, longitudes, TLD, sin consultar DNS"). The EN paragraph adds the exact RFC basis (1035/1123) and thresholds, so an agent can distinguish it from URL/IP/email validators 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?
Uses explicit "Cuándo" / "No para" blocks and names the alternative that must be used instead for email syntax (email-syntax-validate). The exclusion is unambiguous, which is the rare case where alternatives are stated outright rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dot-checkRevisar sintaxis Graphviz DOTARead-onlyIdempotentInspect
Revisa de forma básica un texto DOT de Graphviz sin renderizarlo: encabezado ([strict] graph|digraph [id] {), llaves/corchetes y comillas balanceados, -> solo en digraph y -- solo en graph, y atributos clave=valor. Cuenta nodos y aristas. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: revisar de forma básica un diagrama Mermaid sin renderizarlo (mermaid-check). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Sanity-checks Graphviz DOT text without rendering: header ([strict] graph|digraph [id] {), balanced braces/brackets and quotes, -> only in digraphs and -- only in graphs, and attribute lists of key=value. Counts nodes and edges. Not a full parser. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | DOT source (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| edges | No | |
| nodes | No | |
| valid | No | |
| issues | No | |
| directed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent/destructive, yet the description still earns credit by adding operational limits absent from the annotations: 64 KB JSON input, 1 s per call, 1 MB result, and the scope caveat "Not a full parser". The side-effects and determinism sentences largely restate the annotations, but the limits and the partial-parser caveat are genuine added 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?
The check list is dense and front-loaded, and the ES/EN split is sensible. But the "Cuándo" clause is wasted — worse, wrong — length, and the EN block near-verbatim duplicates the inputSchema description, so part of the text does not earn its place at the call site.
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?
Annotations plus an output schema mean safety and return shape need no prose coverage, and the check list makes the contract clear. The definition is still missing an accurate statement of when to reach for it (the 'when' sentence points at URLs/HTTP headers instead), and the 64 KB vs 256 KB mismatch leaves the input-size boundary ambiguous.
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 required parameter with 100% schema description coverage and a worked example, so the schema already does the work and baseline 3 applies. The description adds what is inspected in the text but nothing about the parameter itself, and the stated "64 KB" input cap conflicts with the schema's `maxLength: 262144` (256 KB), which could mislead on truncation 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?
States a specific verb+resource ("Revisa ... un texto DOT de Graphviz sin renderizarlo") and enumerates exactly what it checks: header form, balanced braces/brackets/quotes, `->` only in digraphs, `--` only in graphs, key=value attributes, plus node/edge counts. It explicitly names the sibling it is not ("No para: ... Mermaid ... (mermaid-check)"), so an agent can separate dot-check from mermaid-check 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 exclusion clause is precise and routes to the right sibling (mermaid-check). However the "Cuándo" sentence is off-topic boilerplate carried over from another tool ("una URL, una cabecera HTTP, un token, ... un documento HTML o Markdown") and does not describe a DOT-checking scenario at all, which actively misleads selection. Correct exclusion plus an actively wrong 'when' clause leaves the agent to infer the real usage from the purpose sentence alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dotenv-parseLeer archivo .envARead-onlyIdempotentInspect
Analiza texto .env (CLAVE=valor, comillas, comentarios) en un objeto, sin expandir variables. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir un subconjunto seguro de YAML a JSON (yaml-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses dotenv text (KEY=value, export prefix, single/double quotes, \n escapes in double quotes, # comments) into an object. No variable expansion or execution. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing a safe YAML subset (yaml-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | .env content (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| values | No | any JSON value |
| invalid_lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/closed-world, but the description adds genuinely new behavior: no variable expansion or execution (a real semantic decision an agent must know), determinism, and explicit limits (64 KB input, 1 s per call, 1 MB result). This is substantive disclosure beyond the 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?
The opening sentence is well front-loaded, but the entire block is duplicated verbatim in Spanish and English, doubling length without adding information, and the generic 'Cuando: ... datos estructurados (JSON, CSV, YAML, XML, arreglos)' sentence is pure filler for a dotenv parser.
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 explanation is rightly omitted, and side-effect/determinism coverage is good. But for a simple parse tool the description spends its words on unrelated format boilerplate and states limits that disagree with the schema, leaving the agent with a plausible but incorrect picture of acceptable input size.
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 `text` parameter, so the baseline is 3, but the description actively introduces a conflicting constraint: it says 'JSON input up to 64 KB' while the schema declares maxLength 1048576 (1 MB). An agent sizing its input gets contradictory guidance, which is worse than silence.
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 states a specific verb and resource (parse .env text into an object) and enumerates supported syntax (KEY=value, export, quotes, escapes, comments) plus the key semantic (no variable expansion). It is distinguishable from yaml-parse. The score is held down by the 'When' clause, which talks about transforming JSON/CSV/YAML/XML/arrays — formats this tool does not handle — muddying an otherwise precise statement.
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 names a sibling to avoid (yaml-parse) and says 'no variable expansion', which is a real usage boundary. However the positive 'When' condition is boilerplate about structured data formats (JSON, CSV, YAML, XML) that has nothing to do with dotenv input, so the actual trigger for choosing this tool is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duration-formatFormatear segundos como duraciónARead-onlyIdempotentInspect
Formatea segundos como duración ISO 8601, texto compacto, reloj y palabras en inglés o español. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: analizar una duración ISO 8601 (duration-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats a number of seconds as an ISO 8601 duration (days and time only), a compact string (1d 2h 3m 4s), a clock (26:03:04) and words in English or Spanish. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: parsing an ISO 8601 duration (duration-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language for words (optional; one of: en, es; default "en"). | en |
| seconds | Yes | Seconds (number; required; min -1000000000000; max 1000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso | No | |
| clock | No | |
| words | No | |
| compact | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered; the description's 'no network access, no stored state' and 'deterministic' largely restate them. It does add genuinely new behavioral data — the per-call limits (64 KB JSON input, 1 s per call, 1 MB result) and the precise output formats — which the annotations do not 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?
The labeled sections (Cuándo / No para / Efectos secundarios / Límites) are well front-loaded and scannable, but the entire content is duplicated verbatim in Spanish and English, roughly doubling length for zero additional information per reader.
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, and the description covers the remaining gaps an agent needs: the exact output formats, the routing alternative, determinism, and operational limits. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents 'seconds' (range, example) and 'lang' (enum, default). The description adds only the loose mapping that 'lang' governs the words output; it gives no guidance on negative seconds or the 10^12 bound, 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 and resource (formats seconds as a duration) and enumerates all four output shapes — ISO 8601 days-and-time, compact '1d 2h 3m 4s', clock '26:03:04', and words in English or Spanish. It explicitly separates itself from the sibling duration-parse, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When:' trigger (exact date, time-zone or calendar results — offsets, DST, month ends, leap years) and an explicit 'Not for:' exclusion naming the alternative tool (duration-parse). This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duration-parseLeer duración ISO 8601ARead-onlyIdempotentInspect
Analiza una duración ISO 8601 (p. ej. P1Y2M3DT4H5M6S) en componentes y segundos totales. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: formatear segundos como duración ISO 8601, texto compacto, reloj y palabras en inglés o español (duration-format). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an ISO 8601 duration (e.g. P1Y2M3DT4H5M6S, PT90M, P2W) into components and total seconds (years = 365.2425 days and months = 30.436875 days, flagged as approximate). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: formatting a number of seconds as an ISO 8601 duration (duration-format). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| duration | Yes | ISO 8601 duration (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | No | |
| sign | No | |
| hours | No | |
| weeks | No | |
| years | No | |
| months | No | |
| minutes | No | |
| seconds | No | |
| approximate | No | |
| total_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by disclosing runtime limits (64 KB input, 1 s per call, 1 MB result), determinism, and the crucial approximation rule that years=365.2425 days and months=30.436875 days with a flag. The side-effects sentence largely restates readOnlyHint/openWorldHint=false, so a small part of the text is redundant with structured data.
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 purpose, then When/Not-for, then effects and limits — good ordering. It is somewhat long due to the bilingual duplication and the trailing "[EN completo / full EN: inputSchema.description]" pointer, which adds bulk without 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 single-parameter pure function with an output schema and full annotations, the description covers purpose, routing, determinism, limits, and the approximate-unit caveat. Nothing an agent needs in order 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?
With one parameter at 100% schema coverage (including maxLength and an example), the schema already carries the semantics, so the baseline applies. The description adds extra example formats (PT90M, P2W) and the Y/M conversion rule, but nothing about the parameter itself that 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 and resource ("Analiza/parses an ISO 8601 duration") plus what it returns (components and total seconds). It explicitly distinguishes itself from the sibling duration-format, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "Cuándo/When" clause names the concrete conditions (offsets, DST, month ends, leap years) and the "No para/Not for" clause routes formatting tasks to duration-format by name. Both the positive and negative selection criteria are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easter-sundayFecha de PascuaARead-onlyIdempotentInspect
Calcula el Domingo de Pascua occidental y ortodoxo y fechas relacionadas (Miércoles de Ceniza, Jueves y Viernes Santo, Pentecostés…). Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: listar los 18 festivos nacionales de Colombia de un año, aplicando la Ley Emiliani (co-holidays). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes Western (Gregorian computus) and Orthodox Easter Sunday for a year 1583-4099, plus related Western dates: Ash Wednesday, Palm Sunday, Holy Thursday, Good Friday, Ascension, Pentecost, Corpus Christi. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (integer; required; min 1583; max 4099). |
Output Schema
| Name | Required | Description |
|---|---|---|
| western | No | |
| orthodox | No | |
| ascension | No | |
| pentecost | No | |
| good_friday | No | |
| palm_sunday | No | |
| ash_wednesday | No | |
| holy_thursday | No | |
| corpus_christi | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, non-open-world, idempotent and non-destructive, yet the description still adds genuinely new context: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB output). The determinism sentence largely restates idempotentHint, which is why this is a 4 rather than 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?
Purpose is front-loaded and the when/not-for/side-effects/limits ordering is easy to scan. However, the description block contains a partial English restatement that duplicates the Spanish text already present, adding avoidable length.
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 one-parameter computed tool with an output schema and full annotations, the description covers scope, exclusions, side effects, determinism and operational limits. Nothing an agent needs in order 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?
There is a single parameter with 100% schema description coverage, including min 1583, max 4099 and an example, so the schema already carries the semantics. The description restates the year range but adds no new meaning such as behavior at boundaries, which fits the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific resource and computation ('Domingo de Pascua occidental y ortodoxo') plus the related dates it returns, so the agent knows exactly what is produced. It also explicitly rules out the closest sibling case (Colombian national holidays with Ley Emiliani), which is the one an agent could plausibly 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?
Provides an explicit 'Cuándo' trigger (exact date/calendar results) and an explicit 'No para' exclusion naming the sibling domain co-holidays. The when/when-not/alternative structure is fully present, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec-id-validateValidar cédula o RUC (Ecuador)ARead-onlyIdempotentInspect
Valida una cédula ecuatoriana (10 dígitos: provincia 01-24, tercer dígito 0-5, coeficientes 2-1-2-1… módulo 10) o un RUC de persona natural (cédula + establecimiento 001-999). Los RUC de sociedades o públicos se informan como no soportados. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un RUC peruano (pe-ruc-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an Ecuadorian cédula (10 digits: province 01-24, third digit 0-5, coefficients 2-1-2-1… mod 10) or a natural-person RUC (cédula + establishment 001-999). Company/public RUCs are reported as unsupported. Validation only. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cédula or RUC (digits; dashes allowed) (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| reason | No | |
| establishment | No | |
| province_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description correctly uses its space for what annotations cannot express: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). Only minor overlap with the read-only claim keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then cleanly sectioned via labeled markers (Cuándo, No para, Efectos secundarios, Límites). The added 'EN:' line restates content already present in the inputSchema description, which is mild redundancy rather than 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 one required parameter, full annotation coverage, an output schema, and no nesting, the description covers everything needed: input forms accepted, unsupported cases, side effects, determinism, and operational limits. Nothing an agent needs before calling 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% with a single documented 'id' parameter, so the baseline is 3. The description goes further by explaining what the input actually means — cédula form versus natural-person RUC with establishment suffix — which tells the agent what will and will not validate even though dashes are permitted.
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 ('Valida una cédula ecuatoriana... o un RUC de persona natural') with the exact validation rules (province 01-24, third digit 0-5, mod-10 coefficients, establishment 001-999) and explicitly rules out company/public RUCs. An agent can distinguish this from br-cpf-validate or mx-curp-validate 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?
Provides an explicit 'Cuándo' trigger (checking a user-supplied LatAm/Spanish ID offline before storing or using it) and an explicit 'No para' exclusion naming the sibling pe-ruc-validate. Both when-to-use and when-not-to-use are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email-syntax-validateValidar sintaxis de correoARead-onlyIdempotentInspect
Verifica solo la SINTAXIS de un correo (subconjunto práctico de RFC 5321/5322); no comprueba que el buzón exista. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: verificar la sintaxis de un nombre de dominio (domain-syntax-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks email address SYNTAX only (practical RFC 5321/5322 subset: local part ≤ 64, domain ≤ 253, labels, TLD); it cannot tell whether the mailbox exists. Returns normalized form and reasons. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address (string; required; up to 512 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reasons | No | |
| normalized | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, and the description adds value on top: no network, no stored state, deterministic same-input-same-output, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). It also discloses the return shape (normalized form plus reasons), which goes beyond the annotations. The only missed opportunity is saying more about the failure reasons emitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical scope statement is front-loaded, which is good, but a full sentence enumerating unrelated artifacts (URL, HTTP header, token, IP range, HTML/Markdown) earns no place in an email validator, and the schema description duplicates the entire English block. Roughly a third of the text is either irrelevant or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations covering the safety profile, the description supplies what's missing: scope boundaries, determinism, and explicit size/time limits. It is essentially complete for a single-parameter pure validator, losing a point only because the misdirecting 'When' list could lead an agent to call it on non-email input.
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 parameter, so baseline would be 3, but the description adds real semantics beyond the schema: the accepted RFC 5321/5322 practical subset, the 64-char local part and 253-char domain ceilings, and the fact that output is a normalized form. That is meaningfully more than the schema's 'Email address (string; required; up to 512 chars)'.
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 opening states a precise verb and resource plus its scope: 'Checks email address SYNTAX only (practical RFC 5321/5322 subset: local part ≤ 64, domain ≤ 253, labels, TLD); it cannot tell whether the mailbox exists.' That alone distinguishes it cleanly from siblings. However, the immediately following 'When:' clause lists URLs, HTTP headers, tokens, IP ranges, HTML/Markdown and agent files, which does not describe this tool's purpose at all and dilutes the otherwise sharp statement.
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 one genuinely useful routing rule: 'Not for: checking hostname syntax (domain-syntax-validate)', which names the exact sibling to use instead. But the positive 'When' guidance is boilerplate copied from another tool (URLs, tokens, HTML documents), so an agent reading it would learn nothing true about when to call this validator over, say, extract-emails or university-email-domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emvco-qr-parseLeer QR de pago EMVCo (Bre-B, Pix)ARead-onlyIdempotentInspect
Lee un payload QR EMVCo de comercio (TLV) en sus campos y plantillas, comprueba el CRC16 y los campos obligatorios, y rotula plantillas Pix y Bre-B (EASPBV Colombia). Solo formato; nunca confirma un pago. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: construir un BR Code Pix «copia e cola» (br-pix-brcode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an EMVCo merchant-presented QR payload (TLV) into its data objects and templates, checks the CRC16 and the mandatory fields, and labels Pix and Colombian EASPBV / Bre-B templates by their GUI. Format check only; it never confirms a payment. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | QR payload text (the string a reader decodes) (string; required; up to 512 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| crc | No | |
| note | No | |
| valid | No | |
| amount | No | |
| errors | No | |
| fields | No | |
| schemes | No | |
| currency | No | |
| merchant | No | |
| warnings | No | |
| currency_alpha | No | |
| point_of_initiation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the repeated 'solo lectura, sin red, sin estado guardado / determinista' lines add no new information. The description does contribute beyond annotations by stating the domain caveat that it never confirms a payment, and by giving operational limits (1 s per call, 1 MB result). The '64 KB input' limit sits oddly against the schema's 512-char payload cap, a minor internal inconsistency.
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?
Labels (Cuándo / No para / Efectos secundarios / Límites) give good front-loading, but the same content is presented twice (Spanish plus a full English restatement that also duplicates inputSchema.description). The money-math 'When' sentence earns no place in a QR parser 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?
With a rich annotation set, a single fully documented parameter, and an output schema that carries the return shape, the description covers purpose, exclusions, side effects and limits adequately. The only substantive gap is that the usage trigger is boilerplate rather than QR-specific.
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 single parameter is fully documented, so baseline 3 applies. The description adds modest context by indicating the payload is a merchant-presented TLV string with templates, but adds no format or validation detail beyond what the schema already conveys.
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 opening sentence names a specific verb and resource (parse an EMVCo merchant-presented QR payload, TLV) and enumerates concrete sub-behaviors: CRC16 check, mandatory-field check, and labelling of Pix / EASPBV Bre-B templates. It also distinguishes itself from the closest sibling by stating it is format-check only and never confirms a payment, unlike br-pix-brcode which builds payloads.
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 'No para: construir un BR Code Pix «copia e cola» (br-pix-brcode)' exclusion is an explicit, useful routing rule. However, the 'Cuando/When' clause is clearly boilerplate from a money-math tool ('un cálculo de dinero, impuestos o matemática financiera... redondeo, centavos, tasas'), which does not describe when to reach for a QR parser and could misroute an agent looking for rounding or rate math.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-compareComparar sin tildes (español)ARead-onlyIdempotentInspect
Compara dos textos en español ignorando mayúsculas y tildes (la ñ sigue distinta de la n); también da el orden. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: analizar una palabra (es-stress). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Compares two Spanish strings ignoring case and accents (and optionally punctuation and extra spaces) using Spanish collation, where ñ stays distinct from n; also gives sort order. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: analyzing a Spanish word (es-stress). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First (string; required; up to 10000 chars). | |
| b | Yes | Second (string; required; up to 10000 chars). | |
| ignore_punctuation | No | Ignore punctuation and extra spaces (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| equal | No | |
| order | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, and closed-world behavior, but the description adds useful operational details: deterministic output, no stored state, no network access, and concrete limits of 64 KB input, 1 s per call, and 1 MB result. These are real behavioral traits beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized with clear labels such as 'Cuándo', 'No para', 'Efectos secundarios', and 'Límites'. However, the full English translation duplicates the Spanish text, which is redundant for an agent and slightly weakens conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, exclusions, side effects, determinism, and limits, while the schema fully documents parameters and an output schema exists. An agent has everything needed to call the tool correctly without missing context.
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 already adequate, but the description adds meaningful comparison semantics: case and accent insensitivity, ñ remaining distinct from n, Spanish collation, and optional punctuation/space ignoring. It does not add much individual guidance for parameters a and b beyond the schema, so it falls just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it compares two Spanish texts, ignores case and accents while keeping ñ distinct from n, and also returns sort order. It explicitly distinguishes itself from the sibling es-stress by saying it is not for analyzing a single word.
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 an explicit 'Cuándo' condition for using Spanish collation rules and a 'No para' exclusion that names the sibling tool es-stress. This leaves little ambiguity about when to select this tool versus that alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-date-parseLeer fechas escritas en españolARead-onlyIdempotentInspect
Encuentra y convierte una fecha escrita en español: «tres de marzo de 2026», «primero de enero del dos mil veintiséis», «15/03/2026» (día primero) y hoy/mañana/ayer respecto a una fecha de referencia. Devuelve ISO 8601 y el día de la semana. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: leer un número escrito en palabras o cifras en español (es-number-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds and parses a date written in Spanish: "tres de marzo de 2026", "1.º de enero del dos mil veintiséis", "15/03/2026" (day first), and hoy/mañana/ayer relative to a given reference date. Returns ISO 8601 (proleptic Gregorian; 2-digit years are 20xx) and the weekday. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text containing a date (string; required; up to 20000 chars). | |
| reference_date | No | YYYY-MM-DD, needed for hoy/mañana/ayer and dates without a year (string; optional; pattern ^\d{4}-\d{2}-\d{2}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | No | |
| date | No | |
| year | No | |
| found | No | |
| month | No | |
| valid | No | |
| format | No | |
| reason | No | |
| weekday_en | No | |
| weekday_es | No | |
| offset_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description repeats the read-only claim but adds genuinely new behavioral facts: determinism, no network, no stored state, and hard limits (64 KB input, 1 s per call, 1 MB result) that an agent must respect to avoid failures. The safety restatement is mild redundancy rather than added value, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and examples are front-loaded and each labeled section (Cuándo / No para / Efectos / Límites) is scannable. The bilingual duplication roughly doubles length, which is defensible for a Spanish-language tool, but the trailing "[EN completo / full EN: inputSchema.description]" pointer is a wasted meta-reference since it merely redirects elsewhere.
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 an output shape (ISO 8601 proleptic Gregorian, weekday) is still briefly named, the two parameters are covered by the schema, and limits, determinism and the sibling exclusion are all stated. Nothing an agent needs to call this correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds semantic context by explaining that hoy/mañana/ayer are resolved against "a given reference date" and that day-first order applies to 15/03/2026 and 2-digit years are 20xx. It doesn't restate the regex or maxLength constraints, but those are already fully 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 ("Encuentra y convierte una fecha escrita en español") and backs it with three contrasting input examples plus the outputs (ISO 8601, weekday). It explicitly names the sibling it is not (es-number-parse), so an agent can separate it from the adjacent Spanish-language parsers 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?
Contains explicit routing: "Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación" and "No para: leer un número escrito en palabras o cifras en español (es-number-parse)". Both the positive trigger and the negative exclusion are present, which is the full standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-dni-nie-validateValidar DNI/NIE (España)ARead-onlyIdempotentInspect
Valida un DNI español (8 dígitos + letra) o NIE (X/Y/Z + 7 dígitos + letra) con la letra de control módulo 23 del Ministerio del Interior. Solo valida; no devuelve la letra esperada. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar una cédula ecuatoriana (ec-id-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter) with the official mod-23 control letter (Ministerio del Interior). Validation only; it never returns the expected letter. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | DNI or NIE (spaces/dashes allowed) (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| reason | No | |
| normalized | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnlyHint, openWorldHint=false, idempotentHint, destructiveHint=false) by disclosing that it never returns the expected letter, that it makes no network calls and keeps no state, that it is deterministic, and by giving concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits and the 'no expected letter in the output' constraint are not derivable from the 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?
Front-loaded with the purpose and organized under labels (Cuándo, No para, Efectos secundarios, Determinista, Límites), which makes scanning easy. It loses a point for internal repetition ('Solo valida; no devuelve la letra esperada' recurs, and 'la herramienta solo valida' appears twice) and for a full bilingual duplication of the same content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only validator with rich annotations and an output schema (so return values need not be explained), the description covers everything an agent needs: accepted formats, the excluded sibling, the fact that no expected letter is returned, determinism, and operational limits.
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 single `id` parameter is already fully described, including the 'spaces/dashes allowed' note and an example. The description restates the accepted DNI/NIE formats in prose, which is helpful reinforcement but adds no meaning 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 (validate) and resource (Spanish DNI/NIE) and spells out the exact accepted shapes (8 digits + letter; X/Y/Z + 7 digits + letter) plus the mod-23 control-letter algorithm. It also distinguishes itself from the sibling ec-id-validate by name, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'Cuándo' / 'No para' sections: use it for offline checking of user-supplied Spanish/LatAm IDs before storing or using them, and do NOT use it for Ecuadorian cédulas (ec-id-validate named). Both the inclusion and exclusion conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-name-caseMayúsculas de nombres en españolARead-onlyIdempotentInspect
Capitaliza nombres propios al estilo español, con partículas en minúscula (de, del, de la, y…), guiones y apóstrofos. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: convertir a formato de título (case-title). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Capitalizes personal or place names in Spanish style, keeping particles lowercase (de, del, de la, y, e, los, las, da, van, von) except at the start, and handling hyphens and apostrophes. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: capitalizing words as a title (case-title). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name (string; required; up to 500 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the 'sin efectos secundarios / determinista' sentence largely restates them. The genuinely additive content is the limits block (64 KB input, 1 s per call, 1 MB result), which no structured field conveys.
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 verb and the rule set, then cleanly separated into when / not-for / side effects / limits. Slightly redundant in that the side-effects and determinism sentences overlap with the annotations, but nothing is padded.
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-string transformer with an output schema, full annotation coverage and 100% param description coverage, the description supplies everything an agent needs: scope, exclusion, determinism, and operational limits.
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?
Only one parameter and schema coverage is 100%, so the baseline is 3. The description still adds real semantics the schema lacks: how particles (de, del, de la, y, e, da, van, von) are treated, that they stay lowercase except at the start, and how hyphens and apostrophes are handled.
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 ('Capitaliza') and resource ('nombres propios al estilo español') plus the exact rule set: particles lowercase, hyphens, apostrophes. It also explicitly sets itself apart from the sibling case-title, so an agent can discriminate 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?
Uses explicit 'Cuándo' and 'No para' markers, and names the alternative (case-title) that handles the title-case use case. The selection condition between the two tools is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-number-parseLeer números escritos en españolARead-onlyIdempotentInspect
Convierte números en palabras o cifras: «tres mil cuatrocientos veintiuno» → 3421, «dos coma cinco millones», «menos», escala larga (mil millones = 10⁹). Cifras como «1.250» (un separador + 3 dígitos) son ambiguas si no se da decimal_separator. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: convertir textos de dinero en estilo colombiano (co-cop-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts Spanish number words or digits to a number: "tres mil cuatrocientos veintiuno" → 3421, "dos coma cinco millones", "menos", long scale (mil millones = 10⁹). "1.250"-style digits (one separator + 3 digits) are ambiguous unless decimal_separator is given. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Number in Spanish words or digits (accents optional) (string; required; up to 500 chars). | |
| decimal_separator | No | Decimal separator of the digits; resolves "1,250"-style numbers (no default) (optional; one of: ,, .). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| value | No | any JSON value |
| number | No |
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/determinism sentences largely restate structured data. The genuine addition is the operational limits (64 KB input, 1 s per call, 1 MB result) and the ambiguity rule for «1.250»-style digits, which the agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core mapping and examples, then layered as when / not-for / effects / limits, and every section is short. It loses a point only because the side-effects and determinism sentences duplicate the annotation block and the ES/EN doubling makes the payload denser than strictly necessary.
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 format needs no explanation, and the description still covers the ambiguous-input hazard, scale convention, exclusions, and size/time limits. Nothing an agent needs in order to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining *why* decimal_separator exists — one separator followed by three digits is ambiguous without it — and by noting accents are optional and «menos» is understood, none of which the schema spells out.
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 (converts Spanish number words or digits to a number) and backs it with concrete input→output examples («tres mil cuatrocientos veintiuno» → 3421) plus the long-scale convention. It is clearly distinguishable from the inverse sibling es-number-to-words and from co-cop-parse.
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?
Explicit routing is provided: «Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas» and an explicit exclusion «No para: convertir textos de dinero en estilo colombiano (co-cop-parse)». The agent has both the positive condition and a named alternative to fall back on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-number-to-wordsNúmero en letras (español)ARead-onlyIdempotentInspect
Escribe un entero hasta 10^18 en palabras en español (escala larga), con género y apócope opcional (veintiún, un). Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: escribir un valor en pesos colombianos en letras para cheques y facturas (co-amount-in-words). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Spells an integer up to 10^18 in Spanish words (long scale: millón, mil millones, billón), with masculine/feminine agreement and optional apocope (veintiún, un) for use before a noun. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: writing a Colombian peso amount in words for cheques and invoices (co-amount-in-words). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Integer (integer or string; required; up to 19 chars; pattern ^-?\d{1,18}$). | |
| gender | No | Grammatical gender (optional; one of: masculine, feminine; default "masculine"). | masculine |
| apocope | No | Use un/veintiún forms (before a noun) (boolean; optional; default false). | |
| uppercase | No | Uppercase (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, openWorld=false, destructive=false, so the 'sin efectos secundarios / determinista' sentence largely restates structured data. What is genuinely new is the operational envelope (64 KB JSON input, 1 s per call, up to 1 MB result), which is useful context an agent cannot get from annotations or schema. Net: modest added value over a well-annotated baseline.
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 is front-loaded, but the text is bloated by full ES/EN duplication plus a meta-note pointing at inputSchema.description, which itself repeats the same paragraph. Roughly half the tokens are redundant with each other, though no individual sentence is filler-free enough to score higher.
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 schema exists, so return values need no explanation, and the description still covers scope, scale, exclusions, idempotence and payload/time limits. The one remaining gap is that same-family siblings (es-number-parse, number-to-words-en) are never disambiguated, but nothing needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description clarifies gender agreement and apocope meaning ('veintiún, un' before a noun), which adds a little semantic color, but it never mentions the 'uppercase' parameter and adds no syntax 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 ('Escribe un entero ... en palabras en español'), plus the numeric domain (up to 10^18), scale convention (escala larga) and the two output-shaping options. An agent can identify this as the Spanish cardinal-spelling tool without opening the schema, and the description names the sibling it is not (co-amount-in-words).
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 an explicit 'Cuándo' condition (Spanish text/numbers/dates must follow written language rules, not approximation) and an explicit 'No para' exclusion pointing to co-amount-in-words. It does not mention the inverse sibling es-number-parse or the English variant number-to-words-en, so routing among the three spelling/parsing tools is not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-ordinalNúmeros ordinales en españolARead-onlyIdempotentInspect
Escribe ordinales en español del 1 al 999 (primero, vigésimo tercero…) con género, apócope y abreviatura (1.º, 1.ª). Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: escribir un entero hasta 10^18 en palabras en español (es-number-to-words). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Writes 1-999 as a Spanish ordinal in words (primero, vigésimo tercero, centésimo) with gender and apocope (primer, tercer) options, plus the abbreviation (1.º, 1.ª). When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: spelling an integer up to 10^18 in Spanish words (es-number-to-words). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | 1-999 (integer; required; min 1; max 999). | |
| gender | No | Gender (optional; one of: masculine, feminine; default "masculine"). | masculine |
| apocope | No | primer/tercer before a masculine noun (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No | |
| abbreviation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description still adds real value by stating determinism and concrete operational limits (64 KB input, 1 s per call, 1 MB result), which annotations do not carry. It does not explain the output shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content (purpose, when, not-for, side effects, limits) is front-loaded in the Spanish section, with labels that scan well. The main cost is that the same content is largely repeated in English, and the English block also duplicates the inputSchema description, adding length without new 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 deterministic, read-only formatting tool with full parameter documentation and an output schema, the description covers everything an agent needs: what it produces, when to prefer it, what it is not for, side effects and hard limits. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by tying apocope to its linguistic effect (primer/tercer before a masculine noun) and showing the abbreviation forms (1.º, 1.ª), which helps the agent interpret the options rather than just their names.
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 scope: "Escribe ordinales en español del 1 al 999 (primero, vigésimo tercero…)", including the gender, apocope and abbreviation variants. It also explicitly separates itself from the sibling that handles cardinal numbers, so an agent can distinguish the two 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?
Gives an explicit "Cuándo" trigger (Spanish text, numbers or dates must follow written language rules rather than approximation) and an explicit "No para" exclusion naming es-number-to-words as the alternative for large integers. Both the positive and negative routing conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-sentence-splitDividir oraciones en españolARead-onlyIdempotentInspect
Divide un texto en español en oraciones, considerando ¿…? y ¡…!, puntos suspensivos, decimales y miles (3.5, 1.000), iniciales (J. R.) y abreviaturas comunes (Sr., Dra., Uds., pág., núm., Cra., EE. UU., S.A.S.). Devuelve posiciones. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: dividir un texto en fragmentos con solapamiento para recuperación (rag-chunk). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits Spanish text into sentences, aware of ¿…? and ¡…!, ellipses, decimals and thousands (3.5, 1.000), initials (J. R.) and common abbreviations (Sr., Dra., Uds., pág., núm., Cra., EE. UU., S.A.S.). Returns offsets. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Spanish text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| sentences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds genuinely new behavior: explicit limits (64 KB input, 1 s per call, 1 MB result) and determinism. It does not describe offset format details, but with annotations and an output schema present, this is solid added 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?
The core purpose is front-loaded and the labeled sections (Cuándo/No para/Efectos/Límites) are scannable and earn their place. Some duplication from the ES/EN mirroring makes it slightly longer than strictly necessary.
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 splitter with an output schema, the description covers purpose, edge cases, when/when-not, side effects, determinism and hard limits. Return values ('Devuelve posiciones') are noted and detailed by the output schema, so nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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%, with examples and maxLength already in the schema. The description adds no syntax or format detail for the text parameter beyond what the schema provides, 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 and resource (split Spanish text into sentences) and enumerates the exact edge cases handled: ¿…?/¡…!, ellipses, decimals/thousands, initials, abbreviations. It also names the sibling it is not (rag-chunk), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' states the condition for use (handling Spanish text/numbers/dates by written language rules rather than approximation) and 'No para' names the alternative tool (rag-chunk) for the overlapping case. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-slugSlug en español (con ñ)ARead-onlyIdempotentInspect
Crea un slug desde texto en español sin convertir ñ en n ("año" no queda "ano"): ñ → ni/ny/nn o se conserva; quita tildes y opcionalmente palabras vacías. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: generar un slug para URL (text-slug). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a URL slug from Spanish text without collapsing ñ into n (so "año" does not become "ano"): ñ becomes "ni", "ny", "nn" or is kept; accents are removed and stopwords can be dropped. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: making a URL slug (text-slug). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| enye | No | How to write ñ (optional; one of: ni, ny, nn, keep; default "ni"). | ni |
| text | Yes | Text (string; required; up to 4096 chars). | |
| max_length | No | Max length (integer; optional; default 80; min 1; max 512). | |
| drop_stopwords | No | Drop de, la, el, y, en… (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false; the description reinforces this and adds genuinely new operational facts the annotations cannot carry: determinism, 64 KB input cap, 1 s per-call budget, 1 MB output cap, and no network/stored state. That is substantial 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?
Front-loaded with the differentiator, which is good, but the body is inflated by full Spanish/English duplication and a stray artifact ('[EN completo / full EN: inputSchema.description]') that costs tokens without informing. The duplicated text also creates the URL-slug contradiction, so length is doing harm rather than adding precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-purpose transformer with a full output schema, the description covers usage, exclusions, side effects, determinism and limits — nearly everything an agent needs. The remaining gap is the 'URL slug' vs 'not for URLs' inconsistency, which could cause a caller to pick the wrong 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 100%, so the schema already documents enye enum values, defaults, text maxLength 4096 and max_length bounds. The description adds only marginal semantics (the ñ-mapping intent and stopword examples), and never mentions the max_length parameter or the interaction between max_length and ñ expansion.
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 concrete verb+resource (build a slug) and a distinguishing specialty (ñ preserved/transliterated as ni/ny/nn/keep) that separates it from generic slugging tools. However, the English text says it 'Builds a URL slug' and then immediately says it is 'Not for: making a URL slug (text-slug)', which muddies the core purpose for an English-reading agent.
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?
Explicit 'When' clause plus a 'Not for' clause that names the alternative sibling (text-slug), which is exactly the routing information an agent needs. The 'When' condition ('Spanish text, numbers or dates… by the written rules of Spanish') is broader and vaguer than the actual slugging capability, so selection is only mostly unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-stressAcentuación y tilde en españolARead-onlyIdempotentInspect
Analiza una palabra: sílabas, sílaba tónica (por la tilde o la regla general), clase (aguda, llana, esdrújula, sobresdrújula) y si la tilde escrita cumple las reglas de la RAE; con la sílaba tónica deseada devuelve la grafía correcta. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: separar palabras en sílabas según las reglas ortográficas de la RAE (es-syllabify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Analyzes a Spanish word: syllables, stressed syllable (from the written accent or the default rule), class (aguda, llana, esdrújula, sobresdrújula) and whether the written accent follows the RAE rules; with an intended stressed syllable it returns the correct spelling. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | A single Spanish word (string; required; up to 60 chars). | |
| stressed_syllable | No | Intended stressed syllable counted from the end (1 = last). Optional (integer; optional; min 1; max 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| word | No | |
| class | No | |
| target | No | |
| stressed | No | |
| syllables | No | |
| has_accent | No | |
| accent_check | No | |
| stressed_syllable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, and the description largely restates them ("solo lectura, sin red, sin estado guardado", "determinista"), which earns little credit. What it does add beyond structured data is operational limits: 64 KB JSON input, 1 s per call, up to 1 MB result — concrete constraints an agent cannot see elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core analysis statement is front-loaded, followed by clearly labeled clauses (Cuándo / No para / Efectos secundarios / Determinista / Límites). Only the side-effects and determinism lines partly duplicate annotations, which is a minor cost in an otherwise tight, well-structured description.
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 it correctly focuses on inputs, modes, limits, and routing. The only gap is that the "números o fechas" framing overstates the tool's scope (a single word), which could mildly mislead an agent about what input to pass.
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 adds genuine semantics for the optional parameter: supplying an intended stressed syllable makes the tool return the correct written spelling rather than merely analyzing. That behavioral link between the parameter and the output mode is not stated 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?
The description states a specific verb and resource with enumerated outputs: syllables, stressed syllable, word class (aguda/llana/esdrújula/sobresdrújula), and RAE accent-rule compliance. It also describes the second mode (given an intended stress, return correct spelling), so an agent understands the tool's full capability 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 an explicit exclusion with a named sibling: "No para: separar palabras en sílabas ... (es-syllabify)", which is exactly the routing information an agent needs versus the near-identical syllable tool. The positive "Cuándo" clause is weaker and slightly off-target, since it talks about handling Spanish text, numbers, and dates while the tool only accepts a single word.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
es-syllabifySeparar en sílabasARead-onlyIdempotentInspect
Separa palabras en sílabas según las reglas ortográficas de la RAE: diptongos, triptongos, hiatos (í/ú con tilde), grupos inseparables (pl, br, tr…), ch/ll/rr y la u muda de que/gui. Las divisiones por prefijo (sub-, des-) pueden variar. Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: analizar una palabra (es-stress). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits Spanish words into syllables with the RAE orthographic rules: diphthongs, triphthongs, hiatus (accented í/ú), inseparable clusters (pl, br, tr…), ch/ll/rr and silent u in que/gui. Prefix-based splits (sub-, des-) may differ. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | One or more Spanish words (string; required; up to 20000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuine context beyond annotations: an explicit time budget (1 s/call), result size cap (1 MB), input size limit (64 KB) and the orthographic caveat that prefix-based splits may differ. It does partly restate annotations ('solo lectura, sin red, sin estado guardado' / 'Determinista' mirror readOnlyHint, openWorldHint=false, idempotentHint), which caps the score below 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?
Front-loaded with the core operation, then clearly labeled blocks (Cuándo / No para / Efectos / Determinista / Límites) that make scanning easy. Slight redundancy from running the content in both Spanish and English before deferring to inputSchema.description for the full EN.
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, a fully documented single parameter and an output schema present, nothing an agent needs is missing: scope, exclusion, determinism, resource limits and the prefix-split edge case are all stated.
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?
Single required parameter with 100% schema description coverage and an example ('murciélago'), so the schema already carries parameter meaning. The description adds no format or edge-case detail about the 'text' field beyond what the schema states, 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?
Starts with a specific verb+resource ('Separa palabras en sílabas') and immediately enumerates the rules it applies (diptongos, triptongos, hiatos, grupos inseparables, ch/ll/rr, u muda). It also explicitly contrasts with the sibling es-stress, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'Cuándo:' (Spanish text/numbers/dates must follow written orthographic rules, not approximation) and 'No para:' routing the word-analysis case to es-stress. The prefix-split caveat (sub-, des-) tells the agent when output may legitimately vary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm-address-checksumChecksum de dirección EVM (EIP-55)ARead-onlyIdempotentInspect
Valida una dirección EVM (Ethereum, Base, Polygon…): formato y checksum EIP-55; devuelve la forma con checksum. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar una dirección Bitcoin sin conexión: Base58Check (bitcoin-address-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an Ethereum/EVM address (Base, Polygon, etc.): 20-byte hex format and EIP-55 mixed-case checksum, and returns the checksummed form. Does not check balances or ownership. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a Bitcoin address offline: Base58Check P2PKH/P2SH (bitcoin-address-validate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| checksummed | No | |
| valid_format | No | |
| checksum_valid | No | |
| is_zero_address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, so the offline/no-state claims are largely restatements. The description does add genuinely new operational context the annotations cannot convey: 64 KB input cap, 1 s per call, 1 MB result cap. It also clarifies the scope limit (does not check balances or ownership).
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?
Content is front-loaded and every claim is substantive, but the entire block is duplicated verbatim in Spanish and English, and the EN section is truncated mid-sentence with a meta-reference ("[EN completo / full EN: inputSchema.description]"). Roughly half the length is redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param offline validator with an output schema, the description covers purpose, routing, determinism and resource limits — enough to invoke correctly. The remaining gap is failure behavior (does an invalid address throw or return a negative result), which the output schema may or may not cover.
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% with an example, so the baseline is 3. The description goes slightly beyond by specifying the underlying semantics — a 20-byte hex address — which explains why the schema's maxLength is 64 rather than the expected 42 characters, useful disambiguation for a single-param tool.
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 ("Valida una dirección EVM") plus the exact check performed (20-byte hex format + EIP-55 checksum) and the return value (checksummed form). It explicitly names a sibling it is not (bitcoin-address-validate), so the agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Cuándo" gives the trigger condition (verifying format and check digit offline before use) and "No para" names the exclusion with the alternative tool (bitcoin-address-validate for Base58Check). Both the positive and negative routing decisions are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expression-evaluateEvaluar expresión matemáticaARead-onlyIdempotentInspect
Evalúa una expresión matemática con un analizador propio (sin eval): operadores, funciones, constantes y variables. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: realizar aritmética exacta de enteros grandes (bigint-calc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Evaluates an arithmetic expression with its own parser (no eval): + − * / % ^ !, parentheses, implicit multiplication, functions (sqrt, sin, ln, log, min, max…), constants pi/e/tau/phi and named variables. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| decimals | No | Round result to N decimals (integer; optional; default 12; min 0; max 15). | |
| variables | No | Variable values (object; optional; default {}). | |
| expression | Yes | Expression (string; required; at least 1 chars; up to 2000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is structured data. The description still earns credit for information not in annotations: it uses its own parser with no eval, is deterministic, and documents hard limits (64 KB JSON input, 1 s per call, 1 MB result). It does not describe error behavior on invalid expressions, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded with the core purpose first, but the field is effectively duplicated: a Spanish block, then an English block restating the same thing, then a third copy inside inputSchema.description. The redundant bilingual mirroring roughly doubles length without adding 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 pure-computation tool with a full output schema and complete annotations, the description covers purpose, exclusions, purity, determinism and execution limits — everything needed to call it correctly. Minor gap: it does not say what a malformed expression or unknown function produces, though the output schema partially covers returns.
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 three parameters (expression, variables, decimals) are already documented — the baseline is 3. The prose adds meaning for `variables` ('named variables' usable inside expressions) but says nothing about `decimals` rounding semantics or the 0–15 range beyond what the schema states, so it does not exceed 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 and resource (evaluate an arithmetic expression) and enumerates the exact grammar surface: operators + − * / % ^ !, parentheses, implicit multiplication, functions like sqrt/sin/ln, constants pi/e/tau/phi and named variables. It also forecloses the closest sibling by name (bigint-calc), so an agent can discriminate 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?
Explicit 'Cuándo: a numeric result has to be exact or reproducible instead of estimated' plus an explicit 'No para: exact arbitrary-precision integer arithmetic (bigint-calc)'. This is the when/when-not/alternative triad spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-emailsExtraer correos electrónicosARead-onlyIdempotentInspect
Extrae direcciones de correo de un texto (solo sintaxis; no verifica que existan). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: verificar solo la SINTAXIS de un correo (email-syntax-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds email-like addresses in text (syntax only; does not check that mailboxes exist), lowercasing the domain part. Uses a linear-time scanner around each @. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: checking email address SYNTAX only (email-syntax-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unique | No | Remove duplicates (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, yet the description adds real value beyond them: it says mailboxes are not verified, that the domain part is lowercased, that scanning is linear-time, that no network access or stored state is used, and it publishes explicit limits (64 KB input, 1 s per call, 1 MB result). That is unusually complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Within each language the text is well structured and front-loaded (purpose, when, not-for, side effects, limits). However, the Spanish and English blocks duplicate essentially the same content, roughly doubling token cost with no added information — a real conciseness penalty for a two-parameter extraction tool.
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 everything else an agent needs: non-verification semantics, determinism, side-effect profile, and hard limits. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, and the description adds no explanation of the 'unique' flag or of the 'text' format. The only semantic addition is the domain-lowercasing behavior, which is a result property rather than a parameter one. 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 ('extrae direcciones de correo de un texto') and immediately bounds it ('solo sintaxis; no verifica que existan'). It names the sibling it is not (email-syntax-validate), so an agent can distinguish it without opening another 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 'No para' clause is explicit and routes the agent to email-syntax-validate for pure syntax checking. The positive 'Cuándo' clause ('transformar, comparar o medir un texto con exactitud') is somewhat generic and describes a family of text tools rather than this one specifically, but the exclusion is precise enough to be actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-emojisExtraer emojisARead-onlyIdempotentInspect
Extrae emojis (incluye tonos de piel y secuencias ZWJ) de un texto. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar la frecuencia de cada carácter (char-frequency). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds emoji grapheme clusters (including skin tones, ZWJ sequences and flags) in text. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting how often each grapheme appears, sorted by frequency then by first appearance (char-frequency). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unique | No | Remove duplicates (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description largely restates those ("solo lectura, sin red, sin estado guardado", "Determinista"). The added value is the operational limits block — 64 KB JSON input, 1 s per call, 1 MB result — which is genuine behavioral context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paragraph is front-loaded and segmented with explicit labels (Cuándo / No para / Efectos secundarios / Determinista / Límites), so any line can be scanned in isolation. The cost is full duplication across Spanish and English, roughly doubling tokens for identical 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 prose, and annotations plus the limits block cover the safety and determinism story well. Two gaps remain: the default-on deduplication via unique is never mentioned, and the stated "64 KB JSON input" limit sits oddly against the schema's 1,048,576-character text field, leaving ambiguous which bound actually applies.
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 text and unique are documented with types, defaults and an example, which sets the baseline at 3. However the description is silent on the most consequential parameter behavior: unique defaults to true, so results are deduplicated unless the caller opts out — a caller reading only the prose would not know that.
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 ("Extrae emojis / Finds emoji grapheme clusters") and scopes it precisely by naming what counts as an emoji unit: skin tones, ZWJ sequences, flags. That scope detail is what separates it from generic extractors like extract-numbers or extract-urls in the sibling list, and an agent can pick 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?
Explicitly names the boundary case and the alternative tool: "No para: contar la frecuencia de cada carácter (char-frequency)", which is a real routing decision. The positive "When" clause ("transformar, comparar o medir un texto con exactitud") is abstract and doesn't give a concrete trigger, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-hashtagsExtraer hashtagsARead-onlyIdempotentInspect
Extrae #hashtags de un texto. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: extraer @menciones que no forman parte de un correo (extract-mentions). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds #hashtags (Unicode letters, digits, underscore) in text. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: finding @mentions (extract-mentions). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unique | No | Remove duplicates (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses side effects, determinism, lack of network access, lack of stored state, and operational limits. That is substantial extra context for invocation safety and expected behavior, even though the stated 64 KB JSON input limit sits in some tension with the schema's 1 MB text maxLength.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well-structured and front-loaded, with clear labels for when, not-for, side effects, determinism, and limits. However, the entire description is duplicated in Spanish and English, doubling length without adding semantic value for an agent and keeping it from being truly concise.
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 extraction tool with full schema coverage, annotations, and an output schema, the definition covers the essential context. It explains behavior, limits, determinism, and sibling routing; return-value details are appropriately left to 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 100%, so both parameters are already documented in the input schema. The description adds useful domain semantics by defining which characters form hashtags, but it does not add parameter-level meaning for `unique` 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 states a specific verb and resource: extracting #hashtags from text, with a clear definition of what counts as a hashtag (Unicode letters, digits, underscore). It also distinguishes the operation from extract-mentions, so an agent can identify the tool without relying only on the name.
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 an explicit when-to-use condition (exact text transformation, comparison, or measurement) and an explicit not-for case that names the alternative tool, extract-mentions. This is enough to route an agent away from mention extraction when hashtags are the target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-mentionsExtraer @mencionesARead-onlyIdempotentInspect
Extrae @menciones que no forman parte de un correo. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: extraer #hashtags de un texto (extract-hashtags). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds @mentions (letters, digits, underscore, dot; 1-50 chars) that are not part of an email address. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: finding #hashtags (extract-hashtags). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unique | No | Remove duplicates (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world and non-destructive, so restating 'read-only, deterministic' is partly redundant. What genuinely adds value beyond the structured fields are the hard limits: 64 KB JSON input, 1 second per call, 1 MB result — constraints an agent cannot infer from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and dense: purpose, when, when-not, side effects, determinism and limits each carry distinct information. Length is doubled by the ES/EN mirroring, which is intentional for a bilingual catalog but still inflates the payload for a two-parameter tool.
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 low-complexity extractor with an output schema already present, the description supplies everything an agent needs: extraction rules, exclusion of emails, the sibling alternative, and operational limits. Return-value shape is rightly left to 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 100%, so both parameters are already documented, and the description adds no guidance on the `unique` flag (default true) — a real semantic gap since duplicate handling changes the output shape. The mention grammar does clarify what the `text` input is scanned for, but it is framed as extraction behavior rather than parameter semantics, so the 100%-coverage baseline of 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 specific verb and resource (extract @mentions) and sharpens it with the grammar that defines a mention (letters, digits, underscore, dot; 1-50 chars) plus the negative rule that emails are excluded. It also names the nearest sibling (extract-hashtags), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When:' clause gives the selection condition (exact transform/compare/measure rather than approximation) and 'Not for:' names the alternative tool and its distinct task. This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-numbersExtraer númerosARead-onlyIdempotentInspect
Extrae números de un texto, entendiendo separadores de miles y decimales en estilo en (1,234.5) o es (1.234,5). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: leer un número escrito en palabras o cifras en español (es-number-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds numbers in text, handling signs, decimals, exponents and thousands separators in en (1,234.5) or es/co (1.234,5) style, and returns them as numbers. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: reading a number written in Spanish words or digits (es-number-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| style | No | Separator convention (optional; one of: en, es; default "en"). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| numbers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring read-only, no-network, idempotent, and non-destructive behavior, the description adds concrete operational traits: deterministic output, no stored state, 64 KB input limit, 1 s per call, and 1 MB result limit. These are valuable constraints not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized with clear labels such as Cuándo, No para, Efectos secundarios, Determinista, and Límites. It is somewhat longer than necessary because the Spanish and English versions duplicate the same 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 an output schema, two simple parameters, and rich annotations, the description covers purpose, usage boundaries, side effects, determinism, and limits. An agent has everything needed to decide when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds useful meaning by explaining en and es/co separator conventions and mentioning signs, decimals, and exponents that the schema does not document. It does not add deep per-parameter guidance, but it enriches interpretation of the text input.
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: extracting numbers from text while handling signs, decimals, exponents, and thousands separators. It explicitly distinguishes itself from the sibling es-number-parse by saying it is not for reading numbers written in Spanish words or digits.
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 explicit when-to-use guidance tied to exact transformation, comparison, or measurement, and explicitly names the alternative tool es-number-parse for the excluded case. The boundary between this tool and the sibling is clear enough for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-urlsExtraer URLsARead-onlyIdempotentInspect
Extrae URLs http(s) y www. de un texto, quitando la puntuación final. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: listar los enlaces e imágenes de un documento Markdown (markdown-links-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds http(s) and www. URLs in text, trimming trailing punctuation and unbalanced closing parentheses. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: listing the links and images of a Markdown document (markdown-links-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unique | No | Remove duplicates (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered; the description then adds context the annotations cannot express: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits and the determinism guarantee are exactly the kind of extra operational detail that changes how an agent batches or sizes calls.
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?
Each language block is well front-loaded (purpose, then when, then not-for, then effects/limits), but the entire content is duplicated in Spanish and English, roughly doubling token cost with zero added information for an agent. The structure is good; the redundancy is not.
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 annotations cover safety, so the description need not explain return values; what remains — purpose, selection criteria, side effects, determinism and size/time limits — is fully covered. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already described in the schema, so baseline 3 applies. The description adds extraction semantics (trailing punctuation trimming) that the schema does not convey, but it never mentions the `unique` deduplication flag, leaving parameter behavior entirely 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+resource ("Extrae URLs http(s) y www. de un texto") plus the scoping detail that trailing punctuation and unbalanced closing parentheses are trimmed. It explicitly distinguishes itself from the closest confusable sibling, markdown-links-extract, so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit "Cuándo" condition (transform/compare/measure text exactly rather than approximately) and an explicit "No para" exclusion naming the alternative tool markdown-links-extract. When-to-use, when-not-to-use and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
factorialFactorialARead-onlyIdempotentInspect
Calcula el factorial exacto n! para 0 ≤ n ≤ 2000. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: realizar aritmética exacta de enteros grandes (bigint-calc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact n! for 0 ≤ n ≤ 2000 as a decimal string, with digit count. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | n (integer; required; min 0; max 2000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| digits | No | |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, closed-world, idempotent and non-destructive, so the repetition of "sin efectos secundarios" earns little. The added value is concrete operational context the annotations do not carry: determinism, 64 KB input cap, 1 s per call, and 1 MB result cap.
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?
Well front-loaded and labelled (Cuándo / No para / Efectos / Límites), but the entire content is duplicated verbatim in Spanish and English, roughly doubling length with no informational gain. Each half alone would be 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?
An output schema exists, so return values need not be explained, yet the description still flags the decimal-string-with-digit-count shape. Input bounds, timeouts, size caps and determinism are all covered, leaving nothing an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already declares min 0, max 2000 and an example, so the description adds no new syntax or format detail for n. Baseline 3 applies 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 and resource ("Computes the exact n! for 0 ≤ n ≤ 2000") and adds the output form (decimal string with digit count). It also names the sibling bigint-calc as the thing it is not, so the agent can separate the two 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?
Explicit "When" and "Not for" clauses with a named alternative (bigint-calc) give real routing guidance. The exclusion phrasing is slightly muddled, since factorial itself is exact big-integer arithmetic, leaving some ambiguity about where the boundary actually sits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fibonacciNúmero de FibonacciARead-onlyIdempotentInspect
Calcula el número de Fibonacci exacto F(n) para n ≤ 20.000. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: realizar aritmética exacta de enteros grandes (bigint-calc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact n-th Fibonacci number F(n) (F(0)=0, F(1)=1) for n ≤ 20,000 using fast doubling, and optionally the first terms. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | n (integer; required; min 0; max 20000). | |
| list | No | Also return F(0..min(n,100)) (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| sequence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description adds real extra context: no network, no stored state, determinism, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). It is duplicative of the annotations in the 'side effects' sentence, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core capability and clearly segmented (When / Not for / Side effects / Deterministic / Limits). The full Spanish and English duplication roughly doubles the length for no informational gain, which is the main deduction.
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. With the bound, the method, the exactness guarantee, the alternative tool, the side-effect profile and the resource limits all present, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the schema already gives min/max, default and examples. The description only notes 'optionally the first terms' without adding the 100-term cap or format detail, so the schema does the heavy lifting and 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 and resource ('Computes the exact n-th Fibonacci number F(n)') with the base cases F(0)=0, F(1)=1 and the algorithm (fast doubling), plus the hard bound n ≤ 20,000. It also names the sibling it is not (bigint-calc), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both sides explicitly: 'When: a numeric result has to be exact or reproducible instead of estimated' and 'Not for: computing exact arbitrary-precision integer arithmetic (bigint-calc)'. The alternative is named and the selecting condition is stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file-type-detectDetectar tipo de archivo por sus bytesARead-onlyIdempotentInspect
Detecta el tipo de archivo por sus primeros bytes (números mágicos): imágenes, PDF, comprimidos, Office, audio, video, fuentes, ejecutables y más, con heurísticas para texto, HTML, SVG y JSON. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: buscar un tipo MIME por extensión de archivo o al revés (mime-lookup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Detects a file type from its first bytes (magic numbers): images, PDF, archives, Office/OOXML, audio, video, fonts, executables, SQLite, WebAssembly, plus text, HTML, XML/SVG and JSON heuristics; returns MIME type, extension and confidence. Does not trust file names. When: bytes or text have to be converted to or from this encoding exactly, without guessing. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | File bytes (whole file or at least its first 4 KB) (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: base64, hex; default "base64"). | base64 |
Output Schema
| Name | Required | Description |
|---|---|---|
| mime | No | |
| size | No | |
| charset | No | |
| extension | No | |
| confidence | No | |
| description | No | |
| bytes_examined | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds value beyond them: concrete limits (64 KB JSON input, 1 s per call, 1 MB result) and the note that file names are not trusted, which is a real behavioral trait. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core detection statement is front-loaded and useful, but the definition is bloated by full bilingual duplication and a 'When' sentence that appears copied from an encoding tool and actively misleads. Those sentences do not earn their place in a detection tool's description.
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 mentions MIME type, extension and confidence. Limits and determinism are covered. The only gap is the muddled positive usage condition, which slightly weakens completeness for an agent deciding when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (data, input_encoding with a base64/hex enum) are documented in the schema, including the 'first 4 KB is enough' hint. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Detecta el tipo de archivo por sus primeros bytes') and enumerates the detectable families (images, PDF, archives, Office, audio, video, fonts, executables, SQLite, WebAssembly) plus text/HTML/SVG/JSON heuristics. It also names the sibling it is not (mime-lookup), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No para' clause explicitly routes extension-based MIME lookups to mime-lookup, which is strong exclusion guidance. However, the 'Cuándo' clause is confusing: it talks about converting bytes or text 'to or from this encoding', which is conversion language that does not match a detection tool, leaving the positive trigger condition muddled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-bondPrecio, rendimiento y duración de bonoARead-onlyIdempotentInspect
Valora un bono de cupón fijo en fecha de cupón: precio a partir del rendimiento, o rendimiento al vencimiento a partir del precio (bisección), más duración de Macaulay y modificada, convexidad y rendimiento corriente. Tasas en % anual; sin intereses corridos ni convención de días. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: valorar una opción europea call y put con el modelo Black-Scholes-Merton (fin-option-price). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Prices a fixed-coupon bond on a coupon date: price from yield or yield to maturity from price (bisection), plus Macaulay and modified duration, convexity and current yield. Rates in percent per year; no accrued interest or day count. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Face value (number; optional; default 100; min 0.01; max 1000000000000). | |
| price | No | Price, to compute the yield (number; optional; min 0.0001; max 10000000000000). | |
| years | Yes | Years to maturity (number; required; min 0.01; max 100). | |
| yield | No | Annual yield %, to compute the price (number; optional; min -50; max 200). | |
| frequency | No | Coupons per year (optional; one of: 1, 2, 4, 12; default 2). | |
| coupon_rate | Yes | Annual coupon rate % (number; required; min 0; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| price | No | |
| periods | No | |
| convexity | No | |
| yield_percent | No | |
| macaulay_duration | No | |
| modified_duration | No | |
| current_yield_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description nonetheless adds substantive context beyond them: valuation is on a coupon date only, no accrued interest or day-count convention, rates in percent per year, deterministic output, and hard limits (64 KB input, 1 s, 1 MB result). Slight redundancy on 'no side effects' with the annotations keeps it off 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?
Front-loaded with the core operation, then when/not-for, then effects and limits — a scannable structure. The bilingual ES/EN duplication inflates length, though the parallel text is deliberate.
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, annotations cover safety, and the schema documents all six parameters. The description fills the remaining gaps: valuation date convention, rate units, determinism, and execution limits.
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 adds real semantics by clarifying that yield/rates are percent per year and that price and yield are alternative inputs to the same calculation rather than independent options. It does not explain the interplay of face/frequency, which the schema handles.
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 (value a fixed-coupon bond on a coupon date) and enumerates both directions of computation (price from yield, yield from price via bisection) plus the derived metrics returned. An agent can distinguish it from fin-option-price or fin-tvm 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?
Has an explicit 'Cuándo' clause (money/tax/financial-math results needing exactness and reproducibility) and an explicit 'No para' clause routing European option pricing to fin-option-price. Both the positive and negative conditions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-break-evenPunto de equilibrioARead-onlyIdempotentInspect
Calcula el punto de equilibrio en unidades e ingresos, y margen de contribución. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular utilidad, margen bruto % (margin-markup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the break-even units = fixed costs / (price − variable cost per unit), the revenue at that point and the contribution margin. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing profit, gross margin % (margin-markup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Price per unit (number; required; min 0). | |
| fixed_costs | Yes | Fixed costs (number; required; min 0). | |
| variable_cost | Yes | Variable cost per unit (number; required; min 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | No | |
| revenue | No | |
| units_rounded_up | No | |
| contribution_margin | No | |
| contribution_margin_ratio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'read-only, no network' partially repeats structured data. The description nevertheless adds genuinely new behavioral facts: determinism (same input → same output) and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Well front-loaded: computation first, then when/not-for, then side effects and limits. The only inefficiency is the full Spanish/English duplication, which roughly doubles length without adding information, though it is consistent for a bilingual toolkit.
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 what remains: the formula, exactness expectations, determinism, absence of side effects, and operational limits. Nothing needed to call this three-parameter financial 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 baseline is 3, but the description adds value the schema cannot: the break-even formula ties fixed_costs, price and variable_cost together and implies the price > variable_cost validity condition. It does not enumerate each parameter, which the schema already does.
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 the concrete computation ('punto de equilibrio en unidades e ingresos, y margen de contribución') and even gives the formula fixed costs / (price − variable cost per unit), so the agent knows exactly what output to expect. It explicitly contrasts with the sibling margin-markup, making selection 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?
Has explicit 'Cuándo/When' (money, tax, or financial-math results requiring exact, reproducible rounding) and 'No para/Not for' (profit, gross margin % → margin-markup). Both the inclusion and exclusion conditions are named, with the alternative sibling called out by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-cagrTasa de crecimiento anual compuestaARead-onlyIdempotentInspect
Calcula la tasa de crecimiento anual compuesta (CAGR) y crecimiento total. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular el retorno sobre la inversión y su tasa anualizada (fin-roi). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the compound annual growth rate CAGR = (end / start)^(1 / years) − 1 and the total growth. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the return on investment and its annualized rate (fin-roi). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| years | Yes | Years (number; required; > 0; max 1000). | |
| end_value | Yes | End value (number; required; min 0). | |
| start_value | Yes | Start value (number; required; > 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cagr | No | |
| cagr_percent | No | |
| total_growth_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, yet the description still adds determinism, absence of network and stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result) that are not in the annotations. This is behavioral context beyond the structured fields, not a restatement.
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?
Well structured and front-loaded: formula first, then when/not-for/effects/limits. The full Spanish and English duplication doubles the length for the same content, which is the main conciseness cost.
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 unnecessary, and the description covers determinism and runtime limits. It does not mention edge outcomes such as a zero end_value or negative growth, which an agent might need to interpret results for a math 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 100%, so start_value, end_value and years are already documented, giving a baseline of 3. The formula does clarify how the three inputs combine (rate over years), but no per-parameter nuance (e.g. start_value > 0 edge case, end_value = 0) is added beyond the schema constraints.
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 ('Calcula') plus the exact resource and the formula: CAGR = (end / start)^(1 / years) − 1, and adds the total growth. It also explicitly names the sibling it is not (fin-roi), so an agent can distinguish it 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?
Contains explicit 'Cuándo' and 'No para' clauses, routing the agent to fin-roi for ROI/annualized return. The condition that selects this tool (exact, reproducible money/tax/financial-math results) is stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-compound-interestInterés compuestoARead-onlyIdempotentInspect
Calcula el valor futuro con interés compuesto A = P(1 + r/n)^(n·t), con aportes periódicos opcionales. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular el interés simple I = P·r·t y monto total, con tiempo en años, meses o días (fin-simple-interest). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the future value of a principal with compound interest A = P(1 + r/n)^(n·t), optional regular contributions at period end, and the interest earned. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the simple interest I = P·r·t and the total amount, with time in years, months or days (fin-simple-interest). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| years | Yes | Years (number; required; min 0; max 1000). | |
| principal | Yes | Initial principal (number; required; min 0). | |
| annual_rate | Yes | Annual nominal rate, decimal (number; required; min 0; max 10). | |
| contribution | No | Contribution per period (number; optional; default 0; min 0). | |
| compounds_per_year | No | Compounding periods per year (integer; optional; default 12; min 1; max 365). |
Output Schema
| Name | Required | Description |
|---|---|---|
| future_value | No | |
| interest_earned | No | |
| total_contributed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, yet the description adds genuinely new operational limits (64 KB JSON input, 1 s per call, 1 MB result) that matter for batching decisions. The 'solo lectura, sin red, sin estado guardado' and 'determinista' sentences largely restate the annotations, which is redundant but consistent, not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and formula before the when/not-for routing and limits, using clear labels. It is somewhat long and partially bilingual, with the redundant side-effects clause and a pointer fragment ('[EN completo / full EN: inputSchema.description]') that adds little, but no sentence is damaging.
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 the description covers purpose, routing, determinism, and hard limits. Everything an agent needs to select and call this tool correctly is present.
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 baseline already documents all five parameters. The description adds real semantics on top: it clarifies that contributions are optional and occur at period end, and the formula maps annual_rate and compounds_per_year to r and n, disambiguating nominal rate versus compounding frequency.
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 plus the exact formula: computes future value A = P(1 + r/n)^(n·t) with optional periodic contributions. Explicitly contrasts with fin-simple-interest (I = P·r·t), so an agent can distinguish it from siblings 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?
Provides an explicit 'Cuándo' clause (money/tax/financial math needing exact, reproducible results with rounding, cents and rates) and an explicit 'No para' clause naming the alternative fin-simple-interest and its criteria (simple interest, time in years/months/days). Both the positive and negative routing conditions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_toolBuscar herramienta en el catálogoARead-onlyIdempotentInspect
Busca entre las 492 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esquemas de entrada. Cuándo: aún no se sabe qué herramienta sirve para una tarea. No para: ejecutar una herramienta (eso lo hace tools/call). Efectos secundarios: ninguno. Determinista. Límites: consulta de hasta 200 caracteres, hasta 25 resultados.
EN: Searches the 492 tools of this server by keywords (English or Spanish) and an optional family, and returns the best matches with their input schemas. When: the right tool for a task is not known yet. Not for: running a tool (tools/call does that). Side effects: none (read-only, no network access, no stored state). Deterministic: the same query gives the same results. Limits: query up to 200 characters, up to 25 results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | Yes | Keywords, e.g. "sha256", "festivos colombia", "uuid v7" | |
| family | No | Optional family filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: determinism (same query, same results), no network access, no stored state, and concrete limits (200-char query, 25-result cap). Some of this restates what readOnlyHint/idempotentHint already declare, which keeps it from a 5, but the limits and no-network disclosure are genuine additions.
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 and well-structured with labeled When/Not for/Limits sections, but the entire content is duplicated in Spanish and English, roughly doubling length with no added information for an agent reading either version.
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, annotations cover the safety profile, and the description still supplies the scope, routing guidance, and limits an agent needs to call this discovery tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds that keywords may be in Spanish or English and that the family filter is optional, which is meaning beyond the enum field itself. The 200-character and 25-result limits duplicate maxLength/maximum already in the schema, so it isn't a full 5.
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 ("searches the 492 tools of this server") plus the mechanism (keywords in English or Spanish plus an optional family) and what it returns (best matches with input schemas). This is immediately distinguishable from the ~490 sibling operation tools it searches over.
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?
Explicit "When: the right tool for a task is not known yet" and "Not for: running a tool (tools/call does that)", naming the alternative and the condition that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-irrTasa interna de retorno (TIR)ARead-onlyIdempotentInspect
Calcula la tasa interna de retorno de flujos periódicos; null si no hay cambio de signo. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la TIR anualizada para flujos en fechas irregulares (fin-xirr). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the internal rate of return of periodic cash flows (Newton-Raphson with bisection fallback); returns null when no sign change exists. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the annualized internal rate of return for cash flows on arbitrary dates (fin-xirr). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| guess | No | Initial guess (number; optional; default 0.1; min -0.99; max 10). | |
| cash_flows | Yes | Cash flows; index 0 is time 0 (array of number; required; at least 2 items; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| irr | No | |
| reason | No | |
| irr_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: the numeric method (Newton-Raphson with bisection fallback), the null-on-no-sign-change outcome, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). The "no side effects / read-only / no network" sentence largely restates the readOnlyHint and openWorldHint annotations, so it earns a 4 rather than 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?
Strongly front-loaded: purpose, then when, then not-for, then effects and limits. The cost is a full bilingual duplication (with the EN half truncated to a pointer to inputSchema.description), which roughly doubles length without adding 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 an output schema (so return shape needs no explanation), rich annotations, and only two parameters, this covers everything an agent needs: what it computes, when to pick it, the sibling alternative, failure semantics, and runtime limits.
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 "periodic cash flows" adds a semantic constraint on cash_flows (uniform period spacing) that the schema itself does not state. The optional guess parameter and its Newton-Raphson role are left entirely 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 and resource ("computes the internal rate of return of periodic cash flows") plus the failure mode ("returns null when no sign change exists"). It explicitly separates itself from the nearest sibling, fin-xirr, so an agent can disambiguate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit "When:" clause scopes it to money/tax/financial-math calculations needing exact, reproducible results, and an explicit "Not for:" clause names fin-xirr with the distinguishing condition (annualized IRR on irregular dates). Both the positive and negative routing conditions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-loan-amortizationTabla de amortizaciónARead-onlyIdempotentInspect
Calcula la tabla de amortización completa (cuota, interés, capital, saldo) hasta 600 periodos. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la cuota fija de un préstamo amortizable (fin-loan-payment). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the full amortization schedule (payment, interest, principal, balance per period) for a fixed-payment loan, up to 600 rows; the last payment absorbs rounding. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the fixed periodic payment for an amortizing loan: PMT = P·r / (fin-loan-payment). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| periods | Yes | Number of payments (integer; required; min 1; max 600). | |
| principal | Yes | Loan amount (number; required; > 0). | |
| annual_rate | Yes | Annual nominal rate, decimal (number; required; min 0; max 10). | |
| periods_per_year | No | Payments per year (integer; optional; default 12; min 1; max 365). |
Output Schema
| Name | Required | Description |
|---|---|---|
| payment | No | |
| schedule | No | |
| total_interest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, yet the description adds real behavior beyond them: the last payment absorbs rounding, output is deterministic, and hard limits (64 KB input, 1 s per call, 1 MB result). The 'no side effects / read-only / no network' sentence largely restates the annotations, so it is not a full 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?
The EN block is well front-loaded with purpose, then labeled When / Not for / Side effects / Limits, but the entire content is duplicated in Spanish, roughly doubling token cost with no added information for the agent. Structure is good; duplication keeps it from earning a 5.
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. For a pure deterministic calculator, the description covers selection, the rounding caveat, and operational limits, leaving nothing an agent needs in order to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so principal, annual_rate, periods and periods_per_year are already documented in the schema; the description only adds the 600-row ceiling and the rounding convention. That is the expected baseline value, not extra parameter 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?
States a specific verb and resource ('computed the full amortization schedule: payment, interest, principal, balance per period') with scope ('up to 600 rows', 'fixed-payment loan'). It explicitly separates itself from the closest sibling, fin-loan-payment, so an agent can pick correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When:' (exact, reproducible money/tax/financial-math results with rounding and cents) and 'Not for:' routing the fixed periodic payment calculation to fin-loan-payment. Both the positive trigger and the exclusion are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-loan-paymentCuota de un préstamoARead-onlyIdempotentInspect
Calcula la cuota fija de un préstamo amortizable (anualidad), total pagado e intereses. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la tabla de amortización completa (fin-loan-amortization). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the fixed periodic payment for an amortizing loan: PMT = P·r / (1 − (1 + r)^−n), with total paid and total interest. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the full amortization schedule (fin-loan-amortization). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| periods | Yes | Number of payments (integer; required; min 1; max 1200). | |
| principal | Yes | Loan amount (number; required; min 0). | |
| annual_rate | Yes | Annual nominal rate, decimal (number; required; min 0; max 10). | |
| periods_per_year | No | Payments per year (integer; optional; default 12; min 1; max 365). |
Output Schema
| Name | Required | Description |
|---|---|---|
| payment | No | |
| total_paid | No | |
| total_interest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so restating "read-only, no network, no state" is largely redundant. It does add genuinely new disclosure: determinism (same input, same output) and hard limits (64 KB input, 1 s per call, 1 MB result) that no structured field carries.
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 purpose, then cleanly sectioned into When / Not for / Effects / Deterministic / Limits, which makes scanning easy. The one cost is that the entire block is duplicated in Spanish and English, roughly doubling length for an agent that only needs one language.
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, annotations cover the safety profile, and the description still covers formula, determinism, exclusions and operational limits. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented, and the baseline of 3 applies. The formula adds some connective meaning between principal, rate and periods, but it leaves r ambiguous (annual vs. periodic) and never mentions periods_per_year, so it does not meaningfully extend 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?
Names the exact resource and computation (fixed periodic payment for an amortizing loan) and even gives the closed-form formula, so an agent knows precisely what comes back (payment, total paid, total interest). It explicitly distinguishes itself from fin-loan-amortization, the closest sibling.
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?
"When" and "Not for" are stated explicitly, and the amortization-schedule alternative is named, which is the highest-risk confusion. The "when" clause itself is fairly generic financial-math language that could also describe fin-tvm, fin-compound-interest or fin-simple-interest, so routing among the other finance siblings is not fully resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-loan-prepaymentAbono extraordinario a un créditoARead-onlyIdempotentInspect
Calcula el efecto de un abono extraordinario a capital en un crédito de cuota fija tras cierto número de cuotas: el saldo y, para reducir plazo o reducir cuota, la nueva cuota, los periodos, los intereses y el ahorro. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la tabla de amortización completa (fin-loan-amortization). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the effect of an extra principal payment on a fixed-payment loan after a number of payments: the balance, and for both options (keep the payment and shorten the term, or keep the term and lower the payment) the new payment, periods, interest and interest saved. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| periods | Yes | Total number of payments of the loan (integer; required; min 1; max 1200). | |
| principal | Yes | Loan amount (number; required; > 0; max 1000000000000). | |
| rate_type | No | How annual_rate is quoted: nominal (divided by periods_per_year) or effective_annual (EA, as in Colombia) (optional; one of: nominal, effective_annual; default "nominal"). | nominal |
| prepayment | Yes | Extra payment applied to principal (number; required; > 0; max 1000000000000). | |
| annual_rate | Yes | Annual rate, decimal (0.18 = 18 %) (number; required; min 0; max 10). | |
| payments_made | Yes | Payments already made before the prepayment (integer; required; min 0; max 1199). | |
| periods_per_year | No | Payments per year (integer; optional; default 12; min 1; max 365). |
Output Schema
| Name | Required | Description |
|---|---|---|
| payment | No | |
| paid_off | No | |
| reduce_term | No | |
| periodic_rate | No | |
| reduce_payment | No | |
| excess_returned | No | |
| remaining_periods | No | |
| prepayment_applied | No | |
| balance_after_prepayment | No | |
| balance_before_prepayment | No | |
| interest_remaining_without_prepayment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds meaningful context beyond that: determinism (same input, same output), no network and no stored state, both reduction options computed, and concrete limits (64 KB input, 1 s/call, 1 MB result).
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?
Content is front-loaded with the core computation first, then when/not-for, side effects, determinism and limits — every sentence carries information. It is somewhat dense and the EN block largely duplicates the Spanish text and the schema description field, which adds mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deterministic financial calculator with an output schema and full annotation coverage, the description supplies everything else an agent needs: scope, the excluded alternative tool, side-effect profile, determinism and resource limits. Nothing material 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. The description adds genuine semantic value on top by clarifying that results are produced for both prepayment strategies (shorten term vs. lower payment) and by tying payments_made to the prepayment moment, which the schema alone does not convey.
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 precise verb and resource: it computes the effect of an extraordinary principal prepayment on a fixed-payment loan after N payments, and names the specific outputs (balance, new payment, periods, interest, savings for both options). This is clearly distinguishable from the sibling fin-loan-amortization, which is explicitly called out as out of scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an explicit 'No para' clause naming the alternative tool (fin-loan-amortization) for full amortization schedules, plus a 'Cuándo' clause about needing exact, reproducible financial math. The when-to-use framing is slightly generic (money/tax/financial-math precision) rather than prepayment-specific, and it does not mention fin-loan-payment as a related alternative, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-npvValor presente neto (VPN)ARead-onlyIdempotentInspect
Calcula el valor presente neto de flujos de caja a una tasa por periodo; el primer flujo es el tiempo 0. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la tasa interna de retorno de flujos periódicos (fin-irr). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the net present value of cash flows at a discount rate per period, with the first flow at time 0 (not discounted); Excel NPV() instead discounts the first flow. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the internal rate of return of periodic cash flows (fin-irr). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | Discount rate per period (decimal) (number; required; min -0.99; max 10). | |
| cash_flows | Yes | Cash flows; index 0 is time 0 (array of number; required; at least 2 items; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| npv | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds non-trivial context beyond them: determinism, no network/state, and concrete limits (64 KB input, 1 s per call, 1 MB result). It is silent on how the result is shaped only because an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then when/not-for, then side effects, determinism and limits — a clean template with no filler sentences. Slight redundancy because the ES/EN content overlaps and the trailing reference to inputSchema.description duplicates text the agent already receives.
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 two-parameter pure calculation with an output schema, everything an agent needs is present: computation convention, precision rationale, exclusion route to fin-irr, determinism and hard limits. Return values are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the decisive semantic detail the schema only gestures at: index 0 is time 0 and is NOT discounted, unlike Excel NPV(). That distinction prevents a classic off-by-one discounting error.
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 ('calcula el valor presente neto de flujos de caja a una tasa por periodo') and pins down the convention that matters: first flow at time 0 and not discounted. Explicitly contrasts with Excel NPV() and with sibling fin-irr, so an agent can discriminate 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?
Both branches are explicit: 'Cuándo' gives the selection condition (money/tax/financial math needing exact, reproducible results) and 'No para' names the excluded case and the sibling to use instead (fin-irr). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-option-pricePrecio de opción europeaARead-onlyIdempotentInspect
Valora una opción europea call y put con el modelo Black-Scholes-Merton (dividendo continuo) y devuelve delta, gamma, vega (por punto de volatilidad), theta (por año y por día) y rho (por punto de tasa). Tasas y volatilidad en %. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: valorar un bono de cupón fijo en fecha de cupón (fin-bond). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Prices a European call and put with the Black-Scholes-Merton model (continuous dividend yield) and returns delta, gamma, vega (per 1 vol point), theta (per year and per day) and rho (per 1 rate point). Rates and volatility in percent. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | Risk-free rate % (continuous) (number; required; min -20; max 100). | |
| spot | Yes | Underlying price (number; required; min 1e-9; max 1000000000000). | |
| years | Yes | Time to expiry in years (number; required; min 0.000001; max 100). | |
| strike | Yes | Strike price (number; required; min 1e-9; max 1000000000000). | |
| volatility | Yes | Volatility % per year (number; required; min 0.01; max 1000). | |
| dividend_yield | No | Dividend yield % (continuous) (number; optional; default 0; min -20; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| d1 | No | |
| d2 | No | |
| put | No | |
| call | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description reinforces that while adding genuinely new facts: deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). It would score higher if it said anything about error behavior or what happens at boundary values (e.g., years→0), but the added operational limits are real value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and outputs, then clearly labeled Cuándo / No para / Efectos / Límites blocks, so an agent can skim. It is slightly padded by carrying both Spanish and English versions of the same text, but no individual 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?
All six parameters and five required fields are documented in the schema, an output schema exists so return values need no prose, and annotations cover the safety profile. The description adds the remaining pieces an agent needs: units in percent, sibling exclusion, determinism and resource limits.
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 earns above that by pinning down conventions the schema does not: rates and volatility are in percent (not decimals), vega is per 1 volatility point, theta per year and per day, rho per rate point. Those unit conventions materially change how an agent fills and interprets the 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 and resource (valora una opción europea call y put) plus the exact model (Black-Scholes-Merton con dividendo continuo) and enumerates the returned Greeks. This is precise enough to distinguish it from fin-bond and other fin-* siblings 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?
Explicit 'Cuándo' (money/tax/financial-math results that must be exact and reproducible) and an explicit 'No para' naming the sibling fin-bond and the disqualifying case (fixed-coupon bond on a coupon date). Nothing is left to inference about when to pick this vs. the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-risk-ratiosIndicadores de riesgo de rentabilidadesARead-onlyIdempotentInspect
Calcula a partir de retornos periódicos (decimales, 0,01 = 1 %) el retorno anualizado (geométrico) y la volatilidad, los índices de Sharpe y Sortino frente a una tasa libre de riesgo anual, la máxima caída con su inicio y fin, y el mejor y peor periodo. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la estadística descriptiva de una lista de números (stats-describe). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes from periodic returns (decimals, 0.01 = 1%) the annualized return (geometric) and volatility, Sharpe and Sortino ratios against an annual risk-free rate, maximum drawdown with its start and end, and best/worst period. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| returns | Yes | Periodic returns as decimals (array of number; required; at least 2 items). | |
| risk_free_rate | No | Annual risk-free rate % (number; optional; default 0; min -50; max 100). | |
| periods_per_year | No | Periods per year (252 trading days, 12 months, 52 weeks) (integer; optional; default 252; min 1; max 100000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| periods | No | |
| best_period | No | |
| mean_return | No | |
| max_drawdown | No | |
| sharpe_ratio | No | |
| total_return | No | |
| worst_period | No | |
| sortino_ratio | No | |
| max_drawdown_end | No | |
| annualized_return | No | |
| max_drawdown_start | No | |
| annualized_volatility | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, closed-world and non-destructive, and the description still adds real information beyond them: no network, no stored state, deterministic same-input/same-output, plus concrete limits (64 KB JSON input, 1 s per call, 1 MB result). Those limits are operational constraints an agent cannot get from 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?
Front-loaded with the computed outputs, then cleanly labeled sections (Cuándo / No para / Efectos / Determinista / Límites) that are easy to scan. It loses a point for the trailing artifact '[EN completo / full EN: inputSchema.description]' and the duplicated full-EN text, which adds no selection value.
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 it correctly focuses on inputs, scope, guarantees and limits. For a deterministic pure-math tool with rich annotations and 100% schema coverage, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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; all three parameters are already documented in the schema with types, defaults and bounds. The description only reinforces the decimal convention (0.01 = 1%) and that the risk-free rate is annual, which the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact input (periodic returns as decimals) and enumerates every computed output: annualized geometric return, volatility, Sharpe, Sortino, max drawdown with start/end, best/worst period. An agent can distinguish this from stats-describe or fin-roi 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?
Explicit 'Cuándo' (financial math that must be exact/reproducible) and an explicit 'No para: calcular la estadística descriptiva de una lista de números (stats-describe)', naming the alternative and the condition that routes to it. That is the full when / when-not / alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-roiRetorno de la inversión (ROI)ARead-onlyIdempotentInspect
Calcula el retorno sobre la inversión (ROI) y ROI anualizado. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la tasa de crecimiento anual compuesta entre dos valores (fin-cagr). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the return on investment ROI = (gain − cost) / cost, and the annualized ROI when a holding period in years is given. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the compound annual growth rate between two values (fin-cagr). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Investment cost (number; required; > 0). | |
| years | No | Holding period in years (number; optional; > 0; max 1000). | |
| final_value | Yes | Final value / gain (number; required; min 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| profit | No | |
| roi_percent | No | |
| annualized_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds value beyond that: determinism guarantee, no network, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not describe the return shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded with the formula and the when/not-for routing first, and every clause carries information. It loses a point because the entire block is duplicated in Spanish and English, roughly doubling length without adding new semantics.
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 3-parameter pure-computation tool with full schema coverage, an output schema, and complete annotations, the description covers purpose, routing, determinism, side effects and operational limits. 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 adds real meaning: it explains that annualized ROI is produced only when a holding period in years is supplied, which clarifies the role of the optional `years` parameter beyond its schema text.
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 ("Calcula el retorno sobre la inversión (ROI) y ROI anualizado") and even gives the formula ROI = (gain − cost) / cost, so the computation is unambiguous. It explicitly names the sibling it is not (fin-cagr) and the distinction (CAGR between two values).
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?
Has explicit "Cuándo/When" and "No para/Not for" clauses, and the exclusion names the alternative tool fin-cagr with the condition that selects it. An agent can route between fin-roi and fin-cagr without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-simple-interestInterés simpleARead-onlyIdempotentInspect
Calcula el interés simple I = P·r·t y monto total, con tiempo en años, meses o días. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular el valor futuro con interés compuesto (fin-compound-interest). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the simple interest I = P·r·t and the total amount, with time in years, months or days (actual/365 or 360 basis). When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the future value with compound interest (fin-compound-interest). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | Time (number; required; min 0; max 100000). | |
| unit | No | Time unit (optional; one of: years, months, days; default "years"). | years |
| day_basis | No | Days per year (optional; one of: 365, 360; default "365"). | 365 |
| principal | Yes | Principal (number; required; min 0). | |
| annual_rate | Yes | Annual rate, decimal (number; required; min 0; max 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| interest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the basic annotations (readOnlyHint, deterministic), the description discloses vital operational constraints like computational limits (64 KB input, 1 s per call), deterministic behavior, and the specific handling of the time basis (365 or 360). This level of operational detail is highly valuable for a financial utility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is dense but highly efficient. It places the core function (calculation/formula) first, followed by usage context, warnings, and technical constraints in a logical flow. No sentence is redundant.
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 complexity of financial calculations involving multiple interacting parameters (time units, basis, principal, rate), the description covers all necessary ground. It informs the agent about the calculation logic, acceptable inputs, and the scope of its use within the available financial tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema is 100% covered, the description adds critical domain knowledge. It clarifies the meaning of 'time' (years, months, days) and explains the necessity of the 'day basis' (365 or 360), which are specific to financial calculation methods.
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 tool's purpose is explicitly stated by providing the formula (I = P·r·t) and describing the exact calculation of simple interest. Crucially, it identifies 'fin-compound-interest' as the relevant sibling it is not, preventing ambiguity in tool selection.
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 highly specific usage conditions ('when') and explicit exclusions ('Not for: computing the future value with compound interest'). This clearly gates the application of the tool to only appropriate financial contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-tvmValor del dinero en el tiempoARead-onlyIdempotentInspect
Resuelve la variable faltante del valor del dinero en el tiempo (pv, fv, pmt, nper o tasa). Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la cuota fija de un préstamo amortizable (fin-loan-payment). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Solves for the one missing TVM variable (pv, fv, pmt, nper or rate per period) given the others, with Excel sign convention (cash out negative) and payments at end or beginning. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the fixed periodic payment for an amortizing loan: PMT = P·r / (fin-loan-payment). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| fv | No | Future value (number; optional). | |
| pv | No | Present value (number; optional). | |
| pmt | No | Payment per period (number; optional). | |
| nper | No | Number of periods (number; optional; min 0; max 10000). | |
| rate | No | Interest rate per period as a decimal (0.05 = 5%) (number; optional; min -0.99; max 10). | |
| when | No | Payment timing (optional; one of: end, begin; default "end"). | end |
| solve_for | Yes | Unknown (required; one of: pv, fv, pmt, nper, rate). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fv | No | |
| pmt | No | |
| nper | No | |
| rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so 'sin efectos secundarios, solo lectura' is largely a restatement. The description does add value beyond them: the Excel cash-out-negative sign convention, end/begin payment timing, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The structure is strongly front-loaded — purpose, then Cuándo / No para / Efectos / Determinista / Límites — which is easy to scan. It loses a point for shipping the same content twice (Spanish block then English block), which inflates length without adding 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 and rich annotations, the description only needed to cover preconditions and call semantics, and it does: limits, determinism, sign convention, and the loan-payment exclusion. What remains thin is what happens on inconsistent inputs (which variable wins, error shape) — a minor gap given the existing annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics the schema does not: the Excel sign convention for cash flows and the fact that rate/payments are per period, which materially affect how pv/fv/pmt values must be signed. It stops short of explaining solver failure behavior when inputs are inconsistent.
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?
It names a specific verb and resource — solving for the one missing TVM variable — and enumerates the exact variables (pv, fv, pmt, nper, rate) plus the sign convention. It also explicitly names the sibling it is not (fin-loan-payment), so the agent can separate the two 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 'Cuándo' clause gives a positive trigger (money/tax/financial-math results that must be exact and reproducible) and the 'No para' clause gives an explicit exclusion routing to fin-loan-payment for amortizing-loan payments. Both when-to-use and when-not-to-use are stated, with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fin-xirrTIR con fechas irregulares (XIRR)ARead-onlyIdempotentInspect
Calcula la TIR anualizada para flujos en fechas irregulares (como XIRR de Excel). Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular la tasa interna de retorno de flujos periódicos (fin-irr). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the annualized internal rate of return for cash flows on arbitrary dates (actual/365, like Excel XIRR). When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the internal rate of return of periodic cash flows (fin-irr). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| flows | Yes | Dated cash flows (array of object; required; at least 2 items; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| xirr | No | |
| xirr_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the read-only/no-network restatement is partly redundant. The description still adds genuinely new behavioral facts: determinism, the actual/365 day-count convention, and hard limits (64 KB input, 1 s per call, 1 MB result).
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 core definition and organized into labeled When / Not for / Side effects / Deterministic / Limits segments, so an agent can scan it quickly. The full Spanish-then-English duplication roughly doubles the token cost for no added 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; the description covers everything else that matters for calling correctly — date convention, input/output size limits, timeout, determinism, and safety profile. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `flows` parameter already documents the date/amount shape, min/max items and an example. The description adds only the 'arbitrary dates' framing, which is real but marginal. Baseline 3 applies when the schema carries the parameter burden.
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 — 'Computes the annualized internal rate of return for cash flows on arbitrary dates' — and pins the convention (actual/365, like Excel XIRR). It explicitly names the sibling it is not (fin-irr for periodic flows), so an agent can separate the two 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?
'When: a money, tax or financial-math result has to be exact and reproducible' gives a positive selection context, and 'Not for: computing the internal rate of return of periodic cash flows (fin-irr)' gives an explicit exclusion plus the alternative. This is the when/when-not/alternative triad in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fiscal-periodAño y trimestre fiscalARead-onlyIdempotentInspect
Calcula, para una fecha y el mes de inicio del año fiscal, el año, trimestre y mes fiscal con sus límites. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: describir un año y mes (month-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes, for a date and the month the fiscal year starts, the fiscal year (named by its ending calendar year or its starting year), fiscal quarter, fiscal month and period bounds. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: describing a year and month (month-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| naming | No | Name FY by (optional; one of: end_year, start_year; default "end_year"). | end_year |
| start_month | No | Fiscal year start month 1-12 (integer; optional; default 1; min 1; max 12). |
Output Schema
| Name | Required | Description |
|---|---|---|
| year_end | No | |
| year_start | No | |
| fiscal_year | No | |
| quarter_end | No | |
| fiscal_month | No | |
| quarter_start | No | |
| fiscal_quarter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new operational context – no stored state, explicit limits (64 KB input, 1 s per call, 1 MB output) – though 'deterministic' largely restates idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The EN body is front-loaded and well-structured with When/Not-for/Side effects/Limits. However the full ES and EN versions are duplicated in the same field, and the trailing '[EN completo / full EN: inputSchema.description]' placeholder is noise that costs tokens without adding meaning.
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 spelled out; the description nonetheless enumerates the key outputs (fiscal year, quarter, month, bounds), and annotations cover the safety profile. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns a bump by explaining what 'naming' means semantically (fiscal year labeled by its ending calendar year vs its starting year), which the enum description alone does not convey.
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 (computes/calcula) plus the concrete outputs (fiscal year, quarter, fiscal month, period bounds) and the inputs that drive them (date + start month). It also names the naming convention choice, so an agent can distinguish this from date/calendar siblings.
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?
Explicit 'When:' clause (exact date/timezone/calendar results with offsets, DST, month ends, leap years) and 'Not for:' clause that names the competing sibling month-info. The positive and negative conditions are both present, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fraction-arithmeticAritmética de fraccionesARead-onlyIdempotentInspect
Suma, resta, multiplica o divide dos fracciones exactas y devuelve el resultado simplificado. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: simplificar una fracción a su mínima expresión, con forma mixta y decimal (fraction-simplify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds, subtracts, multiplies or divides two exact fractions (or mixed numbers/decimals) and returns the reduced result. When: a numeric result has to be exact or reproducible instead of estimated. Not for: reducing a fraction (fraction-simplify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First fraction (string; required; up to 200 chars). | |
| b | Yes | Second fraction (string; required; up to 200 chars). | |
| operation | Yes | Operation (required; one of: add, subtract, multiply, divide). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mixed | No | |
| decimal | No | |
| fraction | No | |
| numerator | No | |
| denominator | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description adds genuinely new context: determinism ('la misma entrada da la misma salida') and concrete limits (64 KB input, 1 s per call, 1 MB result). It partly restates the read-only/closed-world profile, which is why it stops short of 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?
Front-loaded with the action, then when/not-for/side-effects/limits in labeled blocks that each earn their place. The cost is a full bilingual duplication that roughly doubles length without adding information an English-only reader lacks.
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 purpose, selection criteria, alternative sibling, side effects, determinism and operational limits; the output schema exists, so return-value explanation is correctly omitted. An agent has everything needed to call it correctly and predict its behavior.
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 all three parameters, so the baseline is 3; the description goes beyond it by stating the accepted input forms (mixed numbers/decimals as well as fractions), which the schema's bare 'string up to 200 chars' does not convey. The operation enum is already fully documented in the schema, so nothing extra is added there.
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 (suma, resta, multiplica, divide) over a precise resource (dos fracciones exactas) plus the output shape (resultado simplificado). It names the sibling fraction-simplify as the thing it is not, so an agent can route between them 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?
'Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado' gives the selecting condition, and 'No para: simplificar una fracción ... (fraction-simplify)' names the excluded case and the alternative tool explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fraction-simplifySimplificar fracciónARead-onlyIdempotentInspect
Simplifica una fracción a su mínima expresión, con forma mixta y decimal. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: suma, resta, multiplica o dividir dos fracciones exactas y devolver el resultado simplificado (fraction-arithmetic). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Reduces a fraction ("6/8", "-10/4", "1 1/2" mixed, or an exact decimal "0.375") to lowest terms, with mixed-number and decimal forms. When: a numeric result has to be exact or reproducible instead of estimated. Not for: adds,ing subtracts, multiplies or divides two exact fractions (fraction-arithmetic). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| fraction | Yes | Fraction, mixed number or decimal (string; required; up to 200 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mixed | No | |
| decimal | No | |
| fraction | No | |
| numerator | No | |
| denominator | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description still adds value with determinism and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result), though determinism largely restates idempotentHint.
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-loads purpose, then when/not-for, side effects, determinism and limits in a scannable order. The full Spanish+English duplication doubles length, but the repetition is intentional for bilingual coverage 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?
For a single-parameter math tool with an output schema, the description covers what it returns (lowest terms, mixed, decimal), when to use it, the alternative, and operational limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is met by the schema. The description goes further by enumerating accepted input formats — "6/8", "-10/4", "1 1/2" mixed, "0.375" decimal — which tells the agent what to pass beyond the single schema example.
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?
Starts with a specific verb and resource ("Simplifica una fracción a su mínima expresión") and names the output forms (mixed, decimal) plus accepted input shapes. An agent can distinguish it from fraction-arithmetic and decimal-to-fraction from the 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?
Has explicit "Cuándo" (exact/reproducible numeric result, not estimated) and "No para" sections that name the alternative sibling fraction-arithmetic for add/subtract/multiply/divide. Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-bearingRumbo entre dos puntosARead-onlyIdempotentInspect
Calcula el rumbo inicial y final (grados desde el norte) entre dos puntos, con etiqueta de brújula. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular el punto de llegada desde un origen, una distancia y un rumbo (geo-destination). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the initial and final great-circle bearings (degrees clockwise from true north) from one point to another, with 16-point compass labels. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the point reached from a start, distance and bearing (geo-destination). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| from | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| compass | No | |
| final_bearing | No | |
| initial_bearing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, openWorld=false and non-destructive, so the 'Sin efectos secundarios / solo lectura' sentence largely just restates them. However, the definition adds real information that the annotations do not: determinism (same input, same output) and hard operational limits (64 KB JSON input, 1 s per call, 1 MB result), which matter for an agent that plans calls and batches inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core definition, which is followed by the When, Not-for, side-effects, determinism and limits facts; each piece of information is tagged, so an agent can locate any of them quickly. The main efficiency cost is that the whole block is written in parallel Spanish and English, roughly doubling length, and the side-effects sentence duplicates the annotations.
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 definition already includes what an agent needs in order to call this tool correctly: ordered endpoints, units (degrees clockwise from true north), and platform limits. An output schema exists and describes the return shape, so the definition's brief note on compass labels is sufficient rather than missing. No prerequisites, for example a coordinate format or WGS84 requirement, are 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 100%: both the 'from' and 'to' objects, their nested lat/lon fields and WGS84 ranges are fully documented with examples, so the schema does the heavy lifting. The description adds only that the two inputs are ordered endpoints ('from one point to another'), which is mild added value. The correct baseline is 3 when the schema is complete.
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 definition states a precise verb and resource ('Calculates the initial and final bearings... between two points') and adds the concrete output form (degrees clockwise from true north, 16-point compass labels). A key fact is that it explicitly names the sibling tool this is not meant to replace (geo-destination), so an agent can distinguish its purpose 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 contains an explicit "Not for" clause that names geo-destination and the exact scenario that selects it (computing the arrival point from an origin, distance and bearing), which is strong routing guidance. The positive "When" clause is broader and family-level ('coordinates, distances, bearings or areas'), so it overlaps with several geo siblings (geo-haversine, geo-midpoint, geo-polygon-area), leaving this half of the routing less precise.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-bounding-boxCaja delimitadora alrededor de un puntoARead-onlyIdempotentInspect
Calcula la caja delimitadora que encierra un círculo de radio dado alrededor de un punto, útil para filtros "a menos de N km". Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la caja delimitadora de un objeto GeoJSON (geojson-bbox). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the bounding box (min/max latitude and longitude) enclosing a circle of a given radius around a point, e.g. for "within N km" pre-filters; handles poles and the antimeridian. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the bounding box of a GeoJSON object (geojson-bbox). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "km"). | km |
| center | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| radius | Yes | Radius (number; required; > 0; max 20000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| max_lat | No | |
| max_lon | No | |
| min_lat | No | |
| min_lon | No | |
| crosses_antimeridian | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds genuine new context beyond that: pole and antimeridian handling, and hard limits (64 KB input, 1 s per call, 1 MB result). Only the determinism sentence largely restates idempotentHint.
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?
Content is well front-loaded (purpose, when, not-for, side effects, limits), but the Spanish and English blocks are near-verbatim duplicates and the trailing '[EN completo / full EN: inputSchema.description]' is noise. The same information could be delivered in about half the length.
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 annotations are rich, so the description needn't explain return values; it is nonetheless complete on side effects, determinism and resource limits. Only the underspecified positive 'when to use' leaves a small routing gap against the many geo-* 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% with per-property descriptions, enums and bounds, so the schema does the heavy lifting and baseline 3 applies. The description mentions 'radius' and implies unit choice via 'dentro de N km', but adds no semantics beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Computes the bounding box ... enclosing a circle of a given radius around a point', and explicitly names the sibling it is not (geojson-bbox). An agent can distinguish it from geo-haversine/geo-polygon-area 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 gives an explicit exclusion with a named alternative ('No para: calcular la caja delimitadora de un objeto GeoJSON (geojson-bbox)') and a concrete use case ('within N km' pre-filters). However, the 'Cuándo' clause ('calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados') is generic and overlaps a dozen geo siblings, so the positive routing is weaker than the negative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-destinationDestino desde distancia y rumboARead-onlyIdempotentInspect
Calcula el punto de llegada al recorrer una distancia con un rumbo inicial desde un punto. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular el rumbo inicial y final (geo-bearing). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the point reached by travelling a distance along a great circle from a start point on an initial bearing. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the initial and final great-circle bearings (geo-bearing). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "km"). | km |
| bearing | Yes | Bearing in degrees (number; required; min -360; max 360). | |
| distance | Yes | Distance (number; required; min 0; max 40000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Much of the side-effect sentence restates annotations (read-only, no network, no stored state ≈ readOnlyHint/openWorldHint/destructiveHint), which earns no credit. What is added beyond annotations is substantive: the great-circle (spherical) model, which is the key behavioural difference from an ellipsoidal tool like geo-vincenty, plus hard limits (64 KB input, 1 s per call, 1 MB result). Determinism largely duplicates idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and each clause (when / not-for / effects / determinism / limits) is a scannable label. The cost is that the entire block is duplicated verbatim in Spanish and English, roughly doubling length for identical 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 the limits and spherical-model note cover the main operational unknowns for a nested-object, 4-parameter tool. Minor gaps remain: nothing on behaviour at extreme bearings or antipodal/polar inputs, and no note that output coordinates are WGS84 decimal degrees.
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 lat/lon ranges, the unit enum and the bearing/distance bounds are already documented in the schema. The description adds only the semantic framing of 'bearing' as an initial bearing along a great circle, and says nothing about unit defaulting or bearing normalisation beyond what the schema shows. 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 and resource: compute the arrival point after travelling a distance on an initial bearing along a great circle from a start point. That is precise enough to separate it from geo-bearing, geo-midpoint, geo-haversine and geo-vincenty 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?
The 'No para' clause names a concrete alternative (geo-bearing) and the condition that selects it, which is genuinely useful routing. The positive 'Cuándo' clause, however, is over-broad — 'coordinates, distances, bearings or areas... from given points' describes most of the geo-* family, so it does not help an agent choose among geo-haversine, geo-path-length or geo-polygon-area.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geohash-decodeDecodificar geohashARead-onlyIdempotentInspect
Decodifica un geohash en su punto central, caja delimitadora y margen de error. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: codificar latitud/longitud como geohash de precisión 1-12 e informar el tamaño de la celda (geohash-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a geohash to its center point, bounding box and error margins. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: encoding a latitude/longitude as a geohash string of precision 1-12 and reporting the cell size in metres (geohash-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| geohash | Yes | Geohash (string; required; at least 1 chars; up to 12 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No | |
| bbox | No | |
| lat_error | No | |
| lon_error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the 'sin efectos secundarios / determinista' sentence mostly duplicates structured data. However, the description adds hard limits absent from annotations: 64 KB JSON input, 1 s per call, 1 MB result — genuinely new operational 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?
Content is well front-loaded (purpose first, then when/not-for, then effects and limits), but the full Spanish text is repeated verbatim in English, roughly doubling length without adding information. Useful, but half the tokens are redundant for any single reader.
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 schema exists, so explaining return values isn't required, and annotations cover the safety profile. With purpose, routing, determinism and resource limits all present, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage (type, 1-12 length bounds, example), so the schema carries the burden and the baseline is 3. The description mentions geohash implicitly only through precision-12 encoding talk in the exclusion clause; it adds no syntax or format guidance for the input itself.
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 ('Decodifica un geohash') plus the exact output contents (center point, bounding box, error margins), which no sibling provides. An agent can distinguish it from geohash-encode and geohash-neighbors 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?
Explicit 'Cuándo' clause lists the downstream computations that justify the call (coordinates, distances, bearings, areas), and 'No para' names the sibling geohash-encode with its precision 1-12 / cell-size behavior. Both the use case and the exclusion are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geohash-encodeCodificar geohashARead-onlyIdempotentInspect
Codifica latitud/longitud como geohash de precisión 1-12 e informa el tamaño de la celda. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: decodificar un geohash en su punto central, caja delimitadora y margen de error (geohash-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes a latitude/longitude as a geohash string of precision 1-12 and reports the cell size in metres. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: decoding a geohash to its center point, bounding box and error margins (geohash-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (number; required; min -90; max 90). | |
| lon | Yes | Longitude in decimal degrees (number; required; min -180; max 180). | |
| precision | No | Characters 1-12 (integer; optional; default 9; min 1; max 12). |
Output Schema
| Name | Required | Description |
|---|---|---|
| geohash | No | |
| cell_width_m | No | |
| cell_height_m | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds genuinely new behavioral facts: determinism (same input → same output) and concrete resource limits (64 KB JSON input, 1 s per call, 1 MB result), which annotations do not express.
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?
Each language block is front-loaded with the action first, then when/not-for/effects/limits, and no sentence is filler. The full duplication across Spanish and English doubles the length, but that serves locale parity 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?
With an output schema present and full schema coverage, the description need not explain return values, and it covers determinism, side effects and operational limits. The only shortfall is the overbroad 'when' clause pointing at distance/bearing computations, which may mislead selection.
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 has bounds, defaults and examples, so the schema carries parameter meaning. The description only repeats the 1-12 precision range and notes the cell-size output, adding no new syntax or format detail — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (encodes) and resource (latitude/longitude → geohash string), including the precision range 1-12 and the extra output (cell size in metres). It explicitly names the sibling geohash-decode as the opposite operation, so an agent can separate the two 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?
It follows a clear when/when-not/alternative structure and explicitly routes decoding to geohash-decode. However the stated 'when' — computing coordinates, distances, bearings or areas — describes capabilities this tool does not have (those belong to geo-haversine, geo-bearing, geo-distance siblings), which can mis-select the tool for distance work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geohash-neighborsVecinos de un geohashARead-onlyIdempotentInspect
Devuelve las 8 celdas geohash vecinas de la misma precisión, para búsquedas por cercanía. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: decodificar un geohash en su punto central, caja delimitadora y margen de error (geohash-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns the 8 neighboring geohash cells (n, ne, e, se, s, sw, w, nw) of the same precision, for proximity searches. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: decoding a geohash to its center point, bounding box and error margins (geohash-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| geohash | Yes | Geohash (string; required; at least 1 chars; up to 12 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| e | No | |
| n | No | |
| s | No | |
| w | No | |
| ne | No | |
| nw | No | |
| se | No | |
| sw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, and the description restates those — redundant but harmless. The genuinely additive disclosure is the operational envelope: 64 KB JSON input ceiling, 1 s per call, 1 MB result cap, plus an explicit determinism guarantee, which no annotation encodes.
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?
Each block is front-loaded and labelled (purpose, Cuándo, No para, Efectos secundarios, Determinista, Límites), with zero filler sentences. The full ES/EN duplication doubles the length, which is a real cost even if it is a house convention.
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 shape is partly pre-empted (the eight named neighbors) and an output schema exists for the rest, so no return-value explanation is owed. With one parameter, full annotation coverage and explicit limits, an agent has everything needed to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required string parameter and an example, so the schema carries the load and the baseline applies. The description only implies the precision-preservation rule ("de la misma precisión") without describing input validation or the meaning of the 1–12 char bounds 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?
Names a specific verb and resource ("Devuelve las 8 celdas geohash vecinas de la misma precisión") and enumerates the exact directional set returned (n, ne, e, se, s, sw, w, nw). It explicitly contrasts with the closest sibling, geohash-decode, so an agent can pick between them 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?
Provides an explicit "Cuándo" clause, a "No para" exclusion, and names the alternative tool (geohash-decode) by name. The when-clause is somewhat generic — mentioning distances, bearings and areas that this tool does not itself compute — which slightly blurs the targeting, but the front-loaded "para búsquedas por cercanía" recovers it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-haversineDistancia ortodrómica (haversine)ARead-onlyIdempotentInspect
Calcula la distancia ortodrómica entre dos puntos (fórmula haversine, Tierra esférica), en m, km, mi, nmi o ft. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la distancia sobre el elipsoide WGS84 entre dos puntos (geo-vincenty). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the great-circle distance between two lat/lon points on a spherical Earth (mean radius 6,371.0088 km), in m, km, mi, nmi or ft. Error up to about 0.5% versus the ellipsoid. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the ellipsoidal (WGS84) distance between two points (geo-vincenty). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| from | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "km"). | km |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| distance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description is consistent with all of them. It adds context the annotations do not carry: the ~0.5% error versus the ellipsoid, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result) — exactly the operational facts an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded and labeled (Cuándo / No para / Efectos / Determinista / Límites), but every sentence is duplicated in Spanish and English, roughly doubling length, and the trailing '[EN completo / full EN: inputSchema.description]' pointer is meta-noise. Half the text 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 values need not be explained. Combined with the stated error tolerance, unit options, resource limits and the explicit exclusion of geo-vincenty, an agent has everything required to choose 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%, so lat/lon ranges, the {lat, lon} shape and the unit enum are already fully documented in the schema. The description restates the five units but adds no format or syntax detail beyond it. Baseline 3 applies 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 and resource ('Calcula la distancia ortodrómica entre dos puntos' / computes great-circle distance), names the exact model used (haversine, spherical Earth, mean radius 6,371.0088 km) and the output units. It also names the sibling it is not (geo-vincenty / ellipsoidal WGS84), so an agent can separate it from the other distance tools 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?
Explicit 'Cuándo:' / 'When:' section gives the positive trigger (computing coordinates, distances, bearings or areas from given points) and an explicit 'No para:' / 'Not for:' that names the alternative tool geo-vincenty and the condition (ellipsoidal WGS84 distance) that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geojson-bboxCaja y centroide de GeoJSONARead-onlyIdempotentInspect
Calcula la caja delimitadora, número de vértices y centroide de cualquier geometría GeoJSON. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la caja delimitadora de un círculo alrededor de un punto (geo-bounding-box). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the bounding box [minLon, minLat, maxLon, maxLat], vertex count and vertex centroid of any GeoJSON geometry, Feature or FeatureCollection, validating coordinate ranges. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the bounding box of a circle around a point (geo-bounding-box). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| geojson | Yes | GeoJSON object (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bbox | No | |
| centroid | No | |
| vertices | No | |
| geometry_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description nonetheless adds concrete operational limits (64 KB input, 1 s per call, 1 MB result) and determinism, which are not in the annotations. It does restate read-only/no-network, which is redundant with annotations, keeping it just below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then organized into labeled clauses (When / Not for / Side effects / Deterministic / Limits). The bilingual duplication adds length but each clause carries distinct information and 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?
Output schema exists, yet the description still names the three returned values, and it covers limits, determinism and side effects. For a single-parameter read-only tool, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the baseline is 3; the description earns a bump by clarifying that the input may be any GeoJSON geometry, Feature or FeatureCollection and that coordinate ranges are validated, which the terse schema description ('GeoJSON object (object; required)') does not convey.
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 (computes bounding box, vertex count, centroid) and names the exact input domain (any GeoJSON geometry, Feature or FeatureCollection). It explicitly distinguishes itself from the sibling geo-bounding-box, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' clause (computing coordinates, distances, bearings or areas from given points) and an explicit 'Not for' clause pointing to geo-bounding-box for circle bounding boxes. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-midpointPunto medio geográficoARead-onlyIdempotentInspect
Calcula el punto medio sobre el círculo máximo entre dos puntos, o centro geográfico de varios puntos. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular el punto de llegada desde un origen, una distancia y un rumbo (geo-destination). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the midpoint along the great circle between two points, or the geographic center (mean of 3-D vectors) of up to 10,000 points. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the point reached from a start, distance and bearing (geo-destination). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | Points (array of object; required; at least 1 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and non-destructive, so the description earns credit mainly for adding hard limits (64 KB JSON input, 1 s per call, 1 MB result), determinism and no-network/no-stored-state guarantees. Those operational limits are genuinely useful and not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The structured What/When/Not-for/Effects/Deterministic/Limits layout is front-loaded and scannable. The only cost is that the entire block is duplicated in Spanish and English, which roughly doubles length for the same 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, return values need no explanation, and the description covers the remaining risks: which mode applies based on point count, limits, and determinism. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds real semantics the schema cannot express: the number of points changes behavior (two points = great-circle midpoint, several points = mean 3-D vector center). It still does not describe the {lat, lon} object shape in prose, but the schema and its examples do that well.
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 and resource ('computes the midpoint along the great circle between two points, or the geographic center of ... up to 10,000 points') and thereby distinguishes itself from the many geo-* siblings. An agent can tell it apart from geo-haversine, geo-destination and geo-bearing 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?
It gives an explicit 'Not for' clause naming the sibling geo-destination and the exact scenario (origin + distance + bearing), which is strong routing guidance. The 'When' clause is clear in context but slightly loose — it mentions computing distances, bearings and areas, which this tool does not actually return, so the positive trigger is fuzzier than the negative one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-nearestPuntos más cercanosARead-onlyIdempotentInspect
Ordena puntos candidatos por distancia desde un origen y devuelve los k más cercanos. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la distancia ortodrómica entre dos puntos (geo-haversine). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Ranks up to 10,000 candidate points by great-circle distance from an origin and returns the k nearest with their distances and original indices. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the great-circle distance between two lat/lon points on a spherical Earth (geo-haversine). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | How many (integer; optional; default 3; min 1; max 1000). | |
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "km"). | km |
| origin | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| candidates | Yes | Candidates; extra fields like id/name are returned (array of object; required; at least 1 items). | |
| max_distance | No | Ignore farther than this (number; optional; > 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false. The description adds genuinely useful behavioral information beyond those annotations: no network access, no stored state, determinism, and concrete input/output size and time limits. It does repeat the read-only/no-side-effects point, so it falls just 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?
Each language version is front-loaded and efficient, covering purpose, usage, side effects, determinism, and limits without filler. The bilingual duplication is helpful for accessibility but does double the overall length.
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 five parameters, nested objects, an output schema, and rich annotations, the description is complete enough for correct invocation. It covers purpose, routing to alternatives, safety, determinism, and operational limits; return formatting is already 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 100%, so the input schema already documents k, unit, origin, candidates, and max_distance thoroughly. The description mentions k nearest results but does not add syntax, edge-case, or format details beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: ranks candidate points by distance from an origin and returns the k nearest with distances and indices. Explicitly distinguishes itself from geo-haversine, so an agent can route between these sibling tools 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?
Provides explicit 'When' and 'Not for' sections. The 'Not for' clause names the alternative tool, geo-haversine, and the precise condition that should route to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-path-lengthLongitud de un recorridoARead-onlyIdempotentInspect
Calcula la longitud total de una ruta por varios puntos y distancia por tramo. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la distancia ortodrómica entre dos puntos (geo-haversine). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the total great-circle length of a path through up to 100,000 points, with per-segment distances (first 1,000). When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the great-circle distance between two lat/lon points on a spherical Earth (geo-haversine). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "km"). | km |
| points | Yes | Points in order (array of object; required; at least 2 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| total | No | |
| segments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive context beyond the annotations: no network access, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). These operational constraints are not derivable from readOnlyHint/idempotentHint/openWorldHint and directly affect how an agent should size its 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?
Front-loaded with the purpose and organized by explicit labels (When / Not for / Side effects / Deterministic / Limits), which scans well. It loses a point for being duplicated verbatim in Spanish and English and for the over-broad 'bearings or areas' scope claim, which is noise for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, deterministic computation with full schema coverage, an output schema, and complete annotations, nothing an agent needs to call it correctly is missing: scope, exclusion, side-effect profile, determinism, and resource limits are all present.
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; the description earns a bump by disclosing the 100,000-point cap and the 1,000-segment truncation of per-segment output, the latter of which appears nowhere in the schema. It does not restate the unit enum, but the schema already handles that fully.
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: computes total great-circle length of a path through up to 100,000 points, plus per-segment distances (first 1,000). It is immediately distinguishable from geo-haversine, which the description names explicitly as the wrong tool for two-point distance.
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 an explicit 'Not for' clause naming the alternative (geo-haversine) and the condition that selects it, which is exactly what routing needs. The 'When' clause is weaker: 'coordinates, distances, bearings or areas' describes the whole geo family rather than this tool's output, since this tool returns only length and per-segment distances, not bearings or areas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-point-in-polygonPunto dentro de polígonoARead-onlyIdempotentInspect
Verifica si un punto está dentro de un polígono (con huecos opcionales), p. ej. zonas de entrega. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular el área y el perímetro de un polígono (geo-polygon-area). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Tests whether a point lies inside a polygon (ray casting on lon/lat, planar approximation; holes supported via additional rings), e.g. for delivery zones. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the area and perimeter of a polygon (geo-polygon-area). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| point | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| polygon | Yes | Rings: first outer, others holes; each ring is [[lon,lat],…] (array of array; required; at least 1 items; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| inside | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, idempotent, closed-world), and the description still adds real value on top: deterministic output, no network, no stored state, and hard limits (64 KB JSON input, 1 s per call, 1 MB result). The planar-approximation caveat is a meaningful accuracy disclosure an agent would not otherwise know.
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 operation, then cleanly labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites), which is easy to scan. The full Spanish and English renderings duplicate the same content, roughly doubling length without adding information an agent needs twice.
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 parameters, side effects and limits are all covered. The one meaningful gap is boundary behavior — whether a point exactly on an edge or vertex counts as inside — which is the classic ambiguity for point-in-polygon and 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%, so both parameters and the ring ordering ('first outer, others holes') are already documented in structured data. The description reinforces the holes-via-additional-rings convention and the lon/lat planar assumption, but adds nothing about coordinate order or input limits per ring beyond what the schema states. 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 precise verb+resource: tests whether a point lies inside a polygon, including optional holes, with the algorithm named (ray casting on lon/lat, planar approximation). It explicitly distinguishes itself from the closest sibling (geo-polygon-area), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' / 'No para' pair and names the alternative tool (geo-polygon-area) with the condition that selects it. The positive 'when' clause is somewhat generic boilerplate shared across the geo suite ('coordinates, distances, bearings or areas'), which adds little discrimination, but the negative case is precise.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-polygon-areaÁrea y perímetro de polígonoARead-onlyIdempotentInspect
Calcula el área (exceso esférico) y perímetro de un polígono lon/lat, en m², km², hectáreas y acres. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: verificar si un punto está dentro de un polígono (geo-point-in-polygon). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the area (spherical excess on the mean-radius sphere) and perimeter of a lon/lat polygon ring, in m², km², hectares and acres. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: testing whether a point lies inside a polygon (geo-point-in-polygon). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ring | Yes | Ring as [[lon,lat],…] (closing point optional) (array of array; required; at least 3 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| acres | No | |
| area_m2 | No | |
| area_km2 | No | |
| hectares | No | |
| perimeter_m | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, but the description adds information the annotations do not carry: determinism, the 64 KB input cap, the 1 s per-call budget and the 1 MB result limit. That is genuine operational context beyond structured fields, though nothing is said about how degenerate rings (self-intersection, winding order) are handled.
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?
Content is well front-loaded and labeled (Cuándo / No para / Efectos / Determinista / Límites), which makes it easy to scan. But the entire text is duplicated in Spanish and English, roughly doubling length with zero added information for any single reader, which undercuts conciseness.
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 computation with an output schema, annotations and full schema coverage, the description supplies everything else an agent needs: output units, the area model, determinism, and explicit size/time limits. No material gap remains.
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 a worked example, so the schema carries the semantics. The description repeats the lon/lat framing but adds no format or edge-case detail (winding order, closing-point handling, antimeridian) beyond what the schema already states. 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 (computes area and perimeter), the exact resource (a lon/lat polygon ring), the algorithm (spherical excess on the mean-radius sphere) and the output units (m², km², hectares, acres). It also names the sibling it must not be confused with, geo-point-in-polygon, so an agent can separate the two 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 'No para' line gives an explicit exclusion with the alternative named. However the positive 'Cuándo' clause ('coordinates, distances, bearings or areas have to be computed from given points') is broad enough to also describe geo-haversine, geo-bearing and geo-path-length, so the routing guidance is clearer on what to avoid than on what to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo-vincentyDistancia elipsoidal (Vincenty)ARead-onlyIdempotentInspect
Calcula la distancia geodésica sobre el elipsoide WGS84 (fórmula inversa de Vincenty) con rumbos inicial y final. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: calcular la distancia ortodrómica entre dos puntos (geo-haversine). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the geodesic distance and initial/final bearings between two points on the WGS84 ellipsoid using Vincenty's inverse formula (millimetre accuracy); reports non-convergence for near-antipodal points. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the great-circle distance between two lat/lon points on a spherical Earth (geo-haversine). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| from | Yes | Point as {lat, lon} in decimal degrees (WGS84) (object; required). | |
| unit | No | Distance unit (optional; one of: m, km, mi, nmi, ft; default "m"). | m |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | |
| distance | No | |
| converged | No | |
| final_bearing | No | |
| initial_bearing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description goes well beyond: millimetre accuracy, reporting non-convergence for near-antipodal points, determinism, no network or stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). These are operational traits 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?
Front-loaded with purpose, then scoped sections for when/not-for/side effects/determinism/limits — easy to scan. Minor waste from the EN text duplicating the inputSchema description verbatim and the bilingual repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description still covers the edge case most likely to surprise an agent (non-convergence for near-antipodal points) plus limits and side effects. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with nested lat/lon descriptions and the unit enum default documented in the schema, so baseline is 3. The description adds no parameter-level detail beyond that (e.g., it never mentions the unit parameter or the {lat, lon} object shape), so it does not exceed the schema's contribution.
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 (computes geodesic distance and initial/final bearings on the WGS84 ellipsoid via Vincenty's inverse formula) plus accuracy and non-convergence behavior. Explicitly distinguishes itself from the sibling geo-haversine (spherical great-circle distance), so an agent can pick between them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When' (coordinate/distance/bearing/area computations from given points) and 'Not for' (great-circle distance on a spherical Earth — use geo-haversine) sections. The alternative tool is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtin-check-digitDígito de control GS1ARead-onlyIdempotentInspect
Calcula el dígito de control GS1 (mod 10) para un GTIN/EAN/UPC/SSCC. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar códigos de barras EAN-8, UPC-A, EAN-13 y GTIN-14 (gtin-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body of 7-17 digits and returns the full code. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating GTIN-8 (gtin-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Digits without check digit (string; required; pattern ^\d{7,17}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| full | No | |
| check_digit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description still adds real value by disclosing determinism and concrete limits (64 KB input, 1 s per call, 1 MB result) that no structured field carries. Some of the 'no network access, no stored state' phrasing merely restates 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?
Front-loaded with the operation, then labelled blocks (When / Not for / Side effects / Deterministic / Limits) that are easy to scan. The cost is that the entire text is duplicated verbatim in Spanish and English, roughly doubling length without adding 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 single-parameter pure function with an output schema, the description covers everything an agent needs: what is computed, what to send, what is not in scope, side effects, determinism, and hard limits. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is already documented, but the description adds meaning the schema does not: the body is 7-17 digits and excludes the check digit, and the tool returns the full code. That disambiguates the schema's 'body' wording and the example value.
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: computes the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body, and explicitly names the sibling that does the other job (gtin-validate). An agent can tell exactly what this returns (the full code) versus what it does not.
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 'When' clause is concrete (verify an identifier's format and check digit offline before it is used) and the 'Not for' clause routes to gtin-validate. However, the Spanish and English 'Not for' lists disagree — ES excludes EAN-8/UPC-A/EAN-13/GTIN-14 while EN excludes only GTIN-8 — which leaves a borderline case ambiguous for exactly the code types the tool advertises it supports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtin-validateValidar EAN/UPC/GTINARead-onlyIdempotentInspect
Valida códigos de barras EAN-8, UPC-A, EAN-13 y GTIN-14 (dígito GS1) e identifica tipo y prefijo (p. ej. 770 = Colombia). Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: calcular el dígito de control GS1 (gtin-check-digit). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates GTIN-8 (EAN-8), GTIN-12 (UPC-A), GTIN-13 (EAN-13) and GTIN-14 barcodes with the GS1 mod-10 check digit and identifies the type and GS1 prefix hints (e.g. 770 = Colombia). When: an identifier's format and check digit have to be verified offline before it is used. Not for: computing the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body of 7-17 digits and returning the full code (gtin-check-digit). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Barcode digits (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| check_digit | No | |
| gs1_prefix_hint | No | |
| expected_check_digit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, yet the description still adds genuinely new context: no network access, no stored state, deterministic output, a 64 KB input cap, a 1 s per-call budget and a 1 MB result cap. That is real rate/limit disclosure not present in the structured fields, though the safety profile itself is largely a restatement 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?
Ordering is strong and front-loaded: purpose, when, not-for, side effects, determinism, limits. However the full text appears twice (ES then EN) and is duplicated a third time in inputSchema.description, which inflates token cost for a one-parameter tool without adding 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 explained; the description nonetheless covers exclusions, determinism, side effects and operational limits. For a single-parameter validation tool, nothing an agent needs in order 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 description coverage is 100% and the single code parameter is documented with maxLength 64 and an example, so the baseline is 3. The description adds no syntax guidance beyond that (e.g. whether separators or spaces are tolerated); the '770 = Colombia' detail describes output, not the input parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names specific verbs and resources: validates EAN-8, UPC-A, EAN-13 and GTIN-14 including the GS1 mod-10 check digit, and returns type plus prefix hints. It explicitly separates itself from the sibling gtin-check-digit, so an agent can choose 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?
Gives an explicit when-condition (verify format and check digit offline before the identifier is used) and an explicit not-for clause naming the alternative gtin-check-digit together with the case that selects it (computing the check digit for a 7-17 digit body). No inference is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
h2o-rankH2O: priorizar oportunidadesARead-onlyIdempotentInspect
Ordena hasta 8 oportunidades candidatas (H2O · Hallazgo, Homologación y Oportunidad) con conteos de evidencia, factibilidad y esfuerzo dados: BUILD_CANDIDATE_MODELLED, INVESTIGATE, DISCARD, ABSTAIN o DENY, con valor de la información y posteriores. Puntos modelados, no dinero. Cuándo: un agente tiene necesidades o ideas candidatas con conteos de evidencia y esfuerzo aproximados y debe elegir cuáles construir, comprobar primero o descartar. No para: pronosticar ingresos con una serie numérica pasada (stats-forecast); ni contactar ni pagar a nadie, algo que nunca hace. Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Ranks up to 8 candidate opportunities (H2O · Hallazgo, Homologación y Oportunidad) from caller-supplied evidence counts, feasibility and effort: BUILD_CANDIDATE_MODELLED, INVESTIGATE,… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| candidates | Yes | Candidate opportunities (needs or ideas), 1 to 8 (array of object; required; at least 1 items; up to 8 items). | |
| total_sources | No | Total sources the counts are a share of (default: the sum over the candidates that reach scoring; needed when only one does) (integer; optional; min 1; max 1000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No | |
| units | No | |
| ranked | No | |
| based_on | No | |
| warnings | No | |
| decisions | No | |
| spend_usd | No | |
| messages_sent | No | |
| model_version | No | |
| evidence_class | No | |
| truth_boundary | No | |
| external_writes | No | |
| build_authorized | No | |
| network_requests | No | |
| model_assumptions | No | |
| contact_authorized | No | |
| total_sources_used | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: declares determinism, no network access, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). These are consistent with readOnlyHint/idempotentHint/destructiveHint=false and add usable context an agent cannot get from structured fields 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?
Front-loads the action, then the decision outputs, then when/when-not, side effects and limits — a good order. The ES and EN versions are full duplicates, which doubles the length for no additional information, though the redundancy is deliberate for language coverage.
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 stateless ranking computation with an output schema (so return values need no prose) and a well-covered schema, the description supplies everything else an agent needs: trigger condition, exclusion, safety profile, determinism and hard limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents id, flags, sources, build_days, check_days, feasibility, value_units, read_allowed and total_sources. The description only alludes to 'conteos de evidencia, factibilidad y esfuerzo' without adding syntax or defaults, 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 concrete verb and resource — ranking up to 8 candidate opportunities — and enumerates the exact output decision classes (BUILD_CANDIDATE_MODELLED, INVESTIGATE, DISCARD, ABSTAIN, DENY) plus the scoring basis. Also explicitly distinguishes itself from the nearest sibling, stats-forecast.
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?
'Cuándo' gives the triggering situation (an agent has candidate needs/ideas with rough evidence counts and effort and must pick which to build, check or drop), and 'No para' names the alternative (stats-forecast) with the condition that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hamming-distanceDistancia de HammingARead-onlyIdempotentInspect
Cuenta posiciones distintas entre dos cadenas de igual longitud (o bits en hex). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular la distancia de edición de Levenshtein entre dos cadenas y similitud normalizada (levenshtein-distance). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts positions where two equal-length strings (by code point) or hex byte strings (bit level) differ. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the edit distance (levenshtein-distance). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First (string; required). | |
| b | Yes | Second (string; required). | |
| mode | No | Compare characters or bits of hex input (optional; one of: chars, hex_bits; default "chars"). | chars |
Output Schema
| Name | Required | Description |
|---|---|---|
| distance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the restated 'no side effects, no network, no stored state' is partly redundant. The description does add genuinely new operational context beyond annotations: determinism, a 64 KB JSON input cap, 1 s per call, and a 1 MB result cap.
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 definition, then labeled clauses for when/not-for/effects/limits, which is easy to scan. It is somewhat long because the entire content is duplicated in Spanish and English, costing some density but not clarity.
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; the description still covers the input constraint (equal length), the mode semantics, side effects, determinism and quotas. Nothing an agent needs to invoke this 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 parameters are already documented; the description adds the non-obvious constraint that the two strings must be of equal length and explains what 'hex_bits' means at the bit level. That meaning is not in the schema and prevents a common misuse.
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: counting differing positions between two equal-length strings, and clarifies the two comparison granularities (code points vs hex bits). It also names the sibling it must not be confused with, so an agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' section gives the selecting condition (exact transform/compare/measure rather than approximate) and an explicit 'No para' exclusion pointing to levenshtein-distance. Both when-to-use and when-not are present with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-blake2b512Hash BLAKE2b-512ARead-onlyIdempotentInspect
Calcula el resumen BLAKE2b-512 (RFC 7693), sin clave. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-512 (hash-sha512). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the BLAKE2b digest with 512-bit output (RFC 7693), unkeyed. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-512 digest (hash-sha512). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, and the description still adds value: no network, no stored state, deterministic output, plus runtime limits (1 s per call, up to 1 MB result). However the stated '64 KB' input limit conflicts with the schema's maxLength of 1048576 (1 MB), which could mislead an agent about acceptable input size.
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 is front-loaded and each language block is internally tight with zero filler. The full content is duplicated in Spanish and English, which doubles length without adding information for a given agent, though it matches the multilingual pattern of this tool set.
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 read-only annotations, an output schema, and fully documented params, the description carries its remaining burden well by adding determinism and limit context. The 64 KB vs 1 MB maxLength discrepancy is the one thing that could cause a misjudged call.
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 both enums are documented in the schema, so baseline 3 applies. The description adds only that no key is used; it never mentions input_encoding/output_encoding or encoding semantics 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?
States a specific verb (computes), resource (BLAKE2b digest, 512-bit output, RFC 7693) and a qualifying property (unkeyed), which pins down the algorithm among ~30 hash siblings. An agent can distinguish it from hash-blake2s256 or hash-sha512 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?
Explicit 'When' clause gives concrete triggers (comparing content, matching a published checksum) and an explicit 'Not for' that names the alternative tool (hash-sha512). Both the use case and the exclusion are spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-blake2s256Hash BLAKE2s-256ARead-onlyIdempotentInspect
Calcula el resumen BLAKE2s-256 (RFC 7693), sin clave. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the BLAKE2s digest with 256-bit output (RFC 7693), unkeyed. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, no-network and idempotent, yet the description adds real value on top: explicit limits (JSON input up to 64 KB, 1 s per call, result up to 1 MB) and the fact the digest is unkeyed. Minor ding: the stated 64 KB input cap conflicts with the schema's maxLength of 1,048,576 characters, and "solo lectura, sin red" largely restates 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?
Each language block is front-loaded with the operation, then when/when-not, then side effects and limits – no filler sentences. The bilingual duplication doubles the length, but that appears intentional for a Spanish/English service 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?
Output schema exists so return values needn't be explained, and annotations cover the safety profile; the description fills in determinism, limits, and the sibling exclusion. The only gap is the 64 KB limit conflicting with the schema's 1 MB maxLength, which could confuse an agent about truncation behavior.
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 three parameters (data, input_encoding, output_encoding) are already documented with enums and defaults. The description only implies byte-vs-text input via "texto o de unos bytes" and never explains how hex/base64 input or hex/base64url output encoding are selected, so this is 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 (computes the BLAKE2s digest with 256-bit output, RFC 7693, unkeyed), which pins the exact algorithm variant. It immediately disambiguates from the closest sibling by naming hash-sha256 as out of scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"When" gives a concrete use case (compare content, match a published checksum) and "Not for" names one alternative explicitly. However, the sibling list contains ~20 other hash tools (hash-blake2b512, hash-sha3-256, hash-shake128, hash-multi), and the description only routes away from SHA-256, leaving the rest to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-keccak256Keccak-256 (Ethereum)ARead-onlyIdempotentInspect
Calcula el Keccak-256 con el relleno original de Keccak, como en Ethereum (direcciones, selectores). Distinto de SHA3-256. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA3-256 (hash-sha3-256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the Keccak-256 with original Keccak padding, as used by Ethereum for addresses, function selectors and event topics. Differs from SHA3-256. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA3-256 digest (hash-sha3-256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, yet the description still adds real value: determinism, no network, no stored state, and concrete limits (1 s per call, 1 MB result). The limit statement is partially undermined by 'entrada JSON de hasta 64 KB' while the schema allows maxLength 1048576, an internal inconsistency that costs a point.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The body is front-loaded and clearly labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), with no filler sentences. The trailing '[EN completo / full EN: inputSchema.description]' pointer is meta-noise that slightly dilutes an otherwise tight 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?
An output schema exists, so return values need no explanation, and the description covers purpose, selection criteria, determinism and limits. The only gap is the conflicting input-size figure (64 KB in prose vs 1 MB in schema), which an agent could misread as a hard cap.
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 both enums (input_encoding, output_encoding) are documented in the schema, so the baseline is 3. The description only hints at 'texto o unos bytes' to imply encoding choice and adds no syntax or format guidance 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 ('Calcula el Keccak-256 con el relleno original de Keccak') and immediately scopes it to the Ethereum use case (addresses, function selectors, event topics). It also explicitly disambiguates from the most confusable sibling, SHA3-256, naming hash-sha3-256.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' clause (need an exact digest of text/bytes, compare content, match a published checksum) and an explicit 'No para' clause routing to hash-sha3-256. This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-md5Hash MD5ARead-onlyIdempotentInspect
Calcula el resumen MD5. No es criptográficamente seguro; solo para checksums o compatibilidad. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the MD5 digest (128-bit). Not collision resistant: suitable only for checksums, cache keys or legacy interop, never for security. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuinely new context: determinism, no network or stored state, the non-collision-resistant caveat, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). Those operational limits are not in the annotations or schema.
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?
Well-structured with labelled When / Not for / Side effects / Deterministic / Limits sections and the purpose front-loaded. However, the entire content is duplicated verbatim in Spanish and English, roughly doubling length for no additional 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 small pure-function hashing tool with an output schema and full annotation coverage, the description supplies everything an agent needs: purpose, exclusions, determinism, safety caveat, and size/time limits. Return format need not be explained since an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enum values and defaults fully documented, so the schema carries parameter meaning. The description only loosely gestures at 'text or bytes', which hints at input_encoding without naming the utf8/hex/base64 options or the output_encoding choices; 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 and resource ('Computes the MD5 digest (128-bit)') and immediately qualifies the algorithm's security properties. It explicitly distinguishes itself from the sibling hash-sha256, so an agent can pick between them 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?
Provides an explicit 'When:' clause (exact digest of given text/bytes, comparing content, matching a published checksum) and an explicit 'Not for:' clause naming the alternative hash-sha256. It also scopes the tool to checksums/cache keys/legacy interop and excludes security use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-multiVarios hashes a la vezARead-onlyIdempotentInspect
Calcula varios resúmenes (md5, sha1, sha256, etc.) de una entrada en una sola llamada. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes several digests (md5, sha1, sha256, sha512, sha3-256, blake2b512, keccak256, crc32) of one input in a single call. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| algorithms | No | Algorithms to compute (array of string; optional; default ["md5","sha1","sha256"]; at least 1 items; up to 8 items). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| md5 | No | |
| sha1 | No | |
| crc32 | No | |
| sha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description adds genuinely new context: determinism and explicit operational limits (64 KB JSON input, 1 s per call, 1 MB result). The size limits are worth flagging because the schema's maxLength is 1048576 (~1 MB), which conflicts with the stated 64 KB input cap.
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?
Sentences are short, labeled (When / Not for / Side effects / Deterministic / Limits) and front-loaded, so an agent can scan for the routing decision quickly. The cost is a full Spanish/English duplication that roughly doubles length, though that appears to be a deliberate bilingual convention given the Spanish 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 a 100%-covered schema, full annotations and an output schema, the description carries only the burden of routing and constraints, and it does both. The only completeness gap is the input-limit figure disagreeing with the schema's maxLength, which could mislead an agent sizing its inputs.
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 reinforces that input may be text or bytes and lists the digest algorithms, but it never explains the input_encoding parameter (utf8/hex/base64), which is the one parameter whose meaning is not self-evident from the name alone.
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 names a specific verb and resource — computing multiple digests (md5, sha1, sha256, sha512, etc.) of one input in a single call — and enumerates the algorithm set. This makes it immediately distinguishable from the single-algorithm siblings such as hash-md5 or hash-sha512.
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 an explicit 'When' (comparing content, matching a published checksum) and an explicit 'Not for' that routes to hash-sha256. The exclusion is only partial, since the sibling set contains hash-md5, hash-sha1, hash-sha512 and many others that are equally single-algorithm alternatives, but the usage context itself is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-ripemd160Hash RIPEMD-160ARead-onlyIdempotentInspect
Calcula el resumen RIPEMD-160, usado en HASH160 de Bitcoin. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the RIPEMD-160 digest (160-bit), used inside Bitcoin HASH160. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, closed-world), the description adds determinism guarantees and concrete operational limits: 64 KB JSON input, 1 s per call, 1 MB result. These quota/timeout constraints are not derivable from the annotation block and materially affect invocation planning.
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?
Content is front-loaded with purpose, then labeled fields (Cuándo / No para / Efectos / Límites) that scan quickly. The full Spanish-then-English duplication roughly doubles the text, which is a deliberate bilingual pattern rather than waste, but it slightly dilutes density.
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 not needed. The description covers purpose, alternatives, side effects, determinism, and size/time limits — everything required to call a pure hash function correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both optional parameters carry enum values with defaults, so the schema fully documents input_encoding and output_encoding. The description adds no syntax or format guidance beyond the schema, which is acceptable but not additive; 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 and resource ('Computes the RIPEMD-160 digest (160-bit)') and adds the concrete use domain ('used inside Bitcoin HASH160'). It explicitly distinguishes itself from the sibling hash-sha256, so an agent can select it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit 'When' guidance ('an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum') and an explicit 'Not for' clause naming the alternative tool. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha1Hash SHA-1ARead-onlyIdempotentInspect
Calcula el resumen SHA-1. Con colisiones conocidas; solo para compatibilidad. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-1 digest (160-bit). Collisions are practical; suitable only for legacy interop such as git object IDs, not for signatures. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial value beyond annotations: the practical-collision warning and legacy-only suitability, determinism, no network/no stored state, and concrete limits (1 s per call, 1 MB result). One flaw: it says 'JSON input up to 64 KB' while the schema allows maxLength 1048576 (1 MB), an internal inconsistency that could mislead on payload sizing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and each clause earns its place, but the entire description is duplicated in Spanish and English, roughly doubling length with zero added information for a reader of either language.
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 read-only/idempotent/no-network safety, 100% schema description coverage, and an output schema present so return format need not be explained, nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums are documented with defaults, so the schema carries parameter meaning fully. The description says nothing about input_encoding/output_encoding beyond the implied 'text or bytes', so per the baseline rule a 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 and resource ('Computes the SHA-1 digest (160-bit)') and pins the digest size, so it is unambiguous against the many sibling hash-* tools. It also names the sibling it is not (hash-sha256) in the same breath.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when ('compare content or match a published checksum', legacy interop like git object IDs) and explicit not-for ('not for signatures', use hash-sha256 for SHA-256). The alternative is named by tool id, leaving nothing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha224Hash SHA-224ARead-onlyIdempotentInspect
Calcula el resumen SHA-224 (FIPS 180-4). Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-224 digest (FIPS 180-4) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/destructive=false, and the description still adds value beyond them: determinism, absence of network or stored state, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That is exactly the residual context annotations cannot express.
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?
Well front-loaded with labeled sections (When / Not for / Side effects / Limits), so it scans quickly. It loses a little to full duplication in Spanish and English, which doubles length without adding information for a single reader.
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 schema covers the return value, annotations cover the safety profile, and the description covers determinism and operational limits — nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both enums fully documented, so the schema carries the parameter burden. The description only restates that input may be text, hex or base64 — matching the existing enum — without extra format or edge-case 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?
States a specific verb and resource (computes the SHA-224 digest, FIPS 180-4) with explicit input types, and explicitly distinguishes itself from the nearest sibling hash-sha256. An agent can select 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?
Uses explicit 'When:' (exact digest of given text/bytes, checksum comparison) and 'Not for:' (SHA-256 → hash-sha256) clauses, naming the alternative and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha256Hash SHA-256ARead-onlyIdempotentInspect
Calcula el resumen SHA-256 (FIPS 180-4) en hex, base64 o base64url. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el HMAC (hmac-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-256 digest (FIPS 180-4) of text, hex or base64 input, returned as hex, base64 or base64url. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the HMAC (hmac-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description adds real detail beyond them: no network access, no stored state, strict determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). It stops short of describing error behavior when limits are exceeded, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded — purpose first, then when/not-for, then effects and limits — but the entire block is duplicated verbatim in Spanish and English, roughly doubling length with zero added information for an agent reading either half.
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 available and annotations covering the safety profile, the description supplies everything else an agent needs: algorithm standard, input/output encodings, determinism, side effects, rate and size limits, and the sibling exclusion.
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 both enum parameters are already documented with defaults in the schema, so the baseline is 3. The description restates the supported input/output encodings but adds no syntax or edge-case meaning (e.g. how non-UTF-8 input is validated) beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — computes the SHA-256 digest (FIPS 180-4) — with explicit coverage of input and output encodings. The 'Not for: computing the HMAC (hmac-sha256)' line separates it from the nearest sibling (hmac-sha256) and the wider hash-* family.
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?
Explicit 'When:' clause gives two concrete use cases (comparing content, matching a published checksum) and 'Not for:' names the alternative tool to use instead. An agent has a clear routing rule without inferring anything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha3-224Hash SHA3-224ARead-onlyIdempotentInspect
Calcula el resumen SHA3-224 (FIPS 202) de texto, hex o base64. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA3-256 (hash-sha3-256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA3-224 digest (FIPS 202) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA3-256 digest (hash-sha3-256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false and idempotentHint, so part of the side-effect statement is redundant. The description still adds genuinely new context: determinism guarantee, 64 KB JSON input cap, 1 s per-call limit and 1 MB result cap, which matter for callers handling large payloads.
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?
Well structured and front-loaded with the core action, then 'When/Not for/Side effects/Limits' in a predictable order. The full Spanish/English duplication roughly doubles length for a simple hashing utility, which is some waste but the paragraphs remain scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-purpose hashing tool with annotations, full schema coverage and an output schema, the description covers purpose, routing, side effects and resource limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enum parameters are documented in the schema, so baseline is 3. The description only echoes that input may be text, hex or base64 and says nothing about output_encoding choices (hex/base64/base64url) beyond what the schema already lists.
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 (computes the SHA3-224 digest per FIPS 202) plus the accepted input forms, and explicitly excludes the nearest sibling hash-sha3-256. An agent can select 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?
Contains an explicit 'When' clause with concrete scenarios (comparing content, matching a published checksum) and an explicit 'Not for' clause naming the alternative tool. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha3-256Hash SHA3-256ARead-onlyIdempotentInspect
Calcula el resumen SHA3-256 (FIPS 202). Distinto de keccak256 de Ethereum. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el hash Keccak-256 de Ethereum (hash-keccak256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA3-256 digest (FIPS 202). Differs from Ethereum keccak256, which uses the original Keccak padding. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the Ethereum Keccak-256 hash (hash-keccak256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: determinism, no network/state, and per-call limits (1 s, result up to 1 MB). One flaw: it says JSON input is capped at 64 KB while the schema declares data maxLength of 1,048,576 (1 MB), a contradictory bound that could make an agent over-constrain input.
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 definition and labeled sections (Cuándo / No para / Efectos / Límites) that make scanning easy. Docked one point because the entire content is duplicated in Spanish and English, roughly doubling length without adding 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?
Safety is covered by annotations, return shape by the output schema, and inputs by full schema coverage, so the description only needed usage and limits — which it supplies. The only gap is the input-size limit conflicting with the schema's maxLength.
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 both enums (input_encoding, output_encoding) are fully documented in the schema, so the baseline applies. The phrase 'texto o unos bytes' hints that string input may be interpreted as bytes, but no encoding syntax or format guidance is added.
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 algorithm ('Calcula el resumen SHA3-256 (FIPS 202)') and immediately differentiates it from the closest sibling by naming the padding difference vs Ethereum keccak256. An agent can pick between hash-sha3-256 and hash-keccak256 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?
Has explicit 'Cuándo' (compare content, match a published checksum) and 'No para' clauses with the alternative tool named (hash-keccak256). When-to-use and when-not-to-use are both spelled out rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha3-384Hash SHA3-384ARead-onlyIdempotentInspect
Calcula el resumen SHA3-384 (FIPS 202) de texto, hex o base64. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-384 (hash-sha384). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA3-384 digest (FIPS 202) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-384 digest (hash-sha384). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds what they do not: no network access, no stored state, determinism guarantee, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). This is exactly the operational context an agent needs before deciding whether a large input will 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?
Sentences are short, labeled (When / Not for / Side effects / Deterministic / Limits) and front-loaded with the definition. The main cost is that the entire block is duplicated in Spanish and English, which doubles length while adding no information for a given reader.
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 pure-function hash tool with an output schema, rich annotations, and full schema descriptions, everything an agent needs is covered: purpose, exclusions, determinism, side effects, and size/time bounds. Nothing material 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 three parameters are already fully documented in structured form; per the rubric this sets a baseline of 3. The description restates the accepted input encodings but says nothing about output_encoding (hex/base64/base64url) or how to pick it, so it does not exceed 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 and resource ("Computes the SHA3-384 digest (FIPS 202)") plus the accepted input forms (text, hex, base64). It also names the exact sibling it must not be confused with (hash-sha384), so the agent can discriminate among the many hash-* tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum" gives concrete selection context, and "Not for: computing the SHA-384 digest (hash-sha384)" explicitly routes to the alternative. Both positive and negative guidance are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha3-512Hash SHA3-512ARead-onlyIdempotentInspect
Calcula el resumen SHA3-512 (FIPS 202) de texto, hex o base64. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-512 (hash-sha512). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA3-512 digest (FIPS 202) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-512 digest (hash-sha512). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, yet the description still adds real context: no network access, no stored state, determinism, and per-call limits (1 s, 1 MB result). One flaw: it claims 'JSON input up to 64 KB' while the schema's data maxLength permits 1 MB, so the stated limit conflicts with the structured constraint.
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?
Each language version is tightly front-loaded with purpose, then usage, then side effects, then limits. The cost is that the entire content is duplicated in Spanish and English, roughly doubling length without added information per reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich annotation set and an output schema present, return format needn't be explained, and the description covers purpose, routing, safety, and limits. The one gap is the input-size limit that disagrees with the schema's maxLength, which could mislead an agent on large inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enums documented for both encoding parameters, so the baseline is 3. The description mentions text/hex/base64 input but adds no syntax or format detail beyond the schema and says nothing about output_encoding values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Computes the SHA3-512 digest (FIPS 202) of text, hex or base64 input') and names the exact sibling it is not (hash-sha512). An agent can distinguish it from hash-sha512, hash-sha3-256, and hash-sha3-384 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?
Explicit 'When' clause (need an exact digest to compare content or match a published checksum) and an explicit 'Not for' clause routing to hash-sha512. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha384Hash SHA-384ARead-onlyIdempotentInspect
Calcula el resumen SHA-384 (FIPS 180-4) de texto, hex o base64. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-512 (hash-sha512). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-384 digest (FIPS 180-4) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-512 digest (hash-sha512). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, yet the description still adds useful traits: no network, no stored state, determinism, and per-call limits (64 KB JSON, 1 s, 1 MB result). One caveat: the stated 64 KB input cap conflicts with the schema's maxLength of 1048576, a mild inconsistency rather than an annotation contradiction.
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?
Well structured and front-loaded: purpose, when, not-for, side effects, determinism, limits. The cost is full Spanish/English duplication, which roughly doubles the token footprint for identical content in a toolset where most siblings carry only one language.
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; the description still covers scope, alternatives, safety profile and operational limits. For a single-input digest tool, an agent has everything required to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enum values and defaults documented for input_encoding and output_encoding, so the baseline is 3. The description mentions the three input encodings but adds nothing about output encoding choices or how `data` is interpreted per encoding beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (computes the SHA-384 digest) plus the governing standard FIPS 180-4, and immediately scopes the input domain (text, hex or base64). It names the nearest sibling, hash-sha512, so an agent can route between similarly named hash tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit "When" clause gives concrete selection criteria (compare content, match a published checksum) and an explicit "No para / Not for" clause naming hash-sha512 as the alternative. Nothing about tool choice is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha512Hash SHA-512ARead-onlyIdempotentInspect
Calcula el resumen SHA-512 (FIPS 180-4) de texto, hex o base64. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-512/256 (hash-sha512-256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-512 digest (FIPS 180-4) of text, hex or base64 input. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-512/256 digest (hash-sha512-256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description still adds genuinely new context: determinism (same input, same output) and concrete limits (64 KB JSON input, 1 s per call, 1 MB output). It repeats the annotation-backed 'no red, sin estado' point, which is minor waste but not a contradiction.
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 core action, then cleanly labeled sections (When / Not for / Side effects / Deterministic / Limits), so it scans well. The cost is the full Spanish-then-English duplication, which roughly doubles length without adding information for a single reader.
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 everything needed to invoke correctly: encoding, determinism, cost limits, and no side effects; an output schema exists so return-value explanation is rightly omitted. Minor inconsistency: the description caps JSON input at 64 KB while the schema allows maxLength 1048576 characters, which could confuse an agent near the boundary.
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 both optional enums and the required `data` field are already documented in the schema; the description only echoes that input may be text, hex or base64. It adds no extra semantics such as how hex input is validated or when base64url output is preferable. 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 and resource ('Computes the SHA-512 digest (FIPS 180-4)') and immediately names the sibling it must not be confused with: hash-sha512-256. The agent can distinguish it from the ~20 other hash-* tools purely from the description.
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?
Explicit labeled 'When' section (compare content, match a published checksum) and an explicit 'Not for' section pointing at hash-sha512-256. Both the positive selection criterion and the exclusion are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sha512-256Hash SHA-512/256ARead-onlyIdempotentInspect
Calcula el resumen SHA-512/256 (variante truncada con IV propios). Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-512 (hash-sha512). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHA-512/256 digest (FIPS 180-4 truncated variant with distinct IVs, not a plain truncation of SHA-512). When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-512 digest (hash-sha512). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world, so the description correctly spends its space on extra traits: no network, no stored state, determinism, and concrete limits (1 s per call, 1 MB result). One weakness: it states 'JSON input up to 64 KB' while the schema allows data of maxLength 1048576 — an agent could be confused about the true input ceiling.
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?
Each language block is tightly front-loaded: purpose, when, not-for, side effects, determinism, limits — zero filler. The same content is, however, delivered twice (ES and EN), roughly doubling token cost for the reader, which is the only thing keeping this off a 5.
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 it still covers side effects, determinism, limits and the alternative tool. For a three-parameter hash function this is everything an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with two enums fully enumerated and defaults stated, so baseline 3 applies. The description's phrase 'text or bytes' only vaguely hints at the utf8/hex/base64 input_encoding choice and adds no syntax or format guidance 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 ('Computes the SHA-512/256 digest') and immediately disambiguates it as the FIPS 180-4 truncated variant with distinct IVs, not a plain truncation of SHA-512. It also names the sibling hash-sha512 so an agent can separate the two 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?
Explicit 'When' clause (compare content, match a published checksum) and explicit 'Not for' clause routing to hash-sha512. This is the when/when-not/alternative pattern in full, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-shake128SHAKE128 (salida extensible)ARead-onlyIdempotentInspect
Calcula la función de salida extensible SHAKE128 (FIPS 202) con longitud elegida. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular la función de salida extensible SHAKE256 (hash-shake256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHAKE128 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHAKE256 extendable-output function (hash-shake256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| output_bytes | No | Output length in bytes (integer; optional; default 32; min 1; max 1024). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful context such as no network access, no stored state, determinism, and limits, but its stated limits conflict with the schema: input up to 64 KB versus schema maxLength 1 MB, and result up to 1 MB versus output_bytes max 1024. The added behavioral detail is therefore helpful but partly inaccurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and when/when-not guidance are front-loaded and clearly labeled, so the structure is strong. However, the entire description is duplicated in Spanish and English, roughly doubling length without adding new information, which weakens conciseness.
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 full schema coverage, an output schema, and rich annotations, the description supplies enough context to select and invoke the tool correctly. The inaccurate size limits prevent a top score, but the core purpose, usage guidance, and side-effect profile are present.
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 parameter names, defaults, enums, and bounds are already fully documented. The description mentions chosen output length of 1 to 1024 bytes and text-or-bytes input, but adds little beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names SHAKE128, cites FIPS 202, and states that it computes an extendable-output digest with a chosen output length. It explicitly distinguishes itself from the sibling hash-shake256, so an agent can identify the 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 states when to use the tool: when an exact digest of text or bytes is needed, for example to compare content or match a published checksum. It also states when not to use it and names the alternative, hash-shake256, giving explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-shake256SHAKE256 (salida extensible)ARead-onlyIdempotentInspect
Calcula la función de salida extensible SHAKE256 (FIPS 202) con longitud elegida. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular la función de salida extensible SHAKE128 (hash-shake128). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SHAKE256 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHAKE128 extendable-output function (hash-shake128). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| output_bytes | No | Output length in bytes (integer; optional; default 64; min 1; max 1024). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'no side effects / read-only / no network' mostly restates structured data. The description does add genuinely new behavior: determinism and operational limits (64 KB input, 1 s per call, 1 MB result). One flaw: the stated 64 KB input limit conflicts with the schema's 1 MB maxLength for `data`, which could mislead an agent into needlessly rejecting large inputs.
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?
Content is front-loaded and every clause (purpose, when, not-for, side effects, limits) carries information. However, the entire description is duplicated verbatim in Spanish and English, roughly doubling the token footprint for the same payload.
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 description covers determinism and resource limits. The input-size limit it advertises contradicts the schema and the encodings are left to the schema, so it is slightly incomplete for a hashing tool where encoding mismatches are the main failure mode.
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 two parameters are enums, so the baseline is 3. The description only restates the output-length range (1–1024 bytes), which the schema already declares via min/max, and never mentions input_encoding or output_encoding, so it adds no real meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb + resource: computes SHAKE256 (FIPS 202) with a chosen output length of 1–1024 bytes. It immediately distinguishes itself from the closest sibling by naming hash-shake128 as the tool NOT to use, which is exactly the ambiguity an agent would face in a list of ~50 hash/checksum 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?
Explicit 'When:' clause with concrete triggers (compare content, match a published checksum) and an explicit 'Not for:' clause routing to hash-shake128. This is the full when/when-not/alternative pattern; nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash-sm3Hash SM3ARead-onlyIdempotentInspect
Calcula el resumen SM3 (estándar chino GB/T 32905). Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para comparar contenido o cotejar un checksum publicado. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the SM3 digest (Chinese national standard GB/T 32905, 256-bit). When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input data (string; required). | |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| digest | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/no-open-world, yet the description still adds genuine value: determinism, no network, no stored state, and concrete limits (1 s per call, 1 MB result). One wrinkle: 'JSON input up to 64 KB' sits oddly against the schema's 1,048,576-char data maxLength, leaving the effective input ceiling slightly ambiguous.
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?
Labeled segments (Cuándo / No para / Efectos secundarios / Determinista / Límites) make it scannable and front-loaded with purpose. It is, however, fully duplicated in ES and EN, which roughly doubles length for an agent that reads only one language.
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; what remains necessary — determinism, cost/time bounds, size limits, and the sibling boundary — is all present. Only the 64 KB vs 1 MB input-limit ambiguity keeps it from fully closing the loop.
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% with enum documentation for both encoding parameters, so the schema already carries the parameter burden. The description's phrase 'text or bytes' only loosely gestures at the input_encoding options and adds no format or fallback guidance, so 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 and resource ('Computes the SM3 digest'), pins the standard (GB/T 32905, 256-bit), and explicitly names the sibling it is not (hash-sha256). An agent can distinguish it from the ~20 other hash-* siblings 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?
Explicit 'When:' clause gives the triggering conditions (exact digest, content comparison, published checksum matching) and an explicit 'Not for:' clause routes SHA-256 work to hash-sha256. This is the when/when-not/alternative triad at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hex-decodeDecodificar hexadecimalARead-onlyIdempotentInspect
Decodifica hexadecimal a texto UTF-8 o base64. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto UTF-8 en hexadecimal, con separador opcional (hex-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes hexadecimal (case-insensitive; spaces, colons and 0x prefix ignored) to UTF-8 text or base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding UTF-8 text (hex-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex string (string; required). | |
| output_encoding | No | Output (optional; one of: utf8, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds significant operational context beyond the metadata, detailing side effects (none, read-only, no network access), deterministic nature, and crucial performance limits (64 KB input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is highly efficient. It front-loads the core functionality and organizes the supplementary information into logical categories (When, Not for, Side Effects, Limits), maximizing information density with minimal 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?
It includes detailed behavioral constraints (performance limits, deterministic output, input size limits) which is essential for robust agent planning in data manipulation tasks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is high. The description still adds value by listing the allowed output encoding types and detailing input processing behavior (e.g., ignoring spaces and 0x prefixes).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool decodes hexadecimal to either UTF-8 or base64. It provides specifics on how it handles input (case-insensitive, ignoring prefixes/separators) and explicitly differentiates itself from the encoding tool sibling.
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 precise 'When' (converting bytes/text exactly) and 'Not for' (encoding text), leaving no doubt about the appropriate use case or alternative sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hex-encodeCodificar hexadecimalARead-onlyIdempotentInspect
Codifica texto UTF-8 en hexadecimal, con separador opcional. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar hexadecimal a texto UTF-8 o base64 (hex-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes UTF-8 text (or base64 bytes) as lowercase or uppercase hexadecimal, with an optional separator between bytes. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding hexadecimal (hex-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Input text (string; required). | |
| separator | No | Separator between bytes (string; optional; default ""; up to 4 chars). | |
| uppercase | No | Uppercase digits (boolean; optional; default false). | |
| input_encoding | No | Encoding of data (optional; one of: utf8, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes beyond them with no-network, no-stored-state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). These are exactly the operational constraints an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and the label structure (When / Not for / Side effects / Limits) is easy to scan. However, the entire block is duplicated in Spanish and English, roughly doubling length for a four-parameter encoding tool, which is redundancy rather than economy.
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 it still covers purpose, alternatives, side effects, determinism, and size/time limits. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents data, separator, uppercase, and input_encoding. The description only restates those semantics (case choice, separator between bytes, base64 input) without adding formats, edge cases, or validation rules 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 — encoding UTF-8 text or base64 bytes into lowercase/uppercase hexadecimal — and names the distinguishing options (separator, case). It explicitly separates itself from the sibling hex-decode, so an agent can pick between them 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?
Gives an explicit 'When' clause and an explicit 'Not for: decoding hexadecimal (hex-decode)', which routes the agent to the correct sibling. The only blemish is the phrase 'converted to or from this encoding', which muddies the one-way nature of the tool, though the 'Not for' line corrects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-md5HMAC-MD5ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con MD5. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: calcular el HMAC (hmac-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using MD5 over text, hex or base64 data with a text, hex or base64 key. Uses a legacy hash; HMAC remains usable for interop, SHA-256 is the modern default. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: computing the HMAC (hmac-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description nonetheless restates no-network/no-state and adds hard limits (64 KB JSON input, 1 s per call, 1 MB result) that the annotations do not carry. The determinism statement is largely redundant with idempotentHint, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and well structured with When / Not for / Side effects / Deterministic / Limits headings, but the entire content is delivered twice (Spanish then English), roughly doubling length with no new information. Each language version individually earns its place; the duplication does not.
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 schema exists, so return values need no explanation, and the description covers what remains: what the tool computes, when to use it, the legacy-hash caveat, determinism, and explicit size/time limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter has a description, enum and default, so the schema does the heavy lifting. The description only echoes that data and key may be text, hex or base64; it adds no interpretation of key_encoding vs. input_encoding confusion or output_encoding choice. 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 + resource ('Computes the HMAC (RFC 2104) using MD5') with the supported data/key/output encodings named, plus an explicit RFC reference. The agent can distinguish it from hmac-sha256, hmac-sha1 and hash-md5 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?
Explicit 'When' (signing or checking a message with a shared secret passed in the call) and 'Not for' (hmac-sha256) clauses, plus a note that MD5 is legacy and SHA-256 is the modern default. The gap: the sibling list contains hmac-verify, and the description's 'or a signature checked' arguably points at that tool without naming it, so the routing between compute-and-compare vs. verify stays slightly ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-sha1HMAC-SHA1ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con SHA1. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: calcular el HMAC (hmac-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using SHA1 over text, hex or base64 data with a text, hex or base64 key. Uses a legacy hash; HMAC remains usable for interop, SHA-256 is the modern default. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: computing the HMAC (hmac-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: no side effects, no network, no stored state, deterministic output, and explicit runtime/input/result limits. It also discloses the legacy-hash caveat, which is valuable behavioral guidance for an agent choosing the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and well organized, with purpose, usage, exclusions, side effects, determinism, and limits presented in order. However, the full Spanish and English duplication makes it longer than necessary for a single-locale agent.
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?
Complete for this tool: it covers when to use it, when not to, safety/state behavior, determinism, limits, and the legacy-hash caveat. Since an output schema exists, the description need not explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters, their defaults, and enums. The description restates text/hex/base64 handling for data and key but adds little beyond the schema, and its 64 KB JSON input limit sits oddly against the schema's 1 MB data maxLength.
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 operation and algorithm: computes HMAC (RFC 2104) using SHA1 over data with a key. It explicitly contrasts with hmac-sha256 and notes SHA-1's legacy status, so an agent can distinguish it from sibling hash/HMAC 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?
Gives clear when-to-use guidance: signing a message or checking a signature with a shared secret supplied in the call. It explicitly names the alternative for modern use, hmac-sha256, and frames SHA-1 as interop-only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-sha256HMAC-SHA256ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con SHA256. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: comprobar una firma HMAC en tiempo constante (hmac-verify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using SHA256 over text, hex or base64 data with a text, hex or base64 key. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: checking an HMAC signature in constant time (hmac-verify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description still adds genuinely new facts beyond the annotations: determinism, no network, no stored state, and hard limits (64 KB JSON input, 1 s per call, 1 MB result) that matter for batching decisions. It does not describe error behavior on oversized input, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each language block is front-loaded and tight: purpose, when, not-for, side effects, determinism, limits. The cost is that the entire paragraph is duplicated in Spanish and English, roughly doubling token count for the same information, which is a real (if deliberate) redundancy penalty.
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 needed. Combined with annotations and a 100%-covered input schema, the description adds everything an agent needs before calling: scope, exclusions, determinism and size/time limits.
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 all five parameters are documented with types, enums and defaults, so the schema carries the semantics. The description echoes the encoding flexibility (text/hex/base64 for both data and key) but adds no format rules or interaction notes beyond what the schema already states — 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+algorithm+resource: computes HMAC (RFC 2104) with SHA256 over data using a shared key, and names the accepted encodings. It explicitly contrasts itself with the nearest sibling (hmac-verify) so an agent can distinguish them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When:' (signing a message or checking a signature with a secret supplied in the call) and explicit 'Not for:' routing to hmac-verify for constant-time verification. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-sha3-256HMAC-SHA3-256ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con SHA3-256. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: calcular el resumen SHA3-256 (hash-sha3-256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using SHA3-256 over text, hex or base64 data with a text, hex or base64 key. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: computing the SHA3-256 digest (hash-sha3-256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantive context beyond them: 'no network access, no stored state', determinism, and concrete limits (64 KB JSON, 1 s per call, 1 MB result). These limits are operationally useful and not present in annotations or schema.
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?
Each sentence earns its place (purpose, when, not-for, side effects, determinism, limits) and the key facts are front-loaded. The cost is full ES/EN duplication, which roughly doubles length for the same content, keeping it from a 5.
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 rich schema, full annotations, and an output schema (so return format need not be explained), the description covers everything an agent needs: purpose, boundaries, side effects, determinism, and hard limits. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline would be 3, but the description adds genuine semantics by summarizing the encoding dimensions ('text, hex or base64 data with a text, hex or base64 key'), clarifying that both data and key are encoding-configurable. It does not explain output_encoding, but the schema already enumerates it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with algorithm and standard: 'Computes the HMAC (RFC 2104) using SHA3-256 over text, hex or base64 data with a text, hex or base64 key.' It explicitly names the sibling it is not (hash-sha3-256), so an agent can separate signing from plain hashing without inspecting 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?
Uses explicit 'When:' (sign or verify with a caller-supplied shared secret) and 'Not for:' (SHA3-256 digest, hash-sha3-256) framing, giving both inclusion and exclusion conditions with the named alternative. This is the strongest form of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-sha384HMAC-SHA384ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con SHA384. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: comprobar una firma HMAC en tiempo constante (hmac-verify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using SHA384 over text, hex or base64 data with a text, hex or base64 key. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: checking an HMAC signature in constant time (hmac-verify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, and the description restates the same properties (read-only, no network, no state, deterministic) - useful confirmation but not additive. It does add genuinely new operational context the annotations lack: JSON input capped at 64 KB, 1 s per call, and results up to 1 MB.
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 purpose and well-structured into When/Not for/Side effects/Deterministic/Limits, but the entire block is duplicated in Spanish and English, roughly doubling length. Each individual language block is tight, yet the repetition is avoidable weight for an agent reading 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?
An output schema exists so return values need not be described, and the description covers scope, limits, determinism and the routing alternative. For a deterministic pure-function crypto tool that is close to complete; only the interaction between input_encoding and key_encoding could be clearer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with three enums, so the baseline is 3; the description goes slightly beyond by framing data and key as independently encodable ('text, hex or base64 data with a text, hex or base64 key'), which signals the two encoding parameters interact. It still says nothing about output_encoding defaults in prose, which the schema covers.
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 ('Computes the HMAC (RFC 2104) using SHA384 over text, hex or base64 data with a text, hex or base64 key'), which unambiguously separates it from hash-sha384, hmac-sha256, hmac-sha512 and hmac-verify. The algorithm and encoding combinations are named, not implied.
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?
Explicit 'When: a message has to be signed, or a signature checked, with a shared secret supplied in the call' and 'Not for: checking an HMAC signature in constant time (hmac-verify)'. It names the alternative sibling and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-sha512HMAC-SHA512ARead-onlyIdempotentInspect
Calcula el HMAC (RFC 2104) con SHA512. Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: comprobar una firma HMAC en tiempo constante (hmac-verify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the HMAC (RFC 2104) using SHA512 over text, hex or base64 data with a text, hex or base64 key. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: checking an HMAC signature in constant time (hmac-verify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| mac | No | |
| encoding | No | |
| algorithm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the 'no side effects, no network' sentence is largely a restatement. What the description adds beyond the annotations is real, though: determinism and hard limits (64 KB JSON input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled structure (When / Not for / Side effects / Deterministic / Limits) is well front-loaded with the scoping constraint first. However, the entire text is duplicated in Spanish and English, roughly doubling length with zero new information for an English-reading agent.
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 the annotations cover safety. What remains — when to use it, which sibling to prefer, determinism, and resource limits — is all present, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all five parameters documented and three enums constrained, so the schema already carries parameter meaning. The description only echoes the utf8/hex/base64 choices for data and key and says nothing about output_encoding, 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 and resource (computes HMAC per RFC 2104 using SHA512) plus the supported data/key encodings, which pins it down against the many hash-* and hmac-* siblings. The named algorithm and the explicit contrast with hmac-verify let an agent pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'When:' and 'Not for:' clauses: sign or check a signature with a shared secret supplied in the call, but delegate constant-time verification to hmac-verify. That names the alternative and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hmac-verifyVerificar HMACARead-onlyIdempotentInspect
Recalcula un HMAC y lo compara en tiempo constante con el esperado (p. ej. firma de webhook). Cuándo: hay que firmar un mensaje, o comprobar una firma, con un secreto compartido que viene en la llamada. No para: calcular el HMAC (hmac-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Recomputes an HMAC over the data and compares it with an expected hex/base64 MAC in constant time, e.g. to check a webhook signature. When: a message has to be signed, or a signature checked, with a shared secret supplied in the call. Not for: computing the HMAC (hmac-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Secret key (string; required; up to 4096 chars). | |
| data | Yes | Input data (string; required). | |
| expected | Yes | Expected MAC, hex or base64 (string; required; up to 512 chars). | |
| algorithm | No | Hash (optional; one of: sha256, sha512, sha1, sha384; default "sha256"). | sha256 |
| key_encoding | No | Encoding of `key` (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| input_encoding | No | How `data` is encoded (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, but the description adds substantive context beyond them: constant-time comparison semantics, no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). This is exactly the extra behavioral detail annotations 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?
Front-loaded with the core action and organized under clear labels (Cuándo, No para, Efectos secundarios, Determinista, Límites). The full Spanish/English duplication doubles the length, which is redundant for a single-locale agent, but each individual 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, the description needn't explain return values, and it covers everything else an agent needs: purpose, alternative, side effects, determinism, and operational limits. 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 description coverage is 100% and all six parameters (including the three enums) are documented in the schema, so the baseline is 3. The description only alludes to the expected MAC being hex/base64 and the secret coming in the call, adding little 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 ('Recalcula un HMAC y lo compara en tiempo constante con el esperado') and explicitly distinguishes itself from the sibling hmac-sha256 by naming it as the tool for plain computation. An agent can tell exactly what this does versus the other HMAC 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?
Explicit 'Cuándo' clause (signing or verifying a signature with a shared secret supplied in the call) and an explicit 'No para' clause routing to hmac-sha256. Both the use case and the exclusion are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-escapeEscapar HTMLARead-onlyIdempotentInspect
Escapa &, <, > (y comillas para atributos) para insertar texto en HTML de forma segura. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: decodificar referencias de caracteres HTML numéricas y unas 100 entidades con nombre comunes (html-unescape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Escapes &, <, > (and " ' for attribute contexts) so text can be safely inserted into HTML. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: decoding HTML character references (html-unescape). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| attribute | No | Also escape quotes (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value beyond them: determinism, no network/no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Content is front-loaded and each clause is informative, but the entire block is duplicated in Spanish and English, roughly doubling length with zero added information. The bilingual repetition costs it conciseness.
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 description covers scope, exclusions, side effects and limits. Complete enough to call correctly; only the boilerplate when-list keeps it from a 5.
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, but the description adds meaning to the `attribute` flag by explaining that quotes are escaped "para atributos", clarifying when the default true matters. It does not add anything for `text` beyond the schema's example and maxLength.
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 the exact characters escaped ("Escapa &, <, > (y comillas para atributos)"), and explicitly names the sibling it is not (html-unescape). An agent can distinguish it from html-unescape and from the other text tools 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?
Provides an explicit "Cuándo" section and a "No para" exclusion pointing at html-unescape, which is exactly the routing information needed. The when-list (URL, HTTP header, token, IP range, agent-readiness file) reads as generic boilerplate rather than HTML-insertion scenarios, which slightly dilutes the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-links-extractExtraer enlaces de HTMLARead-onlyIdempotentInspect
Extrae enlaces de un HTML con su texto, rel y target, resuelve URL relativas con una base opcional y clasifica cada uno como interno, externo, mailto, tel, ancla u otro. Deduplicación opcional. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer tablas de un HTML como filas de texto, detectando encabezados (html-tables-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts links from HTML with their text, rel and target, resolves relative URLs against an optional base, and classifies each as internal, external, mailto, tel, anchor or other. Optional de-duplication. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML (string; required). | |
| dedupe | No | Keep only the first link per URL (boolean; optional; default false). | |
| base_url | No | Base URL for relative links (string; optional; up to 2048 chars). | |
| max_links | No | Max links (integer; optional; default 1000; min 1; max 5000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| links | No | |
| by_kind | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, but the description still adds substantive traits: no network access, no stored state, determinism, and explicit limits (1 s per call, 1 MB result). One flaw: it states 'input JSON up to 64 KB' while the schema allows html up to 1,048,576 chars, an internal inconsistency that could mislead about the real ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded and dense with useful detail, but the description is bloated by a full Spanish block plus an English restatement plus a boilerplate 'Cuándo' trigger list containing items irrelevant to link extraction. Roughly half the text does not earn its place for this specific tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the description supplies what structured fields cannot: classification categories, determinism, no network, and runtime/size limits. The only gap is the conflicting 64 KB input claim versus the 1 MB schema maxLength, which should be reconciled.
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 four parameters are already documented. The description restates the optional base and optional de-duplication without adding semantics beyond the schema (e.g. what happens to unresolvable relative URLs when base_url is absent, or whether max_links truncation is silent) — 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 (extract <a href> links from HTML) plus the exact output facets (text, rel, target), relative-URL resolution, and the classification buckets internal/external/mailto/tel/anchor/other. An agent can immediately distinguish it from html-tables-extract or html-meta-extract 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 'No para' clause names a concrete sibling (html-tables-extract) and the exact task it owns, which is real routing guidance. The 'Cuándo' clause, however, is a generic trigger list (HTTP header, token, version, IP range, Markdown) that reads as family boilerplate rather than reasons specific to link extraction, and it never mentions markdown-links-extract as the alternative for Markdown input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-meta-extractExtraer metadatos HTMLARead-onlyIdempotentInspect
Extrae metadatos de un HTML proporcionado (sin descargarlo): título, idioma, descripción, canonical, Open Graph, JSON-LD y h1. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer y clasificar los enlaces de un documento HTML (html-links-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts metadata from a supplied HTML string (no fetching): title, lang, meta description/robots, canonical, Open Graph and Twitter tags, JSON-LD block count and types, h1 texts and hreflang links. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML document (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| h1 | No | |
| lang | No | |
| title | No | |
| robots | No | |
| json_ld | No | |
| No | ||
| hreflang | No | |
| canonical | No | |
| open_graph | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the 'sin red, sin estado guardado, determinista' sentences largely restate structured data. The description does add genuinely new operational context: per-call time budget (1 s) and result size cap (1 MB), which the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core extraction sentence is well front-loaded, but the definition is bloated by a near-duplicate Spanish/English pair and a generic 'Cuándo' list of unrelated artifact types (tokens, IP ranges, HTTP headers) that does not earn its place in an HTML metadata tool.
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 prose explanation, and the description covers scope, exclusions, side effects and limits. The only real gap is the inconsistent input-size bound versus the schema's maxLength.
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 a single parameter at 100% schema coverage, the schema already documents 'html' fully, so baseline 3 applies. The description adds no format guidance beyond the schema, and its stated '64 KB' input limit conflicts with the schema's maxLength of 2,097,152 characters, which could mislead an agent about the real bound.
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 ('Extrae metadatos de un HTML proporcionado') and enumerates exactly which fields are returned (title, lang, meta description/robots, canonical, OG/Twitter, JSON-LD, h1, hreflang). It also explicitly names the sibling it is not (html-links-extract), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No para' clause is an explicit exclusion pointing to html-links-extract, which is exactly the routing information an agent needs. The 'Cuándo' clause, however, is generic boilerplate (URL, HTTP header, token, version string, IP range) that barely relates to HTML metadata extraction, so the positive guidance is weaker than the negative one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-tables-extractExtraer tablas de HTMLARead-onlyIdempotentInspect
Extrae tablas de un HTML como filas de texto, detectando encabezados (thead o una primera fila de th), expandiendo colspan y, opcionalmente, como objetos por encabezado. Las tablas anidadas se extraen por separado. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer y clasificar los enlaces de un documento HTML (html-links-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts elements from HTML into rows of cell text, with header detection (thead or a first row of th), colspan expansion and optional row objects keyed by header. Nested tables are extracted separately. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML (string; required). | |
| as_objects | No | Also return rows as objects keyed by header (boolean; optional; default false). | |
| max_tables | No | Max tables (integer; optional; default 20; min 1; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| tables | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world and non-destructive, so the 'sin efectos secundarios' sentence is mostly redundant, but the description adds real behavior beyond them: nested tables are extracted separately, colspan is expanded, headers are detected from thead or a first th row, and it declares hard limits (64 KB input, 1 s, 1 MB result) and determinism. Minor inconsistency: the prose says JSON input up to 64 KB while the schema sets html maxLength to 1 MB, which an agent may find confusing.
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?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Determinista / Límites), and the first sentence carries the essential mechanics. But the content is duplicated in Spanish and English, and the English portion is a pointer to inputSchema.description rather than new information, which wastes substantial space in an otherwise short field.
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; the prose still covers header semantics, colspan, nested tables, determinism and resource limits, which is what an agent needs to call it correctly. The only real gap is the stale/contradictory input-size limit versus the 1 MB schema maxLength.
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 and the schema already documents html, as_objects (default false, keyed by header) and max_tables (1-100, default 20). The prose reinforces as_objects and header-keying but never mentions max_tables or the practical consequences of truncating at that cap, adding little 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 concrete verb and resource (extract <table> elements from HTML into rows of cell text) plus the specific mechanics: header detection via thead or a first th row, colspan expansion, optional header-keyed objects. It also carves itself away from html-links-extract, so an agent can distinguish it from siblings 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?
The 'No para' clause is a genuine, explicit exclusion naming the sibling html-links-extract and the condition that selects it. However, the 'Cuándo' clause is generic boilerplate (URL, HTTP header, token, IP range, agent-readiness file) that barely relates to HTML table extraction and gives no real signal about when to pick this over html-to-text or html-to-markdown. Usage direction is therefore half-explicit, half-filler.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-to-markdownConvertir HTML a MarkdownARead-onlyIdempotentInspect
Convierte HTML en Markdown (GFM): títulos, párrafos, énfasis, enlaces, imágenes, listas anidadas, citas, código, tablas y reglas; decodifica entidades y quita scripts y estilos. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir HTML en texto plano legible (html-to-text). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts HTML to GitHub-flavored Markdown by string processing: headings, paragraphs, emphasis, links, images, nested lists, blockquotes, code and fenced code with language, tables and rules, with entities decoded and script/style dropped. Not a full HTML parser. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML (string; required). | |
| escape | No | Escape Markdown characters (* _ ` [ ]) found in the text (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, and the description still adds real information: string-processing rather than a full HTML parser, determinism, script/style dropping, and explicit time and result-size limits. The stated '64 KB' input limit conflicts with the schema's maxLength of 262144, which is a mild self-inconsistency rather than an annotation contradiction.
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 is front-loaded in the first clause and the when/not-for/effects/limits blocks are skimmable. The generic 'Cuándo' enumeration of unrelated artifacts (IP ranges, versions, tokens) is filler that dilutes the signal and could have been one short 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 a rich output schema and full annotations, the remaining essentials — processing model, determinism, limits, scope exclusions — are all covered. The only real completeness defect is the input-size figure disagreeing with the schema's maxLength, which could mislead an agent about acceptable payload size.
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 both parameters (html, escape) are already documented, including escape's default and the specific characters it affects. The description adds nothing about parameters — notably it never mentions escape or when to disable it — 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 and resource ('Convierte HTML en Markdown (GFM)') and enumerates exactly which constructs are handled (headings, tables, fenced code with language, entity decoding, script/style removal). It also names the nearest sibling it is not ('No para: ... html-to-text'), so an agent can discriminate 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?
There is an explicit exclusion clause routing plain-text extraction to html-to-text, which is genuinely useful routing. However the 'Cuándo' clause is largely generic boilerplate (URLs, HTTP headers, tokens, IP ranges) that is not specific to HTML→Markdown and reads like a shared template rather than real selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-to-textHTML a texto planoARead-onlyIdempotentInspect
Convierte HTML en texto plano legible: quita scripts y estilos, convierte bloques en saltos de línea y decodifica entidades. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: eliminar la sintaxis Markdown (markdown-to-text). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts HTML to readable plain text by string processing: drops script/style/comments, turns block elements into line breaks and list items into "- ", decodes entities, optionally keeps link URLs. Not a full HTML parser. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML (string; required). | |
| keep_links | No | Append link URLs in parentheses (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the processing model (string processing, not a full HTML parser), the exact transformations applied, side effects (no network, no stored state), determinism, and hard limits (64 KB input, 1 s per call, 1 MB output). The 'not a full HTML parser' caveat is behaviorally decisive and appears nowhere in the 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?
The core behavior and limits are front-loaded and earn their place, but the entry is padded with a generic 'when' list of unrelated artifacts, a duplicated full English block, and a meta-pointer ('[EN completo / full EN: inputSchema.description]') that is navigation clutter rather than tool information. Bilingual duplication roughly doubles the length for the same 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?
With an output schema present, return values need no explanation; what remains — input constraints, size/time limits, determinism, no-network/no-state guarantees, and the non-parser caveat — is fully covered. An agent has everything needed to call this correctly and predict the output shape.
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 both parameters carry their own descriptions, so the baseline is 3. The description adds the semantic effect of the optional flag — it 'optionally keeps link URLs' — matching keep_links and its default-false behavior, giving a small but real increment 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 opening sentence gives a specific verb and resource (converts HTML to readable plain text) and immediately enumerates the actual mechanics: drops script/style/comments, block elements become line breaks, list items become "- ", entities decoded. It also states a key boundary — 'Not a full HTML parser' — which lets an agent distinguish it from real parsers in the sibling set.
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 an explicit exclusion with a named alternative: 'No para: eliminar la sintaxis Markdown (markdown-to-text)', which cleanly separates it from markdown-to-text, html-to-markdown and html-escape. However, the 'Cuándo:' clause lists URLs, HTTP headers, tokens, IP ranges and agent-readiness files, which reads like a shared family template rather than guidance specific to HTML conversion, so the positive usage signal is weaker than the negative one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html-unescapeDesescapar HTMLARead-onlyIdempotentInspect
Decodifica referencias de caracteres HTML numéricas y unas 100 entidades con nombre comunes. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: escapar &, <, > (html-escape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes HTML character references: numeric (é é) and about 100 common named entities (& ñ € …). Unknown names are left as-is. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: escaping &, <, > (html-escape). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | HTML-escaped text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, so the description correctly doesn't repeat those; instead it adds genuinely new behavior: unknown entity names are left as-is, determinism, and hard limits (64 KB input, 1 s, 1 MB result). The stated 64 KB input cap conflicts with the schema's maxLength of 1,048,576, which is an internal inconsistency worth flagging but not an annotation contradiction.
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?
Internally well-structured with labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites) and the purpose is front-loaded. However, the entire content is then duplicated verbatim in a second language plus a pointer sentence ('EN completo / full EN: inputSchema.description'), roughly doubling length without adding 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 single-parameter, fully annotated tool with an output schema, the description covers purpose, triggers, exclusion, edge-case behavior, determinism and resource limits — everything an agent needs to call it correctly and safely.
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% with its own description and an example, so the schema already does the heavy lifting. The description adds only the flavor of what input looks like (named and numeric references) and the unknown-name fallback; it doesn't address edge cases like double-escaped input or whether partially escaped text is fine.
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?
Opens with a specific verb+resource: decodes HTML character references, both numeric (é é) and ~100 named entities. It explicitly names html-escape as the thing it is NOT, so an agent can distinguish it from the sibling 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?
Has explicit 'Cuándo' with concrete triggers (URL, HTTP header, token, version string, IP range, HTML/Markdown documents) and an explicit 'No para' pointing to html-escape. Both when-to-use and the alternative are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http-dateFecha HTTPARead-onlyIdempotentInspect
Convierte entre fecha HTTP (IMF-fixdate) e ISO 8601 / Unix, para Last-Modified, Expires o Retry-After. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula (http-headers-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts between HTTP-date (IMF-fixdate, e.g. "Sat, 31 Oct 2026 12:00:00 GMT") and ISO 8601 / Unix seconds, e.g. for Last-Modified, Expires and Retry-After headers. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | HTTP-date, ISO 8601 string or Unix seconds (string or number; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso | No | |
| unix | No | |
| http_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the description is not obligated to restate safety. It goes beyond them by stating deterministic output and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result), which are genuinely useful constraints an agent cannot get from the annotations. It stops short of describing error behavior for malformed or ambiguous dates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labelled structure (Cuándo / No para / Efectos secundarios / Determinista / Límites) is front-loaded and easy to scan. But the whole block is then repeated in an EN version, and the "Cuándo" sentence sprawls across URLs, tokens, versions, IP ranges, HTML, Markdown and agent files — content that does not earn its place for a two-format date converter.
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 supplies determinism, size/time limits and a routing exclusion — enough for an agent to call it correctly. Remaining gaps are minor: no statement of timezone assumptions or how invalid/non-parseable input is 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?
With one parameter at 100% schema description coverage, the schema already documents the accepted types, the 100-char maxLength and provides an example. The description adds the IMF-fixdate format illustration, but that example is duplicated verbatim in the schema, so the net added meaning is minimal. 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 first clause names a specific verb and resource pair with both formats spelled out ("Convierte entre fecha HTTP (IMF-fixdate) e ISO 8601 / Unix") and gives a concrete IMF-fixdate example, so an agent immediately knows what it does. It only distinguishes one sibling (http-headers-parse), leaving near-neighbours like retry-after-parse, timestamp-convert and datetime-parse unaddressed. The "Cuándo" list of URLs, tokens, versions and IP ranges slightly blurs the actual scope of the tool.
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 an explicit exclusion with a named alternative: "No para: convertir un bloque de encabezados HTTP crudos... (http-headers-parse)", which is exactly the kind of routing signal an agent needs. The positive "Cuándo" clause, however, is generic boilerplate ("leer, construir o revisar con exactitud") that would apply to dozens of sibling tools and does not tell you when to pick this over retry-after-parse or timestamp-convert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http-headers-parseLeer cabeceras HTTPARead-onlyIdempotentInspect
Convierte un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir entre fecha HTTP (http-date). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a raw HTTP header block (optionally starting with a request or status line) into an object with lowercase names; repeated headers become arrays (Set-Cookie always an array). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting between HTTP-date (http-date). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| raw | Yes | Raw headers (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| headers | No | |
| start_line | No | |
| invalid_lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered; the description still adds real value with determinism ("la misma entrada da la misma salida") and hard limits (1 s per call, 1 MB result). One weakness: it claims a 64 KB input limit while the schema sets raw maxLength to 262144 (256 KB), an inconsistency that could mislead on large inputs.
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-loading is good: purpose first, then when/not-for/effects/limits. However the body is duplicated in Spanish and English and then explicitly points to inputSchema.description for the "full EN" version, so the same content appears three times, and the generic "Cuándo" list pads rather than informs.
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 it does cover purpose, exclusions, determinism, side effects and resource limits. What it lacks is routing guidance among the sibling header parsers and a consistent statement of the input size limit.
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 and schema description coverage is 100%, so the baseline is 3. The description does add format semantics beyond the schema (optionally starting with a request or status line, repeated headers becoming arrays), but that same text is duplicated verbatim in inputSchema.description, so the marginal gain over structured data is small.
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 (converts a raw HTTP header block into an object with lowercase names) and even specifies the output shape: repeated headers become arrays, Set-Cookie always an array. It does not, however, differentiate itself from the many adjacent parsers in the sibling list (cookie-parse, set-cookie-parse, content-type-parse, cache-control-parse, link-header-parse), so an agent still has to infer which header parser applies.
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?
One explicit exclusion is given ("No para: convertir entre fecha HTTP (http-date)"), which is genuinely useful. But the positive "Cuándo" clause is boilerplate that lists nearly every artifact type in the suite (URL, token, versión, rango de IP, HTML, Markdown, archivo para agentes) and therefore does not discriminate between this tool and its many sibling parse tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http-statusExplicar código de estado HTTPARead-onlyIdempotentInspect
Explica un código de estado HTTP: frase estándar (inglés y español), clase, significado y si conviene reintentar. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula (http-headers-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Explains an HTTP status code: standard reason phrase (English and Spanish), class, short meaning, and whether a client should typically retry it. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | HTTP status code (integer; required; min 100; max 599). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| class | No | |
| known | No | |
| reason | No | |
| meaning | No | |
| reason_es | No | |
| retryable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, destructiveHint and openWorldHint=false, so the safety profile is pre-established. The description still adds real value beyond them: no network access, no stored state, determinism guarantee, and explicit limits (64 KB input, 1 s per call, 1 MB result). It does not describe the shape of the returned explanation, though the output schema covers 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?
The Spanish paragraph is front-loaded and structured (Cuándo / No para / Efectos / Determinista / Límites), which is good. But the trailing English restatement plus the truncated placeholder '[EN completo / full EN: inputSchema.description]' is wasted, confusing text that adds no information and inflates 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 one-parameter, read-only lookup with full schema coverage and an output schema, the description supplies everything an agent needs to call it correctly, including limits and determinism. The only shortfall is the vague positive trigger condition, which is a minor gap given how narrow the tool is.
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 single parameter already documents type, required status, minimum 100 and maximum 599 plus an example. The description adds no additional semantics beyond the valid range, so the baseline 3 for a fully documented schema is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Explica un código de estado HTTP') and enumerates the exact output fields: standard reason phrase in English and Spanish, class, meaning, and retry guidance. This is distinguishable from every sibling, including the nearest one (http-headers-parse).
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 explicitly excludes the nearest alternative — 'No para: convertir un bloque de encabezados HTTP crudos... (http-headers-parse)' — which is genuinely useful routing. However, the positive 'Cuándo' clause is generic boilerplate about parsing URLs, tokens, IP ranges and HTML/Markdown files, and never describes the actual condition for looking up a status code. Clear context, but the when-clause is misaligned with the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iban-validateValidar IBANARead-onlyIdempotentInspect
Valida un IBAN: país, longitud por país, caracteres y checksum mod 97 (ISO 7064); devuelve formatos y BBAN. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: verificar la sintaxis de un código SWIFT/BIC (swift-bic-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an IBAN: country code, country-specific length (about 80 countries), allowed characters and ISO 7064 mod-97 checksum; returns electronic and print formats and the BBAN. When: an identifier's format and check digit have to be verified offline before it is used. Not for: checking SWIFT/BIC code syntax (swift-bic-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| iban | Yes | IBAN (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bban | No | |
| No | ||
| valid | No | |
| country | No | |
| reasons | No | |
| electronic | No | |
| check_digits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, closed-world and idempotency, but the description adds operational facts those annotations do not: no network access, no stored state, deterministic output, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). The offline guarantee is especially actionable for an agent deciding whether a call can be batched locally.
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 core verb and checks, then cleanly segmented by labelled clauses (When / Not for / Side effects / Deterministic / Limits). The whole block is duplicated in Spanish and English, which doubles length without adding information, though each single-language version is 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?
An output schema exists, so return shape needn't be spelled out, yet the description still previews the returned formats and BBAN. Combined with the disclosed limits and the read-only/deterministic guarantees, an agent has everything needed to call this correctly and interpret 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%, with type, required flag, maxLength 64 and a spaced example already present; the description's 'up to 64 chars' merely restates maxLength. Budget-like figures (64 KB input) add marginal context but nothing about IBAN formatting tolerance (spaces, lowercase) that the schema doesn't already say.
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 ('Validates an IBAN') and enumerates exactly what is checked: country code, country-specific length (~80 countries), allowed characters and ISO 7064 mod-97 checksum, plus what is returned (electronic/print formats and BBAN). It explicitly distinguishes itself from swift-bic-validate, so an agent can separate the two 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?
Gives an explicit trigger ('When: an identifier's format and check digit have to be verified offline before it is used') and an explicit exclusion with the alternative named ('Not for: checking SWIFT/BIC code syntax (swift-bic-validate)'). Both the when and the when-not are stated rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
idempotency-keyClave de idempotenciaARead-onlyIdempotentInspect
Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: derivar el UUID versión 5 de un espacio de nombres y un nombre (uuid-v5). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Derives a deterministic idempotency key from a request (method, URL, canonical JSON body, optional scope) as SHA-256 hex or a UUID-shaped string, so retries of the same request reuse the same key. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL or operation name (string; required; up to 8192 chars). | |
| body | No | JSON body (canonicalized) (any JSON value; optional; default null). | |
| scope | No | Extra scope, e.g. user or payer ID (string; optional; default ""; up to 500 chars). | |
| format | No | Output format (optional; one of: hex, uuid; default "uuid"). | uuid |
| method | No | HTTP method (string; optional; default "POST"; up to 10 chars). | POST |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, so 'sin red, sin estado guardado' and 'misma entrada da la misma salida' mostly restate structured data. The genuinely additive content is the operational limits (64 KB JSON input, 1 s per call, 1 MB output), which an agent cannot get from annotations and which affect batching decisions.
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?
Labeled sections (Cuándo / No para / Efectos / Determinista / Límites) make it skimmable and front-load the core definition. It is somewhat padded by ES→EN duplication and a dangling '[EN completo / full EN: inputSchema.description]' fragment that adds no 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?
A pure-function tool with an output schema, complete param docs, and a description that covers purpose, exclusions, determinism, side effects and size/time limits. Nothing an agent needs in order to call it correctly or decide against 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 100%, so the baseline is 3; the description adds meaning beyond the schema by explaining that the body is canonicalized and that the format parameter yields either a SHA-256 hex digest or a UUID-shaped string. It does not, however, state how scope affects the derived key, which is the one parameter whose impact remains 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?
States a specific verb and artifact ('Deriva una clave de idempotencia determinista de una solicitud') plus the exact inputs (method, URL, canonical JSON body, optional scope) and output encodings (SHA-256 hex or UUID-shaped). It also names the near-miss sibling uuid-v5, so an agent can separate the two 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?
Explicit 'Cuándo' clause enumerates the concrete scenarios (tokens, costs, retries, chunking, ranking, JSON clean-up) and an explicit 'No para' clause routes UUIDv5 derivation to the uuid-v5 sibling. Both when-to-use and when-not-to-use are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imei-validateValidar IMEIARead-onlyIdempotentInspect
Valida un IMEI de 15 dígitos (Luhn) y lo separa en TAC y número de serie. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un número con el algoritmo de Luhn (luhn-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 15-digit mobile device IMEI with its Luhn check digit and splits it into TAC (type allocation code) and serial number. Validation only; it never computes check digits. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a number with the Luhn mod-10 checksum (luhn-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| imei | Yes | IMEI (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tac | No | |
| imei | No | |
| valid | No | |
| serial | No | |
| check_digit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, yet the description adds genuinely new facts: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). It restates the read-only/no-side-effects point that annotations already make, which keeps it just 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?
The content is front-loaded and segmented into labelled blocks (Cuándo, No para, Efectos, Límites), making it easy to scan. The cost is that the entire text is duplicated in Spanish and English, roughly doubling length for no additional 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 single-parameter, read-only validator with an output schema present, the description supplies the deciding details: input semantics, sibling disambiguation, determinism, and execution limits. 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% and the single parameter is documented there, so the baseline would be 3. The description still adds real meaning beyond the schema by specifying the 15-digit length and the Luhn check-digit requirement, which the schema's 'up to 64 chars' wording does not convey.
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 pairs a specific verb ('Valida') with a specific resource ('IMEI de 15 dígitos') and states the output decomposition into TAC and serial number. It also explicitly distinguishes itself from luhn-validate, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit 'Cuándo' condition (offline verification of format and check digit before use) and an explicit 'No para' exclusion naming the sibling tool luhn-validate. This is the when/when-not/alternatives pattern done fully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interest-rate-convertConvertir tasa de interés (EA, nominal)ARead-onlyIdempotentInspect
Convierte tasas entre efectiva anual (EA), nominal anual (p. ej. NMV) y efectiva periódica, vencidas o anticipadas. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: convertir un salario entre hora, mes y año (salary-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts interest rates between effective annual (EA/APY), nominal annual compounded m times (APR, e.g. NMV monthly in Colombia) and effective periodic rates, for advance or arrears payment. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: converting pay between hourly, monthly and annual figures (salary-convert). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Given rate type (required; one of: effective_annual, nominal_annual, effective_periodic). | |
| in_advance | No | Rate is anticipada (paid in advance) (boolean; optional; default false). | |
| rate_percent | Yes | Rate % (number; required; min -99; max 10000). | |
| periods_per_year | No | Compounding periods per year (12 = monthly) (integer; optional; default 12; min 1; max 365). |
Output Schema
| Name | Required | Description |
|---|---|---|
| periods_per_year | No | |
| nominal_annual_percent | No | |
| effective_annual_percent | No | |
| effective_periodic_percent | No | |
| periodic_in_advance_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered; the description still adds determinism ('la misma entrada da la misma salida') and concrete operational limits (64 KB input, 1 s per call, 1 MB result). Those runtime bounds are exactly the kind of context structured fields do not 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?
The Spanish block is front-loaded and dense, with scope first and limits last. However, the full 'EN:' restatement and the trailing '[EN completo / full EN: inputSchema.description]' pointer duplicate content already present, costing space without adding 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; the description covers purpose, selection criteria, exclusions, side-effect profile, determinism and size/time limits. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nevertheless adds conceptual meaning by explaining that nominal annual means compounded m times (APR, e.g. Colombian NMV) and that rates may be vencidas or anticipadas, which clarifies how 'from' and 'in_advance' interact. It stops short of tying periods_per_year explicitly to the nominal case.
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 (converts) and resource (interest rates) plus the exact scope: effective annual, nominal annual compounded m times, and effective periodic, in advance or arrears. It explicitly names the tool it is not (salary-convert), so an agent can rule out a plausible-looking sibling 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?
Uses an explicit 'Cuándo:' condition (financial math that must be exact and reproducible) and an explicit 'No para:' exclusion pointing at salary-convert. When-to-use, when-not-to-use and the alternative are all stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
int-gcd-lcmMCD y MCMARead-onlyIdempotentInspect
Calcula el MCD y MCM exactos de una lista de enteros de hasta 100 dígitos (BigInt, algoritmo de Euclides); el resultado es texto para no perder dígitos. Útil para fracciones, turnos y tamaños de lote. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: simplificar una fracción a su mínima expresión, con forma mixta y decimal (fraction-simplify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the exact GCD and LCM of a list of integers of up to 100 digits each, computed with BigInt and Euclid's algorithm; returned as text, keeping every digit. Useful for fractions, shift rotations and batch sizes. When: a numeric result has to be exact or reproducible instead of estimated. Not for: reducing a fraction (fraction-simplify). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| numbers | Yes | Integers (array of integer/string; required; at least 2 items; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| gcd | No | |
| lcm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior; the description adds side-effect disclosure (no network, no stored state), determinism, text output to preserve digits, and concrete limits (64 KB input, 1 s per call, 1 MB result). These details are consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and organized into useful sections (purpose, when, not for, side effects, determinism, limits). It loses some conciseness by duplicating the full text in Spanish and English, which is redundant for an English-reading agent.
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 one-parameter math utility with full annotations and an output schema, the description covers purpose, alternatives, side effects, determinism, and operational limits. No critical information needed 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?
The single 'numbers' parameter has 100% schema description coverage with type, pattern, min/max items, and examples. The description reinforces the 100-digit/BigInt handling but adds little parameter-specific guidance beyond the schema, such as edge-case handling for zero or negative values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calcula el MCD y MCM exactos de una lista de enteros'), specifies BigInt/Euclid and text output, and explicitly separates it from fraction-simplify. An agent can identify this as the exact GCD/LCM 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?
Provides an explicit 'Cuándo' condition (numeric result must be exact or reproducible, not estimated) and a 'No para' exclusion pointing to fraction-simplify. It also names concrete use cases such as fractions, shift rotations, and batch sizes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice-totalTotales de facturaARead-onlyIdempotentInspect
Calcula una factura desde ítems (cantidad, precio, descuento %, impuesto %): totales por línea, subtotal, impuestos por tasa y total. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: dividir una cuenta entre personas con propina opcional y redondeo de cada parte (bill-split). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes an invoice from line items (quantity, unit price, line discount %, tax rate %): line totals, subtotal, discount, tax grouped by rate, and grand total, rounded per line to the currency's minor units. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: splitting a bill among people with an optional tip % (bill-split). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Line items (array of object; required; at least 1 items; up to 1000 items). | |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
| global_discount_percent | No | Discount % on subtotal (number; optional; default 0; min 0; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | No | |
| total | No | |
| currency | No | |
| discount | No | |
| subtotal | No | |
| tax_total | No | |
| taxable_base | No | |
| taxes_by_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, and the description redundantly restates 'sin efectos secundarios'. It does add real value beyond the annotations: determinism, per-line rounding to the currency's minor units, and concrete limits (64 KB input, 1 s per call, 1 MB result). Loses a point only for the annotation-repeating sentence.
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 is front-loaded and each Spanish sentence earns its place, but the full content is duplicated verbatim in English, roughly doubling length, and the text ends with a dangling artifact ('[EN completo / full EN: inputSchema.description]') that reads like an unresolved template. Structurally sound, but wasteful.
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 described, and the description still supplies the essentials an agent needs: determinism, rounding model, currency minor units, and hard input/time/size limits. Only the truncated EN pointer keeps it from being fully self-contained.
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 items, currency and global_discount_percent. The description adds a little meaning — tax is grouped by rate, rounding is per line to the currency's minor units — but does not explain the interaction between line discount and global discount on subtotal. 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 ('Calcula una factura desde ítems') and enumerates exactly what is produced: line totals, subtotal, discount, tax grouped by rate, grand total. It explicitly names the sibling it is not (bill-split), so an agent can route between them 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?
Provides an explicit 'Cuándo' condition (money/tax/financial math that must be exact and reproducible) and an explicit 'No para' exclusion naming bill-split with the distinguishing condition (splitting among people with optional tip). This is the full when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ip-parseAnalizar dirección IPARead-onlyIdempotentInspect
Valida una IP v4/v6 y devuelve forma canónica y expandida, entero, nombre DNS inverso y tipo (privada, loopback, global…). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: describir un bloque CIDR IPv4/IPv6 (cidr-info). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an IPv4 or IPv6 address and returns canonical (RFC 5952 compressed) and expanded forms, integer and hex values, reverse-DNS name, and its type (private, loopback, link-local, documentation, multicast, CGNAT, global…). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| ipv4 | No | |
| type | No | |
| address | No | |
| integer | No | |
| version | No | |
| expanded | No | |
| is_private | No | |
| reverse_dns | No |
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 largely given. The description goes beyond them usefully by adding hard limits (64 KB JSON input, 1 s per call, 1 MB result) and an explicit determinism guarantee, which annotations do not express.
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 correctly, but the text is duplicated: a full Spanish block followed by a full English block, and the EN text is repeated verbatim again in inputSchema.description. The redundancy inflates the payload without adding 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 enumerated return fields are redundant-yet-harmless rather than required; with annotations, limits, determinism and the sibling exclusion all covered, an agent has everything it needs to call this correctly. Missing only edge-case behavior (e.g. what happens on invalid/empty input) to reach a 5.
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?
Only one parameter and schema coverage is 100% – the schema already documents type, required-ness, the 64-char maxLength and an example. The description adds nothing parameter-specific (no format nuances such as accepting IPv6 zone IDs or bracketed forms), so 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+resource ('Valida una IP v4/v6') and enumerates the outputs (canonical RFC 5952, expanded, integer, hex, reverse DNS, type), so the agent knows exactly what comes back. It also distinguishes itself from a close sibling by name: 'No para: describir un bloque CIDR (cidr-info)'.
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 an explicit 'Cuándo' section and an explicit exclusion pointing to cidr-info, which is exactly the routing an agent needs against the many CIDR siblings. However, the trigger list is scattershot ('un token, una versión, ... un documento HTML o Markdown'), which muddies rather than sharpens the selection criteria and may cause over-invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ip-range-to-cidrsRango de IP a bloques CIDRARead-onlyIdempotentInspect
Convierte un rango de IPs inicio-fin en la lista mínima de bloques CIDR que lo cubre. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: verificar si una IP está dentro de alguno de varios bloques CIDR (cidr-contains). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts an inclusive start-end IP range (IPv4 or IPv6) into the minimal list of CIDR blocks that covers exactly that range (at most 1,000 blocks). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking whether an IP address falls inside any of a list of CIDR blocks (cidr-contains). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Last IP (string; required; up to 64 chars). | |
| start | Yes | First IP (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cidrs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value beyond them: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result, 1,000 blocks max) that an agent needs to size inputs and avoid failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and tight, but the description is duplicated wholesale in Spanish and English and the 'When' clause is boilerplate that does not belong to this tool, padding the definition without adding selecting 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 does not need to explain return values, and it compensates by stating determinism, the block-count cap and the input/time/size limits. The main remaining gap is the vague applicability list and the unmentioned cidr-split relationship.
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% with only two well-named parameters, so the schema does the heavy lifting. The description adds the useful fact that both IPv4 and IPv6 are accepted and that the range is inclusive, but it does not clarify edge cases such as start greater than end or mixed-family input, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: it converts an inclusive start-end IP range into the minimal covering list of CIDR blocks, capped at 1,000. That is precise enough to distinguish it from the CIDR-oriented siblings, and the description names cidr-contains explicitly as the thing it is not.
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 'Not for' clause is genuinely useful and names the alternative (cidr-contains) with the condition that selects it. But the positive 'When' clause is a generic template list (URLs, tokens, versions, HTML/Markdown documents) that does not actually describe when to build a CIDR range, and it never mentions cidr-split, which is the closest-looking sibling for block decomposition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isbn-validateValidar ISBNARead-onlyIdempotentInspect
Valida un ISBN-10 (mod 11) o ISBN-13 (prefijo 978/979) y devuelve ambas formas cuando es posible. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un ISSN (issn-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an ISBN-10 (mod 11, X allowed) or ISBN-13 (EAN mod 10, 978/979 prefix) and returns both forms when convertible. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating an ISSN (issn-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| isbn | Yes | ISBN (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| isbn10 | No | |
| isbn13 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent and closed-world, so the 'no side effects / no network' sentence largely repeats structured data. What the description genuinely adds is quantitative operating limits: 64 KB JSON input, 1 s per call, 1 MB result, plus the determinism guarantee and the both-forms-when-convertible output 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?
Each language block is tight, front-loaded with the purpose, and structured into When / Not for / Side effects / Deterministic / Limits. The full bilingual duplication roughly doubles the token footprint, which is a real cost even though no single 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?
For a one-parameter validation tool with an output schema (so return shape needs no prose), the definition covers purpose, routing, safety profile, determinism, input format nuances and operational limits. Nothing an agent needs in order 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% with a single documented 'isbn' field, so the baseline is 3. The description earns above baseline by specifying the accepted input semantics an agent cannot get from the schema: hyphenated forms, ISBN-10 with 'X' check character, and ISBN-13 restricted to the 978/979 prefix.
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 technical detail: validates ISBN-10 (mod 11, X allowed) or ISBN-13 (EAN mod 10, 978/979 prefix) and returns both forms when convertible. It explicitly names the sibling it is not for (issn-validate), so an agent can separate the two identifier validators 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?
Has explicit 'When:' (verify format and check digit offline before use) and 'Not for:' clauses naming the alternative tool (issn-validate). Both the positive trigger and the exclusion are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isin-validateValidar ISINARead-onlyIdempotentInspect
Valida un ISIN (ISO 6166) de 12 caracteres: prefijo de país, NSIN y dígito Luhn. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un CUSIP de 9 caracteres con su dígito de control (cusip-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 12-character International Securities Identification Number (ISO 6166): country prefix, NSIN and Luhn check digit over the letter-expanded code. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a 9-character CUSIP (cusip-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| isin | Yes | ISIN (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| nsin | No | |
| valid | No | |
| country | No | |
| check_digit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the description earns credit for the extra context: no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). It repeats the read-only point but the determinism and limit disclosures are genuinely additive.
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 purpose, then labeled sections for when/not-for/side-effects/limits, so an agent can scan quickly. The cost is that the entire text is duplicated in Spanish and English, roughly doubling length for no added 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 explained, and the description covers purpose, alternatives, side effects, determinism and operational limits. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real meaning by stating the value must be a 12-character ISIN with an ISO 6166 structure — usefully resolving the schema's looser 'up to 20 chars' constraint. It does not discuss case handling or what happens on malformed input.
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 (validate a 12-character ISIN per ISO 6166) and enumerates the components checked: country prefix, NSIN and Luhn check digit. That level of specificity separates it cleanly from the many other identifier validators in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When' clause (verify format and check digit offline before using an identifier) plus an explicit 'Not for' clause naming the sibling cusip-validate and the distinguishing property (9 characters vs 12). Routing between the two tools requires no inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iso-country-lookupBuscar país ISO 3166-1ARead-onlyIdempotentInspect
Busca países ISO 3166-1 alfa-2 por código o por nombre en español o inglés (sin importar tildes, coincidencia parcial) y devuelve código, ambos nombres y la bandera. Nombres del CLDR de Unicode incluido en Node.js; 249 códigos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: buscar códigos de idioma ISO 639-1 de dos letras por código o por nombre en español o inglés (iso-language-lookup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Looks up ISO 3166-1 alpha-2 countries by code or by name in Spanish or English (accent-insensitive, partial match) and returns the code, both names and the flag emoji. Names come from the Unicode CLDR data bundled with Node.js; 249 codes. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (integer; optional; default 10; min 1; max 50). | |
| query | Yes | Code (CO) or name (Colombia, alemania, United States…) (string; required; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| source | No | |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so restating 'sin efectos secundarios' earns nothing. The description does add real context beyond annotations: CLDR-sourced names, 249 codes, determinism, and explicit limits (1 s per call, 1 MB result). The 'JSON input up to 64 KB' limit is suspicious boilerplate since the tool takes a string query, which slightly muddies the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and useful, but the same text is delivered twice (full Spanish block then full English block) plus a self-referential pointer to 'inputSchema.description'. That duplication roughly doubles length without adding information, and the structured-data 'Cuándo' 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?
An output schema exists, so return values need not be explained, yet the description still names them (code, both names, flag emoji). Coverage of source data, cardinality, matching rules, side effects and limits is sufficient for an agent to call this correctly on the first try.
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, but the description adds matching semantics the schema does not state: accent-insensitivity, partial matching, and that names are accepted in Spanish or English. It says nothing about the `limit` parameter's behavior (truncation vs. ranked results), which is the one remaining 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 and resource (look up ISO 3166-1 alpha-2 countries) plus the lookup key modes (code, Spanish/English name, accent-insensitive, partial match) and the returned fields. It explicitly separates itself from the sibling iso-language-lookup, so an agent can pick the right tool 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 'No para' clause names the alternative (iso-language-lookup) and the exact condition that selects it, which is strong routing guidance. The 'Cuándo' clause, however, is generic boilerplate about transforming/comparing structured data and does not describe a concrete country-lookup scenario, so the positive case is weaker than the negative one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iso-language-lookupBuscar idioma ISO 639-1ARead-onlyIdempotentInspect
Busca códigos de idioma ISO 639-1 de dos letras por código o por nombre en español o inglés (sin importar tildes, coincidencia parcial). Nombres del CLDR de Unicode incluido en Node.js. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: buscar países ISO 3166-1 alfa-2 por código o por nombre en español o inglés (iso-country-lookup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Looks up ISO 639-1 two-letter language codes by code or by name in Spanish or English (accent-insensitive, partial match). Names come from the Unicode CLDR data bundled with Node.js. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (integer; optional; default 10; min 1; max 50). | |
| query | Yes | Code (qu) or name (quechua, Spanish…) (string; required; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| source | No | |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, no network/open world, idempotent, and non-destructive behavior, but the description adds concrete operational limits: 64 KB input, 1 second per call, and 1 MB result. It also states deterministic behavior and no stored state, though some of that repeats annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, usage, exclusion, side effects, and limits, so it is easy to scan. However, the bilingual format repeats the same content in Spanish and English, which adds length beyond what is strictly necessary.
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 lookup tool with a complete input schema, rich annotations, and an output schema, the description covers purpose, alternatives, behavior, determinism, and limits. Nothing important for correct invocation appears 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 both parameters. The description adds useful semantic detail beyond the schema: query accepts a code or name, works in Spanish or English, is accent-insensitive, supports partial matching, and uses Unicode CLDR data bundled with Node.js.
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: looking up ISO 639-1 two-letter language codes by code or by name in Spanish or English. It also explicitly distinguishes this from the sibling iso-country-lookup, so an agent can select it 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?
It gives explicit 'Cuándo' guidance about transforming, comparing, or checking structured data exactly, and a clear 'No para' exclusion pointing to iso-country-lookup for ISO 3166-1 alpha-2 country lookups. This is close to ideal routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is-prime¿Es número primo?ARead-onlyIdempotentInspect
Prueba la primalidad con Miller-Rabin determinista hasta 3,3·10^24 y devuelve los primos siguiente y anterior. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: factorizar un entero (prime-factorize). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Tests primality with deterministic Miller-Rabin for integers up to 3.3·10^24 (number or decimal string) and returns the next and previous primes. When: a numeric result has to be exact or reproducible instead of estimated. Not for: factorizing an integer up to 10^20 into primes (prime-factorize). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Integer (integer or string; required; up to 25 chars; pattern ^-?\d{1,24}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| n | No | |
| is_prime | No | |
| next_prime | No | |
| previous_prime | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, and closed-world behavior. The description adds deterministic algorithm details, time/input/result limits, and return content; the side-effect sentence is largely redundant with annotations but consistent, not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and well structured within each language, but the entire description is duplicated in Spanish and English. For a single agent, half the text repeats the same information and does not earn 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?
For a simple one-parameter tool with an output schema and rich annotations, the description covers purpose, usage, alternatives, determinism, side effects, and operational limits. 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 coverage is 100%, so the schema already documents the single n parameter. The description adds the mathematical upper bound and accepted number/decimal-string forms, but the stated 3.3e24 bound sits awkwardly against the schema's 24-digit regex pattern, so the added value is limited and slightly risky.
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 (tests primality), names the deterministic Miller-Rabin algorithm, gives the supported range, and says it returns next/previous primes. It also explicitly distinguishes itself from the sibling prime-factorize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' condition (exact/reproducible numeric results instead of estimates) and a 'Not for' condition naming the alternative prime-factorize. The routing decision is clear without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issn-validateValidar ISSNARead-onlyIdempotentInspect
Valida un ISSN (8 caracteres, dígito de control mod 11) de publicaciones seriadas. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un ISBN-10 (isbn-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an ISSN (8 characters, mod-11 check digit with X) for serial publications. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating an ISBN-10 (isbn-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| issn | Yes | ISSN (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, closed-world, idempotent, non-destructive, so 'read-only' is partly redundant. However, the description adds genuinely new behavioral facts: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not elaborate on the failure shape, but the output schema covers 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?
Front-loaded with purpose, then when/not-for, then effects and limits — a good structural order with no filler sentences. The only cost is the full ES/EN duplication, which roughly doubles length for the same content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter validation tool with an output schema and full annotations, the description covers format rules, scope, alternatives, side effects, determinism, and operational limits. 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% with a single required string, so the baseline is 3. The description still earns credit by adding accepted-format semantics the schema lacks: 8 characters, mod-11 check digit, 'X' allowed — an agent knows what input will pass without guessing.
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 plus the defining technical rule: 'Validates an ISSN (8 characters, mod-11 check digit with X) for serial publications.' It explicitly names the confusion-prone sibling (isbn-validate), so an agent can separate it from the other identifier validators in the 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?
Provides explicit when ('format and check digit have to be verified offline before it is used') and when-not ('Not for: validating an ISBN-10 (isbn-validate)'), including the alternative tool name. Nothing about tool selection 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.
jaro-winklerSimilitud Jaro-WinklerARead-onlyIdempotentInspect
Calcula la similitud Jaro y Jaro-Winkler (0-1), adecuada para nombres cortos. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular la distancia de edición de Levenshtein entre dos cadenas y similitud normalizada (levenshtein-distance). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the Jaro and Jaro-Winkler similarity (0-1) with prefix scale 0.1 and up to 4 prefix characters, suited to short strings like names. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the edit distance (levenshtein-distance). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First string (string; required; up to 5000 chars). | |
| b | Yes | Second string (string; required; up to 5000 chars). | |
| prefix_scale | No | Prefix scale (number; optional; default 0.1; min 0; max 0.25). | |
| case_sensitive | No | Case sensitive (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| jaro | No | |
| jaro_winkler | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closedWorld, non-destructive, so the safety profile is covered; the description still adds real value with determinism, absence of stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). "No network access" duplicates openWorldHint=false, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb + algorithm and organized into clearly labeled sections (When / Not for / Side effects / Deterministic / Limits). The full Spanish-plus-English duplication doubles the length, which is defensible for accessibility but is still 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 and rich annotations, the description fills the remaining gaps: determinism, resource limits, and the sibling it replaces. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema lacks: the prefix scale default of 0.1, the cap of 4 prefix characters, and the note that the metric suits short strings. It does not explain case_sensitive behavior, so not a 5.
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 algorithm ("Calcula la similitud Jaro y Jaro-Winkler"), gives the output range (0-1) and the intended input domain (short strings like names), plus the prefix-scale configuration. An agent can distinguish it from hash/compare siblings 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?
Explicitly contrasts with levenshtein-distance ("No para: calcular la distancia de edición..."), which routes the agent away from the most likely confusion. However the positive "Cuándo" clause is generic boilerplate ("transformar, comparar o medir un texto con exactitud") and no other similarity siblings (dice-similarity, damerau-levenshtein, hamming-distance) are addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-canonicalizeJSON canónico (RFC 8785)ARead-onlyIdempotentInspect
Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: ordenar recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos (json-sort-keys). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Serializes a JSON value in RFC 8785 (JCS) canonical form: sorted keys, no whitespace, ECMAScript number formatting; also returns its SHA-256 for signing or deduplication. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: recursively sorting object keys (json-sort-keys). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Any JSON value (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sha256 | No | |
| canonical | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, yet the description adds concrete operational context beyond them: no network access, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). This is exactly the extra safety/limits context the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English portion is front-loaded and cleanly labeled (When / Not for / Side effects / Deterministic / Limits), with zero filler. The mirrored Spanish translation and the stray '[EN completo / full EN: inputSchema.description]' note add redundancy that keeps it just short of ideal.
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 tool with an output schema (so return-value explanation is unnecessary) and rich annotations, the description covers purpose, usage, exclusions, side effects, determinism, and limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'value' parameter already includes an example and is documented, so the baseline is 3. The description's RFC 8785 details explain the transformation rather than adding meaning about the parameter itself, so it does not materially exceed the schema's own documentation.
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 (canonicalize/serialize) and resource (JSON value) plus the precise standard (RFC 8785 JCS) and its defining behaviors (sorted keys, no whitespace, ECMAScript number formatting, SHA-256 return). It explicitly distinguishes itself from the sibling json-sort-keys, so an agent can tell the two apart 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?
Provides explicit 'When:' conditions (transforming, comparing, or exactly checking structured data such as JSON, CSV, YAML, XML, arrays) and an explicit 'Not for:' exclusion naming the alternative json-sort-keys. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-describeDescribir estructura JSONARead-onlyIdempotentInspect
Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir documentos de ejemplo (json-schema-from-samples). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Summarizes a JSON value: nesting depth, counts of each type, number of keys, serialized size, and the set of distinct paths (arrays collapsed to []). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: turning sample documents (json-schema-from-samples). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Any JSON value (any JSON value; required). | |
| max_paths | No | Max paths to list (integer; optional; default 200; min 0; max 5000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bytes | No | |
| depth | No | |
| paths | No | |
| counts | No | |
| distinct_paths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so restating 'no side effects, read-only, no network, no state' earns little credit. The description does add genuinely new behavioral facts not in structured data: hard limits of 64 KB input, 1 s per call, and 1 MB result, plus the determinism guarantee.
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 purpose, then clearly labeled sections (When / Not for / Side effects / Deterministic / Limits) that are easy to scan. The only waste is that the entire content is duplicated verbatim in Spanish and English, roughly doubling length without adding 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 two-parameter read-only tool with an output schema and full annotation coverage, this is complete: what it computes, when to reach for it, what to use instead, safety profile, determinism, and the operational limits an agent needs to avoid oversized inputs or truncated results.
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 both parameters (value, max_paths with default 200, range 0-5000) are already documented in the schema, so the baseline of 3 applies. The description adds interpretive detail about output paths (arrays collapsed to []) but says nothing extra about max_paths or the accepted input shapes beyond 'JSON value'.
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 plus the exact outputs produced: nesting depth, counts per type, key count, serialized size, and distinct paths with arrays collapsed to []. That level of detail makes it instantly distinguishable from json-flatten-paths, json-extract or stats-describe, and it explicitly names the sibling it is not (json-schema-from-samples).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' (structured data has to be transformed, compared or checked exactly) and an explicit 'Not for' naming json-schema-from-samples, which is a real exclusion. The 'when' is broad enough that it could also match several array-*/json-* siblings, but the one named alternative plus the concrete output list keeps usage reasonably well-scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-diff-patchDiferencia JSON como parcheARead-onlyIdempotentInspect
Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: aplicar un JSON Patch (json-patch-apply). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes an RFC 6902 JSON Patch that transforms document a into document b (object keys diffed recursively, arrays element-wise with tail adds/removes). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: applying an RFC 6902 JSON Patch (json-patch-apply). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Source document (any JSON value; required). | |
| b | Yes | Target document (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| equal | No | |
| patch | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true and destructiveHint=false, but the description adds useful behavioral context beyond them: no network access, no stored state, deterministic output, a 64 KB input limit, 1 s per call and a 1 MB result limit. These limits and guarantees are exactly the kind of operational details an agent needs before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and clearly organized into purpose, when/not-for, side effects, determinism and limits. The main conciseness issue is that the full description is duplicated in Spanish and English, which increases length even though the structure remains clean.
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 simple two-parameter tool with rich annotations, an output schema and complete schema descriptions, the definition covers purpose, exclusions, side effects, determinism and operational limits. No important calling context appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: a is documented as the source document and b as the target document, both required and accepting any JSON value. The description adds useful comparison semantics such as recursive object key diffing and element-wise array handling with tail adds/removes, but it does not add parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and output format: computes an RFC 6902 JSON Patch that transforms document a into document b. It explicitly distinguishes itself from the closest sibling by saying it is not for applying a JSON Patch, directing that case to json-patch-apply.
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 an explicit 'When' section for transforming, comparing or exactly checking structured data, and an explicit 'Not for' exclusion with the alternative tool json-patch-apply. This leaves no meaningful guessing about when to select this tool versus its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-extractExtraer JSON de un textoARead-onlyIdempotentInspect
Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: extraer bloques de código delimitados (code-blocks-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds and parses JSON objects/arrays embedded in free text (e.g. an LLM reply): fenced ```json blocks first, then balanced {…}/[…] spans; optionally repairs near-JSON. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: extracting fenced code blocks (code-blocks-extract). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| repair | No | Try json-repair on spans that fail to parse (boolean; optional; default true). | |
| max_results | No | Max results (integer; optional; default 10; min 1; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the bar is lower; the description nonetheless adds determinism ('same input, same output'), extraction precedence (fenced ```json first, then balanced spans), and hard limits (64 KB, 1 s, 1 MB). The 'no network / no stored state' claims largely restate openWorldHint=false and readOnlyHint=true, which tempers the score.
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?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Determinista / Límites) and no filler sentences. However, the Spanish and English paragraphs are near-verbatim translations, so roughly half the text repeats information, inflating metadata size for no marginal signal.
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 rightly omitted, and the description covers the operational envelope (side effects, determinism, time/size limits). Minor gap: 'entrada JSON de hasta 64 KB' is ambiguous against the schema's 1 MB maxLength on text, leaving unclear whether 64 KB caps the input text or the extracted 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 100%, so the baseline is 3; 'reparación opcional' echoes the repair parameter already documented in the schema. Nothing is added about max_results or about ordering/truncation semantics when more spans than the limit are found.
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 ('Encuentra y analiza objetos/arreglos JSON dentro de un texto libre') plus the parsing strategy (fenced blocks first, then balanced spans). It also explicitly distinguishes itself from the adjacent sibling code-blocks-extract, so an agent can choose 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?
Uses explicit 'Cuándo:' / 'No para:' sections, naming concrete agent-loop scenarios (tokens, costs, retries, chunking, ranking) and a named exclusion with the alternative tool. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-flatten-pathsAplanar JSONARead-onlyIdempotentInspect
Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: devolver un objeto con solo las rutas indicadas (json-pick). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Flattens nested objects/arrays into one level with dotted keys (a.b.0.c) or bracket array indices (a.b[0].c). Empty objects/arrays are kept as leaves. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: returning a new object containing only the given dotted paths (json-pick). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Object or array (any JSON value; required). | |
| separator | No | Key separator (string; optional; default "."; at least 1 chars; up to 4 chars). | . |
| array_style | No | Array index style (optional; one of: dots, brackets; default "dots"). | dots |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), it adds determinism, that empty objects/arrays are kept as leaves, that there is no network or stored state, and hard limits (64 KB input, 1 s per call, 1 MB result). These are concrete traits an agent cannot get from the 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?
Each sentence earns its place — purpose, when, when-not, side effects, determinism, limits — and the core purpose is front-loaded. The full Spanish/English duplication roughly doubles length, which is a moderate cost against otherwise tight structure.
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, a fully documented 3-parameter schema, and an output schema, the description covers all remaining gaps: scope, alternatives, limits and edge behavior (empty containers as leaves). Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds meaning by showing both output forms (a.b.0.c vs a.b[0].c), which clarifies what the array_style parameter actually changes. It does not elaborate on separator behavior, keeping it one notch above baseline rather than a full 5.
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 — flattening nested objects/arrays into one level with dotted keys (a.b.0.c) or bracket indices — and immediately contrasts it with the sibling json-pick. An agent can 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?
It gives an explicit 'When' (structured data has to be transformed, compared or checked exactly) and an explicit 'Not for' that routes to json-pick. The alternative is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-merge-patch-applyAplicar JSON Merge PatchARead-onlyIdempotentInspect
Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: generar el JSON Merge Patch (json-merge-patch-create). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Applies an RFC 7386 JSON Merge Patch: objects merge recursively, null deletes a key, any other value replaces. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: generating the RFC 7386 merge patch that turns document a into b (json-merge-patch-create). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Merge patch (any JSON value; required). | |
| value | Yes | Target document (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, but the description adds real value beyond them: no network access, no stored state, determinism guarantees, and concrete operational bounds (64 KB input, 1 s per call, 1 MB result). Those limits are the kind of information an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish/English duplication roughly doubles the length, but the content is front-loaded and cleanly labelled (When / Not for / Side effects / Deterministic / Limits), so every clause still carries information. Removing the redundancy would improve density without losing meaning.
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 two-parameter pure function with an output schema, nothing needed is missing: semantics, exclusions, side effects, determinism and size/time limits are all present. An agent can decide to call it and predict its behavior from the description alone.
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 two parameters are already documented, but the description adds genuine semantics by explaining what the patch value actually does (recursive merge, null deletion, replacement) rather than just saying 'any JSON value'. It stops short of per-parameter guidance, so it does not fully supersede the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Aplica un JSON Merge Patch (RFC 7386)') and immediately defines the operation's semantics: objects merge, null deletes, other values replace. That semantic summary alone distinguishes it from json-merge-patch-create, which is explicitly named as out of scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Cuándo' block and a 'No para' exclusion that names the sibling json-merge-patch-create. The positive 'when' clause, however, is broad boilerplate ('transformar, comparar o revisar con exactitud datos estructurados') that would apply to many sibling tools, so the exclusion does more discriminating work than the inclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-merge-patch-createCrear JSON Merge PatchARead-onlyIdempotentInspect
Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: aplicar un JSON Merge Patch (json-merge-patch-apply). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates the RFC 7386 merge patch that turns document a into b. Merge patches cannot set a value to null or patch inside arrays. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: applying an RFC 7386 JSON Merge Patch (json-merge-patch-apply). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Source document (any JSON value; required). | |
| b | Yes | Target document (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| patch | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, and the description stays consistent while adding context annotations cannot express: determinism, the 64 KB input / 1 s / 1 MB output limits, and the semantic caveat that merge patches cannot set null or patch inside arrays. That caveat is exactly the kind of trap an agent needs warned about.
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?
Each language block is tightly front-loaded with purpose, usage, exclusions, side effects, determinism and limits. The only cost is that the entire content is duplicated in Spanish and English, roughly doubling length for an agent that reads both.
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 2-parameter, read-only, deterministic tool with an output schema, everything an agent needs is present: purpose, alternatives, side-effect profile, runtime limits and the merge-patch semantic limitations. Nothing material is left 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?
Schema coverage is 100% and the schema already names and exemplifies a and b, so the baseline is 3. The description still adds the directional framing ('convierte a en b') and, more importantly, the merge-patch semantics that a and b are compared under (nulls and array elements are not patchable), which shapes how the agent should supply the 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 ('Genera el JSON Merge Patch (RFC 7386) que convierte a en b') and anchors it to a named standard. It also explicitly names the sibling it is not for (json-merge-patch-apply), so the agent can separate create from apply 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?
Uses explicit 'Cuándo' / 'No para' sections: use it when structured data must be transformed, compared or checked exactly, and do not use it to apply a patch (pointing to json-merge-patch-apply). Both the inclusion and the exclusion condition are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-minifyMinificar JSONARead-onlyIdempotentInspect
Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: formatear JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves (json-pretty). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses JSON text and serializes it without whitespace; reports byte sizes before and after. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing JSON text and re-serializes it with 2/4-space or tab indentation, optionally sorting object keys (json-pretty). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| json | No | any JSON value |
| bytes_after | No | |
| bytes_before | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description's 'no side effects / deterministic' statements mostly restate structured data. The genuinely additive content is the limit block, but it conflicts with the schema: the description caps JSON input at 64 KB while the schema sets maxLength to 1048576 (1 MB), leaving the real ceiling ambiguous.
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 purpose, then clearly labeled When / Not for / Side effects / Deterministic / Limits sections that scan quickly. The only waste is full duplication of the same content in Spanish and English, which roughly doubles length without adding 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 schema exists, so return values need no explanation, and the description still covers exclusions, determinism and performance limits — ample for a one-parameter pure function. Completeness is docked only because the stated 64 KB input cap disagrees with the schema's 1 MB maxLength, leaving an agent uncertain which limit is enforced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required parameter already documented ('JSON text (string; required)') and an example. The description adds no syntax, encoding, or validation semantics beyond that, so the baseline 3 applies; the size-limit remark is the only parameter-adjacent detail and it contradicts 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 precise verb+resource: parses JSON text and re-serializes it without whitespace, plus the extra output of before/after byte sizes. It explicitly names the sibling it is not (json-pretty with 2/4-space or tab indentation and optional key sorting), so an agent can discriminate between the two 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?
Has explicit 'When:' and 'Not for:' clauses, with the correct alternative tool named in parentheses. However the 'When' clause lists formats the tool cannot actually consume (CSV, YAML, XML, arrays) when the single parameter is strictly JSON text, which could route an agent to pass non-JSON input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-omitOmitir claves de JSONARead-onlyIdempotentInspect
Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: devolver un objeto con solo las rutas indicadas (json-pick). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Removes the given keys from an object; with deep=true removes them at every nesting level (e.g. strip password or token fields). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: returning a new object containing only the given dotted paths (json-pick). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Apply recursively (boolean; optional; default false). | |
| keys | Yes | Keys to remove (array of string; required; at least 1 items; up to 500 items). | |
| value | Yes | JSON value (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, no network, idempotent, and non-destructive behavior, and the description reinforces this with side-effects: none, no stored state, and deterministic output. It also adds operational limits: 64 KB input, 1 s per call, and 1 MB result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized into clear sections: purpose, when to use, when not to use, side effects, determinism, and limits. The main conciseness cost is the full Spanish/English duplication, which repeats the same information for a single-language reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, 100% schema description coverage, and presence of an output schema, the description covers everything an agent needs: purpose, alternative, side effects, determinism, and limits. No important behavioral or selection information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameters, establishing a baseline of 3. The description adds helpful meaning for deep=true by explaining removal at every nesting level and gives a concrete password/token stripping example, though it does not add much beyond that for value or keys.
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: removes given keys from an object, with deep=true removing them at every nesting level. It also distinguishes the tool from the sibling json-pick by explicitly saying it is not for returning only the given paths.
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 explicit guidance under 'When' and 'Not for', naming the alternative json-pick and the condition that selects it. The structured-data examples (JSON, CSV, YAML, XML, arrays) further clarify the intended context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-parse-checkValidar sintaxis JSONARead-onlyIdempotentInspect
Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: reparar JSON casi válido típico de salidas de LLM (json-repair). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks whether text is valid JSON (RFC 8259); on error returns the parser message with line and column. Also reports the top-level type and nesting depth. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: repairing almost-JSON typical of LLM output (json-repair). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| depth | No | |
| error | No | |
| valid | No | |
| location | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description still adds real value with determinism and hard limits (64 KB input, 1 s/call, 1 MB result). However, the stated 64 KB input limit conflicts with the schema's maxLength of 1048576, which is an inconsistency the agent may trip over.
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?
Content is well front-loaded and sectioned (When / Not for / Side effects / Deterministic / Limits), but the entire description is duplicated verbatim in Spanish and English, roughly doubling length for a one-parameter validation tool. The duplicated block is the kind of waste that dilutes signal in a long tool list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the remaining burden on the description is error/limit behavior, and it covers that (line/column error reporting, type and depth output, size/time caps, determinism). Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 100% schema description coverage and an example, so the schema already does the work; the description adds nothing parameter-level beyond saying the input is the JSON text. Baseline 4 applies for a single fully-documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: checks whether text is valid JSON (RFC 8259) and on error returns the parser message with line and column, plus top-level type and nesting depth. It explicitly names the sibling it is not (json-repair) so the agent can distinguish it 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?
Provides explicit 'When' (transforming/comparing/checking structured data exactly) and 'Not for' (repairing almost-JSON from LLM output → json-repair) sections. The routing condition is unambiguous, which matters in a sibling list containing json-repair, json-schema-validate and json-describe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-patch-applyAplicar JSON Patch (RFC 6902)ARead-onlyIdempotentInspect
Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: calcular un JSON Patch (json-diff-patch). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Applies an RFC 6902 JSON Patch (add, remove, replace, move, copy, test) atomically to a document; any failing operation aborts the whole patch. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: computing an RFC 6902 JSON Patch that transforms document a into document b (json-diff-patch). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Patch operations (max 1,000; result max 200,000 nodes) (array of object; required; up to 1000 items). | |
| value | Yes | Target document (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive/closed-world, and the description still adds meaningful behavior beyond them: atomic all-or-nothing semantics on failure, determinism, no network or stored state, and concrete limits (64 KB input, 1 s, 1 MB result). The atomicity guarantee is the single most important behavioral fact for a patch tool and it is stated up front.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized into labeled clauses (When / Not for / Side effects / Deterministic / Limits), which scans well. The full Spanish/English duplication doubles the length, which is useful for human readers but redundant for an agent consuming one language.
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 structure need not be described. Combined with atomicity, determinism, resource limits, and the explicit exclusion of json-diff-patch, nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters and the nested op object are already documented, which sets the baseline at 3. The description adds little parameter-level detail beyond restating the operation set — the 64 KB input cap is the main extra fact — so it does not meaningfully exceed 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 ('Applies an RFC 6902 JSON Patch'), enumerates the supported operations (add, remove, replace, move, copy, test), and explicitly names the sibling it is not (json-diff-patch). An agent can distinguish it from json-merge-patch-apply or json-diff-patch 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?
Provides explicit 'When:' (transforming/comparing/checking structured data) and 'Not for:' with a named alternative (json-diff-patch for computing a patch). This is exactly the routing information an agent needs to choose between the two patch-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-pathConsulta JSONPathARead-onlyIdempotentInspect
Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: leer el valor en una ruta como /clientes/0/nit dentro de un documento JSON con la sintaxis RFC 6901 (json-pointer-get). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Evaluates a JSONPath query (RFC 9535 subset: .name, ['name'], [n], [*], .., [a:b:c], unions, filters with ==, !=, <, <=, >, >=, &&, ||, !) and returns matching values and their normalized paths. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | JSONPath expression starting with $ (string; required; up to 1000 chars). | |
| limit | No | Max results (integer; optional; default 1000; min 1; max 10000). | |
| value | Yes | JSON document (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| paths | No | |
| values | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-open-world, and the description adds concrete behavioral facts beyond them: no side effects, no network, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). No contradiction with the safety 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?
Front-loaded with purpose then labeled sections (When / Not for / Side effects / Limits) in the Spanish text, so scanning is easy. The full English restatement roughly doubles the length and repeats content, which costs some conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with an output schema, full param coverage, and rich annotations, the description covers purpose, routing, limits, and determinism. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so both required params are documented structurally; the description adds value by enumerating the supported JSONPath operator subset (.name, ['name'], [n], [*], .., [a:b:c], unions, filters) and size/time limits. It stops short of detailing the `limit` interaction with result truncation.
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 ('Evalúa una consulta JSONPath') plus scope (RFC 9535 subset with filters) and the return shape (values + normalized paths). It explicitly names json-pointer-get as the sibling it is not, letting an agent discriminate 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?
Provides an explicit 'Cuándo' block (transform, compare, check structured data: JSON/CSV/YAML/XML/arrays) and an explicit 'No para' block naming json-pointer-get for RFC 6901 path reads. When-to-use, when-not, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-pickElegir claves o rutas de JSONARead-onlyIdempotentInspect
Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: aplanar objetos y arreglos anidados en un nivel con claves con puntos (json-flatten-paths). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns a new object containing only the given dotted paths (e.g. user.name, items.0.id) from the input object. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: flattening nested objects/arrays into one level with dotted keys (json-flatten-paths). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Dotted paths to keep (array of string; required; at least 1 items; up to 500 items). | |
| value | Yes | Object (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, and non-open-world behavior. The description adds useful operational context beyond annotations, including no network access, no stored state, deterministic output, and concrete limits of 64 KB input, 1 second per call, and 1 MB result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and clearly structured with labels for definition, usage, exclusions, side effects, determinism, and limits. It loses some conciseness because the same information is duplicated in Spanish and English, but each language block is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only JSON transformation tool with full schema coverage, annotations, and an output schema, the description supplies everything needed: purpose, when to use, exclusions, side effects, determinism, and limits. No important behavioral context appears 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 both parameters well. The description adds meaningful path syntax examples such as user.name and items.0.id, clarifying dotted-path semantics beyond the terse schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns a new object containing only the given dotted paths from the input object. It also gives concrete path examples and explicitly contrasts itself with json-flatten-paths, so an agent can distinguish it from that sibling.
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 an explicit "When" condition and a clear "Not for" exclusion naming json-flatten-paths. However, it does not distinguish itself from other closely related siblings such as json-extract, json-omit, or json-path, leaving some alternative-selection inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-pointer-getLeer con JSON Pointer (RFC 6901)ARead-onlyIdempotentInspect
Lee el valor en una ruta como /clientes/0/nit dentro de un documento JSON con la sintaxis RFC 6901 (~1 es /, ~0 es ~) e indica si la ruta existe en lugar de fallar. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: evaluar una consulta JSONPath (json-path). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Reads the value at a path such as /clientes/0/nit inside a JSON document using RFC 6901 syntax (~1 stands for /, ~0 for ~) and reports whether the path exists rather than failing. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: evaluating a JSONPath query (json-path). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | JSON document (any JSON value; required). | |
| pointer | Yes | JSON Pointer (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that a missing path is reported rather than raising an error, that there is no network access and no stored state, that output is deterministic, and by giving concrete hard limits (64 KB input, 1 s per call, 1 MB result). These are exactly the operational constraints an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each single-language block is front-loaded and well structured: purpose, example, when, not-for, side effects, determinism, limits. The cost is full duplication in Spanish and English plus a trailing meta-note referencing inputSchema.description, which adds token weight without new 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, return shape need not be described, and the description still covers scope, error behavior, side effects and limits. A minor gap is that it does not state what happens for a syntactically invalid pointer (as opposed to a non-existent path).
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% with per-property descriptions and examples, so the baseline is 3. The description earns above baseline by explaining RFC 6901 escaping (~1 for '/', ~0 for '~') and illustrating a nested array path, semantics not spelled out in the schema itself.
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 ('Reads the value at a path ... inside a JSON document'), names the standard (RFC 6901), and gives a concrete example path (/clientes/0/nit). It distinguishes itself from json-path by explicitly saying it is not for JSONPath evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' scenario (exact transformation/comparison/checking of structured data) and an explicit 'Not for' exclusion naming the json-path sibling. It does not, however, differentiate from other close siblings such as json-extract, json-pick, or json-flatten-paths, which an agent may also consider for path-based reads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-prettyFormatear JSONARead-onlyIdempotentInspect
Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: minificar JSON eliminando espacios (json-minify). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses JSON text and re-serializes it with 2/4-space or tab indentation, optionally sorting object keys. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing JSON text and serializing it without whitespace (json-minify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | JSON text (string; required). | |
| indent | No | Indent (optional; one of: 2, 4, tab; default "2"). | 2 |
| sort_keys | No | Sort keys recursively (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| json | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered; the description still adds determinism and concrete limits (64 KB input, 1 s per call, 1 MB output). Minor inconsistency: the schema allows maxLength 1 MB for the input while the description caps input at 64 KB, which could confuse an agent on large payloads.
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 core action, then cleanly segmented into when/not-for/side-effects/limits. The full Spanish and English duplication roughly doubles the length, which is a deliberate bilingual choice but dilutes density.
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 description supplies limits, determinism and side-effect guarantees. The only gap is the input-size figure conflicting with the schema's maxLength, leaving the true ceiling ambiguous.
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 indent enum values, defaults and sort_keys semantics are already documented. The description restates the indent options and key sorting but adds no format or edge-case 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 and resource (parse and re-serialize JSON with indentation, optional key sorting) and explicitly contrasts with the sibling json-minify. An agent can distinguish it from json-sort-keys, json-canonicalize and json-minify 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?
Explicit 'Cuándo' section names the triggering conditions (transform, compare, check structured data) and a 'No para' section names the alternative tool (json-minify) for the opposite operation. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-repairReparar JSON rotoARead-onlyIdempotentInspect
Repara JSON casi válido típico de salidas de LLM (comillas simples, comas, claves sin comillas, True/None, llaves sin cerrar) y devuelve el valor y los arreglos. Cuándo: un modelo devolvió JSON casi válido que hay que leer sin volver a pedírselo al modelo. No para: verificar si un texto es JSON válido (json-parse-check). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Repairs almost-JSON typical of LLM output (code fences, comments, single quotes, unquoted keys, trailing or missing commas, Python True/False/None, NaN, unclosed strings and brackets) and returns the parsed value and the fixes applied. When: a model returned almost-valid JSON that has to be parsed without asking the model again. Not for: checking whether text is valid JSON (json-parse-check). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Broken JSON text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| json | No | any JSON value |
| fixes | No | |
| value | No | any JSON value |
| changed | No | |
| repaired | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description nonetheless adds genuinely new facts — determinism, no network, no stored state, and hard limits (64 KB input, 1 s, 1 MB result). Slight deduction because the stated 64 KB input cap conflicts with the schema's maxLength of 1048576 (1 MB), which could mislead an agent about the real limit.
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?
Well front-loaded and labeled (Cuándo / No para / Efectos secundarios / Límites), but the content is duplicated verbatim in Spanish and English and then delegated again via '[EN completo / full EN: inputSchema.description]', which repeats text already present in the schema. Roughly half the tokens are redundant.
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 needn't be explained, and the description still covers scope, exclusions, side effects, determinism and limits. The only real gap is the inconsistent input-size limit between description and schema, which an agent would need resolved.
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?
Only one parameter and schema description coverage is 100%, so the schema already carries the semantics including a rich broken-JSON example and maxLength. The description adds no per-parameter syntax or format guidance beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Repairs almost-JSON') and enumerates the exact defect classes it handles (code fences, comments, single quotes, unquoted keys, Python literals, NaN, unclosed brackets). It also contrasts itself with the sibling 'json-parse-check', so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' clause gives the triggering condition (a model returned almost-valid JSON to be parsed without re-prompting) and 'No para' names the alternative tool (json-parse-check) for the opposite case. Both when-to-use and when-not-to-use are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-schema-from-samplesInferir JSON Schema de ejemplosARead-onlyIdempotentInspect
Convierte documentos de ejemplo (p. ej. respuestas de una API) en un JSON Schema inicial: une los tipos vistos en cada ruta, marca como requeridas las claves presentes en todos y describe los ítems. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: validar un JSON contra un JSON Schema (json-schema-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Turns sample documents (for example API replies) into a starter JSON Schema: merges the types seen at each path, marks keys present in every sample as required and describes array items. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| samples | Yes | Sample values (same shape expected) (array; required; at least 1 items; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| schema | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond annotations: no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and organized into purpose, when, not-for, side effects, determinism, and limits. However, the bilingual duplication and the truncated English line ('EN completo / full EN: inputSchema.description') add avoidable length.
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 one parameter, full schema coverage, rich annotations, and an output schema, the description is complete enough: it covers purpose, alternatives, side effects, determinism, and operational limits. No critical invocation detail 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 single 'samples' parameter is documented with examples, so the baseline is 3. The description adds meaning by clarifying that samples are example documents such as API replies and by stating the 64 KB input limit, which is not 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: converts sample documents into a starter JSON Schema, and explains the merge/required/array-item behavior. It also explicitly distinguishes itself from json-schema-validate, so an agent can select 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?
Gives an explicit 'Cuándo' condition for structured data transformation/comparison/checking and an explicit 'No para' exclusion naming json-schema-validate as the alternative. This is clear when-to-use and 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.
json-schema-validateValidar contra JSON SchemaARead-onlyIdempotentInspect
Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir documentos de ejemplo (json-schema-from-samples). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a JSON value against a JSON Schema using a built-in subset (type, enum, const, properties, required, items, min/max*, pattern, format, allOf/anyOf/oneOf/not). No $ref; patterns are time-limited; unsupported keywords are reported. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: turning sample documents (json-schema-from-samples). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Instance (any JSON value; required). | |
| schema | Yes | JSON Schema (object or boolean) (object or boolean; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| errors | No | |
| unsupported_keywords | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, no-network, idempotent, non-destructive, so restating 'solo lectura, sin red, sin estado guardado' earns little. What does add value is beyond annotations: the supported keyword subset, the no-$ref restriction, time-limited pattern matching, reporting of unsupported keywords, and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Well front-loaded and segmented (Cuándo / No para / Efectos / Determinista / Límites), but the text is delivered twice in ES and EN, with the EN block truncated into a pointer to inputSchema.description. The duplication roughly halves the information density of an otherwise tight 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?
With an output schema, full annotation coverage and 100% parameter description coverage, the remaining burden is limits, determinism and validation scope — all present. An agent has everything needed to call this correctly and to interpret a failure as an unsupported-keyword report.
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 still adds meaning for the `schema` parameter by declaring the validator's subset and that $ref is unsupported, which directly constrains what can be passed — meaningful beyond the schema's bare 'JSON Schema (object or boolean)'.
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 ('Valida un JSON contra un JSON Schema') and immediately bounds the scope with '(subconjunto propio, sin $ref)'. It also names the sibling it is not for (json-schema-from-samples), so an agent can distinguish it from the ~250 other tools 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?
Has an explicit 'Cuándo' clause plus an explicit 'No para' exclusion naming json-schema-from-samples — a real routing decision. The positive condition ('transformar, comparar o revisar con exactitud datos estructurados') is broad enough to overlap with json-parse-check, json-diff-patch and other validators, so it is clear context but not fully discriminating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-sort-keysOrdenar claves de JSONARead-onlyIdempotentInspect
Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: serializar JSON en forma canónica RFC 8785 (json-canonicalize). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Recursively sorts object keys (by UTF-16 code units, or locale-aware), leaving array order unchanged. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: serializing a JSON value in RFC 8785 (json-canonicalize). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Any JSON value (any JSON value; required). | |
| descending | No | Descending order (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description redundantly restates 'sin red, sin estado guardado'. It still adds value beyond the annotations with hard operational limits (64 KB input, 1 s per call, 1 MB result) that an agent cannot infer from the structured fields. It loses a point for spending sentences repeating annotation content rather than adding new behavior detail (e.g. what happens at the size limit).
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 purpose, then when/not-for, side effects, determinism, and limits in a scannable order. However, the entire content is duplicated verbatim in Spanish and English, roughly doubling length without adding information for an agent that reads either language.
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 needed, and the description covers everything else an agent needs: what it does, when, the excluded alternative, safety, determinism, and size/time limits. 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 description coverage is 100%, so the schema already fully documents 'value' and 'descending'; baseline 3 applies. The description adds real meaning about the sort key (UTF-16 code units vs. locale-aware), but it never mentions the 'descending' parameter and the 'locale-aware' option it advertises has no corresponding schema parameter, which slightly muddies rather than clarifies parameter 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?
States a specific verb+resource ('Ordena recursivamente las claves de los objetos JSON') with the crucial scope qualifier that array order is preserved. It also names the mechanism (UTF-16 code-unit ordering) and explicitly separates itself from json-canonicalize, so an agent can distinguish it from json-pretty, json-minify, and the canonicalize sibling 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?
Explicit 'Cuándo' clause gives the trigger condition (transform, compare, or exactly check structured data) and an explicit 'No para' clause names the alternative (RFC 8785 canonicalization → json-canonicalize). This is the exact when/when-not/alternative shape the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-string-escapeEscapar cadena JSONARead-onlyIdempotentInspect
Escapa texto como literal de cadena JSON. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: interpretar el cuerpo de un literal de cadena JSON y devolver el texto (json-string-unescape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Escapes text as the body of a JSON string literal (quotes, backslashes, control characters), with or without surrounding quotes. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: parsing the body of a JSON string literal (json-string-unescape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| quotes | No | Include surrounding quotes (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| escaped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the baseline bar is low; the description still adds genuine value with determinism and operational limits (64 KB input, 1 s, 1 MB output). However the stated 64 KB input cap conflicts with the schema's maxLength of 1048576, which could make an agent reject or pre-truncate valid input.
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 is front-loaded and the labelled sections (When / Not for / Side effects / Deterministic / Limits) make it highly scannable. The full Spanish and English duplication doubles the length, and the limits line carries the size inconsistency, costing some tightness.
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 the description covers purpose, alternative, side effects, and limits. The only real gap is the internal mismatch between the advertised 64 KB input limit and the schema's 1 MB maxLength, which leaves the actual boundary unclear.
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 'text' and 'quotes'. The description reinforces the optional-quote behaviour ('con o sin comillas') but adds no syntax, encoding, or edge-case detail 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 and resource: escapes text into the body of a JSON string literal, naming exactly which characters (quotes, backslashes, control characters). It explicitly distinguishes itself from json-string-unescape, which is its only near-identical sibling in a very large 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?
Provides an explicit 'Cuándo/When' condition and an explicit 'No para/Not for' exclusion that names the alternative tool (json-string-unescape). An agent can route between the encode/decode pair without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-string-unescapeDesescapar cadena JSONARead-onlyIdempotentInspect
Interpreta el cuerpo de un literal de cadena JSON y devuelve el texto. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: escapar texto como literal de cadena JSON (json-string-escape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses the body of a JSON string literal (with or without quotes) and returns the raw text. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: escaping text as the body of a JSON string literal (json-string-escape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| escaped | Yes | Escaped JSON string body (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, closed-world, idempotent and non-destructive, yet the description adds real context: no network, no stored state, determinism, and concrete resource caps (64 KB input, 1 s per call, 1 MB result). It also discloses that the input may be given with or without surrounding quotes, which is behavior the schema does not state. It loses a point because the stated 64 KB input cap conflicts with the schema's 1 MB maxLength, which could mislead an agent about the real boundary.
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?
Each labeled segment (When / Not for / Side effects / Deterministic / Limits) is front-loaded and scannable. The only waste is that the entire content is duplicated verbatim in Spanish and English, roughly doubling the length without adding 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 rightly omitted, and a single-parameter tool needs little more. The only gap is the inconsistency between the documented 64 KB input limit and the schema's larger maxLength, which should be reconciled so an agent knows the true ceiling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns an increment by clarifying that the 'escaped' value is accepted with or without quotes — a genuine semantic point the schema's one-line description omits. Beyond that it adds no format or escaping-rules 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 a specific verb and resource ('parses the body of a JSON string literal ... returns the raw text') and immediately distinguishes itself from the escape direction. The explicit 'Not for: ... (json-string-escape)' removes any ambiguity against the nearest sibling in a catalogue of hundreds.
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 'When' clause gives the positive condition (exact conversion to/from this encoding, no guessing) and the 'Not for' clause names the alternative tool by name with its opposite purpose. This is the when/when-not/alternative triad done explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-to-ndjsonArreglo JSON a NDJSONARead-onlyIdempotentInspect
Serializa un arreglo JSON como NDJSON (un valor por línea). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir JSON delimitado por líneas (ndjson-to-json). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Serializes an array of JSON values as newline-delimited JSON (one compact value per line). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing newline-delimited JSON (ndjson-to-json). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Values (array; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ndjson | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The safety profile (read-only, no network, no state) restates annotations rather than adding to them, but the limits block (64 KB input, 1 s per call, 1 MB output) and the determinism guarantee are genuine context the annotations do not carry. No return-format details, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites) are front-loaded and scannable, with the sibling exclusion placed early. The full bilingual duplication roughly doubles length, though it stays tight per section.
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 one-parameter, pure transformation with an output schema and full annotations, nothing needed to call it correctly is missing: scope, exclusion, side effects, determinism, and hard limits are all present.
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?
Only one parameter with 100% schema description coverage and an example, so the schema does the heavy lifting. The description adds no syntax, element-type, or nesting guidance beyond 'un valor por línea' — 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 and resource ('Serializa un arreglo JSON como NDJSON, un valor por línea') and immediately contrasts it with the inverse sibling ndjson-to-json. An agent can distinguish it from the dozens of other json-* siblings 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?
Explicitly names the exclusion ('No para: convertir JSON delimitado por líneas (ndjson-to-json)'), which is the strongest routing signal. The positive 'Cuándo' clause is vaguer — 'transformar, comparar o revisar con exactitud datos estructurados' describes almost any serializer in this catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json-unflattenReconstruir JSON aplanadoARead-onlyIdempotentInspect
Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: aplanar objetos y arreglos anidados en un nivel con claves con puntos (json-flatten-paths). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Rebuilds nested JSON from flat dotted keys; numeric segments and [n] become array indices (max 10,000) unless arrays is false. Conflicting keys and proto/constructor/prototype segments are rejected. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: flattening nested objects/arrays into one level with dotted keys (json-flatten-paths). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Flat object (object; required). | |
| arrays | No | Numeric keys create arrays (boolean; optional; default true). | |
| separator | No | Key separator (string; optional; default "."; at least 1 chars; up to 4 chars). | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, but the description goes further: it discloses that conflicting keys and __proto__/constructor/prototype segments are rejected, caps array indices at 10,000, and states hard limits (64 KB input, 1 s, 1 MB output). These constraints are not derivable from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then When / Not for / Side effects / Deterministic / Limits in a scannable order with zero filler. It is however bilingual-duplicated content (the ES block restates the EN block, which itself mirrors the schema description), plus a meta-note pointing back at inputSchema.description that a reader doesn't need.
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 3-parameter pure-function tool with an output schema, the description covers scope, alternatives, edge cases, determinism and resource limits. 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 adds real semantics: numeric segments and [n] become array indices with a 10,000 cap, and the arrays=false escape hatch changes behavior. It adds less on 'separator' beyond 'dotted keys', keeping it just below the top.
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 ('Reconstruye JSON anidado a partir de claves con puntos') and immediately clarifies the array-index behavior. It explicitly names the inverse sibling (json-flatten-paths) so an agent can distinguish the two 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?
Provides an explicit 'Cuándo' section scoping it to exact transform/compare/inspect work on structured data, and an explicit 'No para' naming json-flatten-paths as the alternative with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
julian-dayDía julianoARead-onlyIdempotentInspect
Convierte fecha/hora UTC a Fecha Juliana, MJD y número de día juliano, o viceversa. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: calcular la salida y puesta del sol y la duración del día para un lugar y una fecha (sun-times). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a UTC date-time to Julian Date, Modified Julian Date and Julian Day Number, or a Julian Date back to UTC. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing sunrise, sunset and day length for a place and date (sun-times). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | No | UTC date-time to convert (string; optional; up to 40 chars). | |
| julian_date | No | Julian Date to convert to UTC (number; optional; min 0; max 5373484). |
Output Schema
| Name | Required | Description |
|---|---|---|
| utc | No | |
| julian_date | No | |
| julian_day_number | No | |
| modified_julian_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description earns extra credit by adding facts not in annotations: determinism and hard limits (64 KB input, 1 s per call, 1 MB result). No contradiction with the declared 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?
Front-loaded with purpose, then When / Not for / Side effects / Deterministic / Limits in scannable order. Slightly over-long because the Spanish text is followed by an English restatement that ends in a dangling artifact ('[EN completo / full EN: inputSchema.description]'), which is noise rather than 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 explain return values, and annotations cover the safety profile; the description fills the remaining gaps (determinism, size/time limits, sibling routing). Nothing an agent needs in order 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; the description adds real meaning by framing the two parameters as two conversion directions ('o viceversa'). It stops short of stating the operating rule the empty required list leaves open — that exactly one of datetime or julian_date should be supplied.
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 states a concrete bidirectional verb+resource: convert UTC date-time to Julian Date/MJD/Julian Day Number or back. It is instantly distinguishable from siblings such as timestamp-convert or date-iso-week, and it names the resource precisely.
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?
Explicit 'Cuándo' section gives the triggering condition (calendar/timezone results that must be exact: offsets, DST, month ends, leap years) and 'No para' names the concrete alternative (sun-times). This is exactly the when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jwt-decodeDecodificar JWT (sin verificar)ARead-onlyIdempotentInspect
Decodifica cabecera y payload de un JWT SIN verificar la firma (no confiar en los datos). Convierte exp/iat/nbf y, con as_of, indica si expiró. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: comprobar sin conexión un JWT firmado con HMAC (jwt-verify-hmac). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a JWT header and payload WITHOUT verifying the signature, so the claims must not be trusted. Converts exp/iat/nbf to ISO dates and, given as_of, reports whether the token is expired or not yet valid. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Reference instant for expiry check (ISO 8601) (string; optional; up to 40 chars). | |
| token | Yes | JWT (string; required; up to 16384 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| times | No | |
| header | No | |
| expired | No | |
| payload | No | |
| verified | No | |
| not_yet_valid | No | |
| signature_present | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior: no signature verification, exp/iat/nbf converted to ISO dates, expiry reported only when as_of is supplied, plus hard limits (64 KB input, 1 s per call, 1 MB result) and determinism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core JWT content is front-loaded and tight, but the text is duplicated wholesale in Spanish and English, then capped with 'EN completo / full EN: inputSchema.description' pointing at content the agent already has. The irrelevant 'Cuándo' list of URLs/IP ranges/HTML documents further dilutes an otherwise compact 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?
With an output schema present, the description need not explain return values, and it covers the essentials: what is decoded, what is not verified, timestamp normalization, expiry logic via as_of, exclusions, and size/time limits. Only the off-target 'Cuándo' clause keeps it from being fully coherent.
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 both parameters (token, as_of) are already documented with types and max lengths, so the baseline applies. The description adds only mild extra meaning by tying as_of to the expired/not-yet-valid outcome; it gives no format hints for as_of beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a precise verb+resource and an explicit scope qualifier: decode a JWT header and payload WITHOUT verifying the signature. It also states the safety consequence (claims must not be trusted), which no sibling tool (jwt-verify-hmac, jwt-sign-hmac) would state, so an agent can differentiate 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?
The negative guidance is excellent and names the sibling explicitly: 'No para: comprobar sin conexión un JWT firmado con HMAC (jwt-verify-hmac)'. However, the positive 'Cuándo' clause lists URLs, HTTP headers, versions, IP ranges, HTML/Markdown and agent-readiness files — none of which describe JWT decoding. That boilerplate actively muddies the routing decision for this specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jwt-sign-hmacFirmar JWT (HMAC)ARead-onlyIdempotentInspect
Crea un JWT firmado con HS256/384/512 usando un secreto propio; las claims se firman tal cual. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: comprobar sin conexión un JWT firmado con HMAC (jwt-verify-hmac). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Creates a compact JWS/JWT signed with HS256, HS384 or HS512 using a provided secret, e.g. for test fixtures or service-to-service tokens. Claims are signed as given; no defaults are added. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking an HMAC-signed JWT (jwt-verify-hmac). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| header | No | Extra header fields (object; optional; default {}). | |
| secret | Yes | HMAC secret (string; required; at least 1 chars; up to 4096 chars). | |
| payload | Yes | Claims object (object; required). | |
| algorithm | No | Algorithm (optional; one of: HS256, HS384, HS512; default "HS256"). | HS256 |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No contradiction with annotations: 'solo lectura, sin red, sin estado guardado' matches readOnlyHint/openWorldHint=false. Beyond annotations it discloses concrete limits (64 KB input, 1 s per call, 1 MB result), determinism, and the important behavior that claims are signed verbatim with no defaults added.
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-loading is good and the limits/exclusion sentences earn their place, but the 'When: URL, HTTP header, version string, IP range, HTML/Markdown' clause is pure waste and directly hurts utility. The full bilingual duplication also roughly doubles length for the same 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?
With an output schema present, 100% schema coverage and rich annotations, the description covers purpose, exclusion, determinism, and size/time limits. Only the malformed 'When' clause keeps it from being fully complete, since an agent gets no real cue about the alternative to use for verification versus decoding.
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; the description earns a bump by stating 'las claims se firman tal cual' (no injected iat/exp/alg defaults), which the schema does not say, and by naming HS256/384/512 as the mode of the secret-based signing.
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 opening states a concrete verb+resource+algorithms: 'Crea un JWT firmado con HS256/384/512 usando un secreto propio', and the EN version adds the practical purpose (test fixtures, service-to-service tokens). The clarity is slightly diluted by the unrelated 'When: a URL, HTTP header, ... HTML or Markdown document' boilerplate that has nothing to do with signing JWTs.
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 'Not for: checking an HMAC-signed JWT (jwt-verify-hmac)' exclusion names the sibling and the condition that routes to it, which is genuinely useful. However the positive 'When' clause is generic copy-paste from a parsing-family tool and gives no actual guidance on when to choose signing over jwt-decode or jwt-verify-hmac; it is noise at best and misleading at worst.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jwt-verify-hmacVerificar JWT (HMAC)ARead-onlyIdempotentInspect
Comprueba sin conexión un JWT firmado con HMAC (HS256/384/512): compara la firma en tiempo constante, rechaza «none» y cambios de algoritmo, y evalúa exp y nbf en un instante dado (as_of). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: decodificar cabecera y payload de un JWT SIN verificar la firma (jwt-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks an HMAC-signed JWT (HS256, HS384, HS512) offline: compares the signature in constant time, refuses "none" and algorithm swaps, and evaluates exp and nbf at a given instant (as_of) with optional leeway. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Reference instant ISO 8601 for exp/nbf (string; optional; up to 40 chars). | |
| token | Yes | JWT (string; required; up to 16384 chars). | |
| secret | Yes | HMAC secret (string; required; at least 1 chars; up to 4096 chars). | |
| algorithms | No | Accepted algorithms (array of string; optional; default ["HS256"]; at least 1 items; up to 3 items). | |
| leeway_seconds | No | Clock leeway (integer; optional; default 0; min 0; max 3600). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| payload | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent, but the description goes well beyond them: constant-time comparison, rejection of 'none' and algorithm substitution, exp/nbf evaluation with optional leeway, no network, determinism, and hard limits (64 KB input, 1 s, 1 MB result). That is exactly the extra behavioral context the annotations do not 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?
The core JWT content is front-loaded and useful, but the definition is duplicated bilingually and repeats the full text again inside inputSchema.description, plus the generic 'Cuándo' sentence lists unrelated artifacts. Roughly half the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description covers the remaining gaps: limits, offline/deterministic behavior and the security caveats around algorithm swaps. The only shortfall is the imprecise usage clause, which slightly muddies when this tool applies.
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 property already documents type, bounds and defaults, so the baseline is 3. The description only adds meaning to as_of (the reference instant for exp/nbf) and leeway indirectly; it says nothing extra about algorithms or the token/secret bounds 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?
Names the exact verb and resource ('comprueba sin conexión un JWT firmado con HMAC'), enumerates supported algorithms (HS256/384/512), and explicitly contrasts with the jwt-decode sibling. An agent can distinguish it from jwt-decode and jwt-sign-hmac 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?
The 'No para:' clause is a precise exclusion naming the alternative tool (jwt-decode) and the reason (unverified claims must not be trusted). However, the 'Cuándo:' sentence is generic boilerplate about URLs, IP ranges, HTML/Markdown documents that has nothing to do with JWT verification, so the positive routing signal is weak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kdf-hkdfDerivar clave con HKDFARead-onlyIdempotentInspect
Deriva material de clave con HKDF (RFC 5869). Cuándo: hay que derivar una clave a partir de una contraseña o un secreto con parámetros conocidos. No para: derivar una clave con PBKDF2 (kdf-pbkdf2). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Derives key material with HKDF (RFC 5869) using SHA-256 or SHA-512, from hex-encoded input key material, salt and info. When: a key has to be derived from a password or secret with known parameters. Not for: deriving a key with PBKDF2 (kdf-pbkdf2). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ikm | Yes | Input key material, hex (string; required; up to 2048 chars). | |
| info | No | Context info, hex (string; optional; default ""; up to 2048 chars). | |
| salt | No | Salt, hex (string; optional; default ""; up to 2048 chars). | |
| digest | No | Hash (optional; one of: sha256, sha512; default "sha256"). | sha256 |
| length | No | Output length in bytes (integer; optional; default 32; min 1; max 8160). |
Output Schema
| Name | Required | Description |
|---|---|---|
| okm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description restates the side-effect profile in prose. What it genuinely adds beyond structured data is the determinism guarantee and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB output), which an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well structured with labeled sections (Cuándo / No para / Efectos secundarios / Límites), but it is duplicated verbatim in Spanish and English, roughly doubling the length with no new information in the second block.
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, annotations covering the safety profile, and 100% parameter coverage, the description fills the remaining gaps: purpose, alternative routing, determinism, and hard operational limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (ikm, salt, info, digest, length) is already documented with types, defaults and bounds. The description only restates that inputs are hex-encoded and digests are SHA-256/512, adding little semantic 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 and resource ("Deriva material de clave con HKDF (RFC 5869)"), names the underlying standard, and lists the exact inputs (hex IKM, salt, info, SHA-256/512). It explicitly distinguishes itself from the sibling kdf-pbkdf2, so an agent can select 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?
Contains explicit "Cuándo" (when a key must be derived from a password/secret with known parameters) and "No para" (not PBKDF2 — use kdf-pbkdf2) sections. The routing condition to the alternative is stated directly rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kdf-pbkdf2Derivar clave con PBKDF2ARead-onlyIdempotentInspect
Deriva una clave con PBKDF2 (RFC 8018). Iteraciones máx. 50.000. Cuándo: hay que derivar una clave a partir de una contraseña o un secreto con parámetros conocidos. No para: derivar material de clave con HKDF (kdf-hkdf). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Derives a key with PBKDF2 (RFC 8018) using HMAC-SHA256/SHA512/SHA1. Iterations capped at 50,000 and output at 128 bytes to keep calls fast. When: a key has to be derived from a password or secret with known parameters. Not for: deriving key material with HKDF (kdf-hkdf). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| salt | Yes | Salt (string; required; up to 1024 chars). | |
| digest | No | PRF hash (optional; one of: sha256, sha512, sha1; default "sha256"). | sha256 |
| length | No | Derived key length in bytes (integer; optional; default 32; min 1; max 128). | |
| password | Yes | Password or secret (string; required; up to 1024 chars). | |
| iterations | Yes | Iteration count (integer; required; min 1; max 50000). | |
| salt_encoding | No | Encoding of salt (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
| output_encoding | No | Output encoding of the digest (optional; one of: hex, base64, base64url; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context beyond that: deterministic output, no network or stored state, iteration and output caps, and request/result size limits. There is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded: it states the operation, when to use it, when not to use it, side effects, determinism, and limits. It loses a point because the Spanish and English versions duplicate the same content rather than adding new 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?
The tool has an output schema, rich annotations, full parameter schema coverage, and the description adds limits, determinism, and side-effect details. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters thoroughly. The description restates a few constraints such as the 50,000 iteration cap and 128-byte output cap, but it does not add per-parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (derive a key with PBKDF2) and includes the RFC plus supported HMAC hash variants. It explicitly distinguishes the tool from the sibling kdf-hkdf, so an agent can select it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance with a clear 'When' condition (deriving a key from a password or secret with known parameters) and a 'Not for' exclusion pointing to kdf-hkdf. This is about as clear as when-to-use guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ksuid-decodeDecodificar KSUIDARead-onlyIdempotentInspect
Decodifica un KSUID de 27 caracteres en fecha y payload de 128 bits. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: validar un ULID y extraer su marca de tiempo y la parte aleatoria (ulid-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a 27-char base62 KSUID into its timestamp (epoch 1400000000) and 128-bit payload. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: validating a ULID and extracting its timestamp (ulid-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ksuid | Yes | KSUID (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| timestamp | No | |
| payload_hex | No | |
| timestamp_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, not-open-world, idempotent and non-destructive, and the description largely restates those ('read-only, no network access, no stored state', 'deterministic'). It earns credit for the operational limits the annotations do not carry: 64 KB JSON input, 1 s per call, 1 MB result cap.
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?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Límites), but the entire content is duplicated in Spanish and English, roughly doubling token cost for zero additional information. The duplicate generation hint also adds noise.
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; the description covers side effects, determinism and resource limits, which is enough for a single-parameter decoder. The only incompleteness is the inaccurate mention of generation, which could mislead an agent into calling this to create a KSUID.
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 required parameter, so the baseline is 3. The description goes beyond the schema's bare 'string up to 40 chars' by specifying base62 encoding and the canonical 27-character length, which tells an agent what a valid value actually looks like.
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 the concrete output shape: decoding a 27-char base62 KSUID into its timestamp (epoch 1400000000) and 128-bit payload. It is clearly distinguishable from ulid-decode, which it names. Minor deduction: the 'When' clause mentions generating an identifier in this format, which this tool does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides both a 'When' and a 'Not for' clause, naming the alternative tool (ulid-decode) and the task it covers (ULID timestamp/randomness extraction). The routing is concrete rather than implied, though the generation use case is misattributed and no other decode siblings (objectid-decode, snowflake-decode) are acknowledged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lei-validateValidar LEIARead-onlyIdempotentInspect
Valida un LEI (ISO 17442) de 20 caracteres con checksum mod 97-10. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un ISIN (isin-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod 97-10 checksum and splits out the LOU prefix. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a 12-character International Securities Identification Number (isin-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lei | Yes | LEI (string; required; up to 24 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| entity | No | |
| lou_prefix | No | |
| check_digits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/idempotent/no-destructive, but the description adds genuinely new operational facts: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). These are the kinds of constraints an agent needs to avoid timeouts or oversized payloads, and they go beyond the annotation set.
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 core action and then cleanly segmented into When / Not for / Side effects / Determinism / Limits, so an agent can skim the labels. The only cost is full Spanish-then-English duplication, which roughly doubles the token footprint for a single-language consumer.
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 schema exists, so return values need not be spelled out, yet the description still hints at the LOU-prefix split. With the algorithm, offline nature, limits, and exclusion all present, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds meaning the schema lacks: the identifier must be exactly 20 characters while the schema allows maxLength 24, and it explains that the check digit is verified via mod 97-10. That resolves a real ambiguity an agent would otherwise hit on 21–24 character input.
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 and resource (validates a 20-character LEI per ISO 17442), names the exact algorithm (ISO 7064 mod 97-10) and an extra output behavior (LOU prefix split). It explicitly distinguishes itself from the nearest sibling, isin-validate, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'When:' / 'Not for:' labels with a named alternative (isin-validate) and the condition selecting it (12-character ISIN). Covers both the use case and the exclusion, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
levenshtein-distanceDistancia de LevenshteinARead-onlyIdempotentInspect
Calcula la distancia de edición de Levenshtein entre dos cadenas y similitud normalizada. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: medir la distancia de edición que también cuenta caracteres vecinos intercambiados (damerau-levenshtein). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the edit distance (insertions, deletions, substitutions) between two strings by code point, plus a normalized similarity 1 - d/max(len). Length product capped at 4M. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: measuring edit distance that also counts swapped adjacent characters (damerau-levenshtein). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First string (string; required; up to 20000 chars). | |
| b | Yes | Second string (string; required; up to 20000 chars). | |
| case_sensitive | No | Case sensitive (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| distance | No | |
| similarity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds real value: explicit determinism guarantee and hard operational limits (64 KB JSON input, 1 s per call, 1 MB result, length product capped at 4M) that are nowhere in the annotations or schema.
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, exclusion, side effects and limits are all front-loaded and each section earns its place. It loses a point because the Spanish and English blocks are near-verbatim duplicates, roughly doubling length without adding new 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, return values need not be described, and the description still covers purpose, alternatives, determinism, side effects and resource limits. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 a, b and case_sensitive including defaults and maxLength. The description contributes the length-product cap and code-point semantics, but says nothing about case_sensitive's effect on the comparison — baseline 3 is appropriate when the schema carries the parameter burden.
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 — computing Levenshtein edit distance (insertions, deletions, substitutions) by code point plus a normalized similarity formula. It also names the exact operation it is NOT (damerau-levenshtein), so an agent can distinguish it from the many string-similarity siblings 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?
Explicit 'Cuándo/When' and 'No para/Not for' sections give both the positive selection criterion (exact text comparison/measurement rather than approximation) and the negative one (do not use when transpositions count — use damerau-levenshtein). The alternative is named outright, which is the strongest form of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear-system-solveResolver sistema linealARead-onlyIdempotentInspect
Resuelve un sistema de ecuaciones lineales Ax = b (hasta 20 incógnitas). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: resolver ax² + bx + c = 0 con raíces reales o complejas, discriminante y vértice (quadratic-solve). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Solves a square system of linear equations Ax = b (up to 20 unknowns) by Gauss-Jordan elimination with partial pivoting. When: a numeric result has to be exact or reproducible instead of estimated. Not for: solving ax² + bx + c = 0, returning real or complex roots, the discriminant and the vertex (quadratic-solve). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). | |
| b | Yes | Right-hand side (array of number; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so 'side effects: none (read-only, no network access)' largely restates them. The description does add genuinely new behavior: determinism, plus concrete limits (64 KB JSON input, 1 s per call, 1 MB result) that no annotation conveys. It stops short of noting failure behavior for singular or inconsistent systems, which is the main residual gap for 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?
Labels are well front-loaded (Cuándo / No para / Efectos secundarios / Límites), and each section is short. However, the Spanish block is repeated verbatim in English, roughly doubling length with zero added information for an agent reading both. The structure is good; the duplication is unearned.
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 purpose, when/when-not, side-effect profile, determinism and resource limits, and an output schema exists so return values need no prose. For a two-parameter pure computation tool, 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 baseline is 3, but the description adds constraints the schema cannot express: the system must be square, so A is n×n and must be dimensionally consistent with b — the schema only enforces 1–20 items per row and per array. That is meaningful clarification beyond the schema text.
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 ('Solves a square system of linear equations Ax = b') plus method and scope ('Gauss-Jordan elimination with partial pivoting', 'up to 20 unknowns'). The 'square' qualifier and method name distinguish it from matrix-inverse, matrix-determinant and quadratic-solve, which the description also names 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?
Uses explicit 'When:' and 'Not for:' clauses, naming the alternative (quadratic-solve) and the exact problem class it handles (ax² + bx + c = 0, discriminant, vertex). The selection condition ('exact or reproducible instead of estimated') is stated outright, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lines-dedupeQuitar líneas duplicadasARead-onlyIdempotentInspect
Elimina líneas duplicadas conservando la primera aparición y el orden. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: agrupar textos casi duplicados (dedupe-similar). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Removes duplicate lines keeping the first occurrence and original order; optional case-insensitive and whitespace-trimmed comparison. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: grouping near-duplicate strings (dedupe-similar). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text with one item per line (string; required). | |
| trim | No | Trim before comparing (boolean; optional; default true). | |
| drop_empty | No | Drop empty lines (boolean; optional; default false). | |
| case_insensitive | No | Ignore case (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses concrete behavioral traits beyond the annotations: no side effects, read-only, no network access, no stored state, deterministic output for the same input, and execution limits. Although annotations already cover read-only and idempotent hints, the description adds valuable operational context such as rate/size limits and determinism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the labeled sections (Cuándo, No para, Efectos secundarios, Determinista, Límites) make it scannable. However, the full Spanish and English versions duplicate the same content, roughly doubling length without adding new 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 simple text-transformation tool with complete schema coverage, rich annotations, and an output schema, the description covers purpose, usage boundaries, side effects, determinism, and limits. 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 100%, so the schema already documents all four parameters. The description mentions optional case-insensitive and whitespace-trimmed comparison but does not explain drop_empty and adds little beyond the structured parameter descriptions. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifies the exact operation (remove duplicate lines), the retention rule (first occurrence), order preservation, and optional comparison modes. It clearly contrasts with dedupe-similar for near-duplicate grouping. An agent can distinguish this from sibling deduplication and line-processing tools 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?
Explicitly states when to use it (exact text transformation, comparison, or measurement rather than approximation) and when not to use it (grouping near-duplicate strings), naming the alternative dedupe-similar. This is the clearest possible routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lines-filterFiltrar líneasARead-onlyIdempotentInspect
Conserva (o elimina) líneas que contienen una subcadena. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: aplicar una expresión regular de JavaScript a un texto y listar cada coincidencia con posición y grupos (regex-test). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Keeps (or removes) lines containing a substring, case-insensitive optional. Plain substring match only; patterns are handled by regex-test. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: trying a JavaScript regex on a text and listing each match with its position and groups (regex-test). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text with one item per line (string; required). | |
| invert | No | Remove matching lines instead (boolean; optional; default false). | |
| contains | Yes | Substring (string; required; at least 1 chars; up to 1000 chars). | |
| case_insensitive | No | Ignore case (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only/no-network/no-state and determinism statements merely restate readOnlyHint, openWorldHint and idempotentHint, so they earn no credit. The genuine addition is the operational envelope: 64 KB JSON input, 1 s per call, 1 MB result — facts absent from annotations. Minor caveat: '64 KB input' conflicts with the schema's 1 MB maxLength on `text`, which could mislead on large inputs.
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?
Each language block is tightly front-loaded with labeled sections (What / Cuándo / No para / Efectos / Límites) and no filler. The cost is the full bilingual duplication, which roughly doubles the payload for a tool that is conceptually simple.
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 in annotations; the description correctly focuses on routing, determinism and limits. The only completeness defect is the size-limit inconsistency (64 KB claimed vs. 1 MB permitted 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 the baseline is 3. The description only adds light mapping ('or removes' → invert; 'case-insensitive optional' → case_insensitive), which the schema already spells out with defaults. No extra syntax guidance (e.g., multiline handling, behavior on empty lines) is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Keeps (or removes) lines containing a substring') and immediately constrains scope: 'Plain substring match only; patterns are handled by regex-test.' An agent can distinguish it from regex-test, lines-dedupe and lines-sort 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?
Explicit 'When:' clause (transform/compare/measure text exactly rather than approximately) and an explicit 'Not for:' clause naming the alternative (regex-test) with its distinguishing capability (JS regex, match positions and groups). The routing decision is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lines-numberNumerar líneasARead-onlyIdempotentInspect
Numera cada línea, alineando a la derecha. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: ordenar líneas con intercalación por idioma (lines-sort). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Prefixes each line with its line number, right-aligned, starting at a given number and with a chosen separator. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: sorting lines with locale-aware collation (lines-sort). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text with one item per line (string; required). | |
| start | No | First number (integer; optional; default 1; min -1000000000; max 1000000000). | |
| separator | No | Separator after number (string; optional; default ": "; up to 8 chars). | : |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, but the description adds genuinely new context: determinism, concrete limits (64 KB JSON input, 1 s per call, 1 MB result) and no stored state. These operational bounds are not derivable from the annotations and directly affect how an agent should size its input.
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 core action, then labeled sections (When / Not for / Side effects / Deterministic / Limits) that are easy to scan. The Spanish and English versions duplicate the same content, which roughly doubles length without adding information, costing a point.
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, annotations cover the safety profile, and all three parameters are documented in the schema. The description fills the remaining gaps (limits, determinism, sibling routing), leaving nothing an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so text, start and separator are already fully documented with defaults and bounds. The description only restates that numbering starts at a given number with a chosen separator, adding 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 and resource ('Numera cada línea, alineando a la derecha' / 'Prefixes each line with its line number, right-aligned') and adds the start-number and separator scope. It explicitly names the sibling it is not (lines-sort), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo'/'When' condition (exact transformation, comparison or measurement of text) and an explicit 'No para'/'Not for' exclusion pointing to lines-sort for locale-aware sorting. Both the positive and negative routing conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lines-sortOrdenar líneasARead-onlyIdempotentInspect
Ordena líneas con intercalación por idioma (orden numérico natural opcional). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: ordenar un arreglo de valores u objetos por una o más claves (array-sort). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Sorts lines with locale-aware collation (natural numeric order optional), ascending or descending, optionally case-insensitive and unique. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: sorting an array of values or objects by one or more keys (array-sort). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text with one item per line (string; required). | |
| order | No | Order (optional; one of: asc, desc; default "asc"). | asc |
| locale | No | BCP 47 locale (string; optional; default "en"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en |
| unique | No | Remove duplicates (boolean; optional; default false). | |
| numeric | No | Natural numeric order (2 < 10) (boolean; optional; default true). | |
| case_insensitive | No | Ignore case (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuine value beyond annotations: determinism, no network/stored state, and concrete operational limits (1 s per call, result up to 1 MB). However, 'read-only' restates readOnlyHint/destructiveHint, and 'input up to 64 KB' sits awkwardly against the schema's maxLength of 1048576, creating ambiguity about the actual input ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded and labeled (When / Not for / Side effects / Limits), but it is delivered twice in full — Spanish and English — roughly doubling length without adding information. The signal-to-noise ratio is good per sentence but poor per definition size.
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 and full annotations already supplied, the description covers everything an agent needs: purpose, boundaries, alternatives, determinism, side effects and hard limits. Nothing material 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 100%, so every parameter (text, order, locale, unique, numeric, case_insensitive) is already documented with defaults and constraints. The description echoes the same features ('natural numeric order optional', 'case-insensitive and unique') but adds no syntax or edge-case meaning beyond the schema, so 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 and resource ('sorts lines') and enumerates the differentiating capabilities: locale-aware collation, natural numeric order, ascending/descending, case-insensitive, unique. It also explicitly names the sibling it is not (array-sort), so an agent can distinguish it 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?
Uses explicit 'When' and 'No para' clauses: use it when text must be transformed, compared or measured exactly, and not for sorting arrays of values/objects by keys — routing to array-sort. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link-header-parseLeer cabecera LinkARead-onlyIdempotentInspect
Analiza el encabezado Link (RFC 8288) en URL y rel, p. ej. para paginación rel="next". Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula (http-headers-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an HTTP Link header into URL + rel + other parameters, e.g. to follow rel="next" pagination; relative URLs are resolved against an optional base. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base URL for relative links (string; optional; up to 8192 chars). | |
| header | Yes | Link header value (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | No | |
| by_rel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral facts not in annotations: no network access, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result), which matter for planning large paginated Link headers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the template example is useful, but the Spanish and English blocks are near-duplicates and the generic 'When' enumeration mentions inputs (tokens, versions, HTML, agent files) irrelevant to Link header parsing, padding 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?
An output schema exists so return values need no explanation; the description still covers purpose, the closest alternative, side effects, determinism and operational limits. For a low-complexity, two-parameter read-only parse tool, nothing needed 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 100%, so both parameters are already documented. The description adds only the semantic note that relative URLs are resolved against an optional base, which largely restates the schema's own "Base URL for relative links"; the baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: parses an HTTP Link header (RFC 8288) into URL + rel + other parameters, with the motivating use case of rel="next" pagination. It also names the sibling it is not (http-headers-parse), so an agent can distinguish it from the crowded set of header parsers 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 "No para / Not for" clause explicitly excludes the nearest alternative (http-headers-parse) with the distinguishing condition (raw header block → lowercase-keyed object). However, the positive "Cuándo/When" clause is generic boilerplate listing unrelated artifacts (tokens, versions, IP ranges, HTML/Markdown, agent files) rather than conditions specific to Link headers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm-cost-estimateEstimar costo de tokens de LLMARead-onlyIdempotentInspect
Estima el costo de llamadas a un LLM a partir de tokens (o texto estimado) y precios por millón indicados; sin lista de precios incorporada. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: estimar el costo de un lote de llamadas pagadas por uso (x402-cost-estimate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Estimates LLM request cost from input/output token counts (or text, estimated heuristically) and supplied per-million-token prices, with optional cached-input pricing and call volume. No built-in price list. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| calls | No | Number of identical calls (integer; optional; default 1; min 1; max 1000000000). | |
| input_text | No | Text to estimate input tokens from (string; optional). | |
| input_tokens | No | Input tokens (integer; optional; min 0; max 1000000000000). | |
| output_tokens | No | Output tokens (integer; optional; default 0; min 0; max 1000000000000). | |
| cached_input_tokens | No | Of the input, tokens billed at cache price (integer; optional; default 0; min 0; max 1000000000000). | |
| price_input_per_mtok | Yes | USD per 1M input tokens (number; required; min 0; max 10000). | |
| price_cached_per_mtok | No | USD per 1M cached input tokens (number; optional; default 0; min 0; max 10000). | |
| price_output_per_mtok | Yes | USD per 1M output tokens (number; required; min 0; max 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| calls | No | |
| total_usd | No | |
| input_tokens | No | |
| output_tokens | No | |
| estimated_input | No | |
| cost_per_call_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, but the description still adds real substance: determinism guarantee, the fact that no built-in price list exists (agent must supply prices), and hard limits (64 KB input, 1 s per call, 1 MB result). The 'solo lectura, sin red, sin estado guardado' sentence partly restates the annotations, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, which is good, but the description carries the same content twice in Spanish and English and repeats the schema's own English description. The bilingual duplication roughly doubles length without adding 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 explained. For an 8-parameter pure-calculation tool, the description covers purpose, selection criteria, determinism, price-list caveat and operational limits — nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: that text input is converted to tokens 'heuristically' (an approximation caveat), and that cached-input pricing and call volume are optional multipliers. That goes beyond enumerating parameter names.
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 ('Estima el costo de llamadas a un LLM') and pins down the inputs (tokens or heuristic text estimation, plus supplied per-million prices). The explicit 'sin lista de precios incorporada' and the named sibling x402-cost-estimate make it distinguishable from nearby cost tools 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?
Has explicit 'Cuándo' (agent loop needing an exact, repeatable bookkeeping result) and 'No para' (batch of pay-per-call API requests → x402-cost-estimate) sections naming the alternative. This is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llms-txt-lintRevisar llms.txtARead-onlyIdempotentInspect
Revisa un llms.txt según el formato de llmstxt.org (H1, resumen, secciones H2 con listas de enlaces) e informa errores, advertencias y estructura. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: puntuar qué tan preparado está un sitio para agentes de IA a partir del contenido pegado (agent-readiness-checklist). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks an llms.txt file against the llmstxt.org format: one H1 title first, optional > summary, H2 sections containing "- name: notes" link lists, an optional "Optional" section; reports errors, warnings and the parsed structure. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| llms_txt | Yes | llms.txt content (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| valid | No | |
| errors | No | |
| summary | No | |
| sections | No | |
| warnings | No | |
| total_links | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld=false, idempotent and non-destructive, so 'solo lectura, sin red, sin estado guardado' is largely restatement. The description does add real value with determinism and a 1 s per-call limit, but the stated '64 KB' input limit conflicts with the schema's maxLength of 524288 characters, which undermines trust in the stated bounds.
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 exclusions are front-loaded and the format spec is tight. But the generic 'Cuándo' enumeration is filler that does not apply to this tool, and the full ES description is duplicated again in the schema's description field, inflating the payload without adding 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 explained, and annotations carry the safety profile. The description covers the format being validated, the exclusion, determinism and time limits — enough to call it correctly; only the mismatched size limit and the off-topic 'when' clause keep it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented, so the baseline is 3. The description goes further by spelling out the expected shape of the content (one H1 first, optional > summary, H2 sections with '- [name](url): notes' lists, optional 'Optional' section), which tells an agent what valid input looks like beyond 'llms.txt content (string)'.
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 ('Revisa un llms.txt según el formato de llmstxt.org') and enumerates the checked elements (H1, resumen, H2 con listas de enlaces), plus what it reports (errores, advertencias, estructura). It explicitly separates itself from the closest sibling, agent-readiness-checklist.
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 'No para' clause names the alternative and the condition that selects it, which is genuinely useful routing. However the 'Cuándo' clause is generic boilerplate ('una URL, una cabecera HTTP, un token, una versión, un rango de IP...') that does not describe this tool's actual use case and could push an agent toward it for unrelated parsing tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
longest-common-subsequenceSubsecuencia común más largaARead-onlyIdempotentInspect
Encuentra la subsecuencia común más larga de dos cadenas. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular las diferencias línea por línea entre dos textos (diff-lines). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds the longest common subsequence of two strings (by code point) and its length. Length product capped at 4M. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing a line-by-line diff of two texts (diff-lines). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First (string; required; up to 20000 chars). | |
| b | Yes | Second (string; required; up to 20000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| length | No | |
| subsequence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, deterministic), it adds crucial operational context regarding side effects (no network, no state), and hard limits (64KB input, 1s latency).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is highly structured, using clear headings (When, Not for, Side effects, Limits) to organize complex behavioral information efficiently.
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 deterministic, side-effect-free, calculation-based tool, the description fully covers all necessary contexts, limits, and safety assurances.
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?
Since schema description coverage is 100%, the description provides no unique semantic value regarding the parameters 'a' or 'b'; baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the core mathematical function (finding the LCS) and provides a clear distinction from related text manipulation tools like line-by-line diff.
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 explicit 'when' and 'not for' scenarios, specifically directing users away from approximation and towards exact comparison, and referencing the 'diff-lines' sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup-tableBuscar un valor en una tablaARead-onlyIdempotentInspect
Busca una clave en una tabla (objeto o lista de pares clave/valor) y devuelve su valor o un valor por defecto, con coincidencia opcional sin mayúsculas ni tildes. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: leer el valor en una ruta como /clientes/0/nit dentro de un documento JSON con la sintaxis RFC 6901 (json-pointer-get). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Maps a key to a value through a lookup table (object or list of key/value pairs) with an optional default, case- and accent-insensitive matching and trimming; reports whether the key was found and which table key matched. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to look up (string, number, boolean or null; compared as text) (string or number or boolean or null; required; up to 1000 chars). | |
| trim | No | Trim surrounding whitespace before comparing (boolean; optional; default true). | |
| match | No | exact, case-insensitive, or case- and accent-insensitive (optional; one of: exact, case, case_accents; default "exact"). | exact |
| pairs | No | Alternative to table: list of {key, value} (keeps order, allows any key text) (array of object; optional). | |
| table | No | Lookup table: object of key -> value (object; optional). | |
| default | No | Value when the key is not found (default null) (any JSON value; optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| value | No | any JSON value |
| matched_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, openWorldHint=false), the description adds the operational envelope an agent needs: no side effects, no network, no stored state, determinism, and hard limits of 64 KB input, 1 s per call and 1 MB result. These limits and the determinism guarantee are not obtainable from the annotations and directly affect whether the tool is safe to call on large payloads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The label-segmented structure (Cuándo / No para / Efectos secundarios / Determinista / Límites) is strongly front-loaded and each segment earns its place. The appended partial English restatement, which trails off into a pointer to inputSchema.description, is redundant filler that dilutes the otherwise tight framing.
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 six parameters including a nested pairs array, rich annotations and a dedicated output schema, the description covers everything the schema cannot: cost limits, determinism, absence of side effects, and the distinction from json-pointer-get. Return-value detail is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter baseline is 3. The description recaps the salient behaviors (optional default, case- and accent-insensitive matching, trimming, reporting whether the key was found and which table key matched) but adds no syntax, precedence or edge-case detail beyond the schema, e.g. what happens when both table and pairs are supplied.
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 (mapping a key to a value through a lookup table) and enumerates the two supported table shapes (object or list of key/value pairs). It explicitly rules out a sibling by name, json-pointer-get, so an agent can route correctly 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 has an explicit 'Cuándo' clause (exact transform/compare/check of structured data such as JSON, CSV, YAML, XML, arrays) and an explicit 'No para' clause that names the alternative tool json-pointer-get and the scenario it serves. Both the positive trigger and the exclusion are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lorem-ipsumTexto de relleno lorem ipsumARead-onlyIdempotentInspect
Genera texto de relleno lorem ipsum determinista. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar caracteres, bytes, palabras, oraciones, líneas y párrafos, y estima el tiempo de lectura (text-metrics). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates deterministic lorem ipsum placeholder text: a number of words, sentences or paragraphs, always starting with "Lorem ipsum dolor sit amet". When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting characters (text-metrics). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit (optional; one of: words, sentences, paragraphs; default "paragraphs"). | paragraphs |
| count | No | How many units (integer; optional; default 1; min 1; max 200). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds concrete operational limits that annotations do not carry: 64 KB JSON input, 1 s per call, 1 MB result, and no stored state. However, the read-only / no-network / deterministic claims largely restate readOnlyHint, openWorldHint=false and idempotentHint=true, so the net new information is the size/time limits rather than 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?
Each language block is tightly structured with labelled When/Not for/Side effects/Deterministic/Limits and the purpose is front-loaded. The full Spanish-English duplication roughly doubles the length for no additional information, which is the main 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, the description needn't explain return values, and it still covers purpose, exclusions, determinism, side effects and hard limits. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (unit enum, count with min/max) are fully documented in the schema, so the baseline of 3 applies. The description only paraphrases them ("a number of words, sentences or paragraphs") without adding format or interaction detail; the notable extra (the fixed opening phrase) is about output, not 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 and resource ("Generates deterministic lorem ipsum placeholder text") plus the output contract (a number of words, sentences or paragraphs, always starting with "Lorem ipsum dolor sit amet"). It explicitly names the sibling it is not (text-metrics), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit "When:" (text has to be transformed, compared or measured exactly rather than approximated) and "Not for:" clauses that route counting/measuring tasks to text-metrics. This is the when/when-not/alternative pattern in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
luhn-validateValidar Luhn (módulo 10)ARead-onlyIdempotentInspect
Valida un número con el algoritmo de Luhn (mod 10): tarjetas, IMEI y varios documentos. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: detectar la franquicia de una tarjeta por su prefijo, valida longitud y Luhn y devolver el número enmascarado (card-brand-detect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a number with the Luhn mod-10 checksum (credit cards, IMEI, many national IDs); spaces and dashes are ignored. When: an identifier's format and check digit have to be verified offline before it is used. Not for: detecting a payment card brand from its IIN prefix (card-brand-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Digits (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, closed-world and idempotent, but the description goes further by stating no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not describe what the response reports for an invalid number, but the output schema covers 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?
Front-loaded with the core purpose and followed by labeled When/Not-for/Side-effects/Limits blocks, which is easy to scan. The bilingual duplication and the trailing '[EN completo / full EN: inputSchema.description]' artifact add redundancy that earns little.
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 one-parameter validator with an output schema and full annotation coverage, everything needed to call it correctly is present (input semantics, limits, safety profile). Only the invalid-input reporting behavior is left implicit, and that is 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 100%, so the baseline is 3, but the description adds real meaning beyond the schema by stating that spaces and dashes are ignored — a normalization rule that affects what input the agent may pass.
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 (validates) and a specific algorithm/resource (Luhn mod-10 checksum) plus the covered identifier types (cards, IMEI, national IDs). It also names the sibling card-brand-detect as the thing it is not, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When: verify format and check digit offline before use' plus an explicit 'Not for: detecting card brand from IIN prefix (card-brand-detect)'. Both the selection condition and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map-tileTesela de mapa (XYZ)ARead-onlyIdempotentInspect
Convierte lat/lon y zoom a coordenadas de tesela XYZ (Web Mercator) y quadkey, o una tesela a su caja. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: codificar latitud/longitud como geohash de precisión 1-12 e informar el tamaño de la celda (geohash-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts lat/lon and zoom (0-24) to Web Mercator XYZ tile coordinates and quadkey, or a tile back to its bounding box. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: encoding a latitude/longitude as a geohash string of precision 1-12 and reporting the cell size in metres (geohash-encode). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Tile x (to bbox) (integer; optional; min 0). | |
| y | No | Tile y (to bbox) (integer; optional; min 0). | |
| lat | No | Latitude (to tile) (number; optional; min -85.05112878; max 85.05112878). | |
| lon | No | Longitude (to tile) (number; optional; min -180; max 180). | |
| zoom | Yes | Zoom 0-24 (integer; required; min 0; max 24). |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No | |
| y | No | |
| bbox | No | |
| zoom | No | |
| quadkey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, and the description largely restates them ("sin red, sin estado guardado", deterministic). It earns credit for information annotations do not carry: the 64 KB input cap, 1 s per call and 1 MB result limit, and the bidirectional mode of operation.
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 and well-ordered: purpose, when, not-for, side effects, determinism, limits. It is somewhat inflated by the full Spanish/English duplication plus a meta line pointing at inputSchema.description, which adds length without adding meaning, but no single 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?
With an output schema present, return values need no explanation, and the description covers mode selection at a high level, determinism, safety and execution limits. The remaining weakness is the unstated mutual exclusivity of the coordinate pairs, which is exactly what an agent needs to build a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of x/y/lat/lon/zoom is already documented with types, ranges and the "to bbox" vs "to tile" mode marker. The description adds the same zoom 0-24 range and the two-mode idea via "o una tesela a su caja", but never states that lat/lon and x/y are mutually exclusive alternatives — the one semantic gap the schema also leaves implicit. 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 and resource: converts lat/lon + zoom to Web Mercator XYZ tile coordinates and quadkey, or the inverse (tile to bbox), with the zoom range spelled out. It differentiates against geohash-encode, though not against the closer neighbours utm-from-latlon or geo-bounding-box, so the sibling boundary is only partly drawn.
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?
Has an explicit "Cuándo" clause and a "No para" clause that names the alternative tool (geohash-encode) and the condition selecting it. The guidance is concrete, but only one of several plausible competing siblings is excluded, and the "distances, bearings or areas" phrasing overlaps with geo-haversine/geo-bearing rather than this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
margin-markupMargen y recargoARead-onlyIdempotentInspect
Calcula utilidad, margen bruto % (sobre precio) y markup % (sobre costo) a partir de costo y precio de venta. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular el precio necesario para un margen objetivo (price-from-margin). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes profit, gross margin % (profit/price), markup % (profit/cost) and the price multiplier from unit cost and selling price. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the selling price needed for a target gross margin % (price-from-margin). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Unit cost (number; required; min 0; max 1000000000000000). | |
| price | Yes | Selling price (number; required; min 0; max 1000000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| profit | No | |
| multiplier | No | |
| margin_percent | No | |
| markup_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, closed-world, idempotent and non-destructive, yet the description still adds determinism (same input → same output) and concrete limits (64 KB input, 1 s per call, 1 MB result) that the annotations do not cover. The 'no side effects' sentence largely restates the annotations, 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?
The content is front-loaded and dense, but the whole block is duplicated verbatim in Spanish and English, and it ends with a self-referential artifact ('[EN completo / full EN: inputSchema.description]') that adds nothing. Useful material is roughly half the token count.
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. The description supplies the inputs, the exclusion to the sibling, the safety/determinism profile and operating limits — everything needed to call a two-number pure function correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with min/max and examples for both parameters, so the baseline is 3. The description adds real meaning beyond the schema by fixing the denominator of each ratio (margin over price, markup over cost), which is the ambiguity an agent would otherwise guess at.
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 plus the exact outputs: profit, gross margin % (profit/price), markup % (profit/cost) and the price multiplier, from cost and selling price. It explicitly names the sibling it is not (price-from-margin), so an agent can discriminate 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?
Provides an explicit 'Cuando'/'When' condition (exact, reproducible money/tax/financial math) and an explicit 'No para' exclusion routing the target-margin case to price-from-margin. Both a when and a when-not with a named alternative are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-links-extractExtraer enlaces de MarkdownARead-onlyIdempotentInspect
Lista enlaces, imágenes, definiciones de referencia y URLs sueltas de un Markdown. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer y clasificar los enlaces de un documento HTML (html-links-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists inline links, images, reference definitions and bare URLs in Markdown with their text and target, flagging relative and non-http(s) links. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| links | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description still adds real value: no network access, no stored state, determinism, and explicit limits (1 s per call, result up to 1 MB). One flaw: it claims 'JSON input up to 64 KB' while the schema's markdown maxLength is 1 MB, an internal inconsistency the agent must resolve.
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?
Well front-loaded and cleanly sectioned (Cuándo / No para / Efectos / Determinista / Límites), but the entire Spanish block is restated in English and again inside inputSchema.description, so a large share of the text is duplication rather than new 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 and annotations covering safety, the description supplies what structured fields cannot: sibling exclusion, determinism, and size/time limits. It is nearly complete for a single-parameter read-only tool, held back only by the 64 KB vs 1 MB limit mismatch.
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 'markdown' parameter carries a worked example, so the schema already does the work. The description adds nothing about the parameter itself — the 'flagging relative and non-http(s) links' detail describes output, not input — so 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 and resource set: lists inline links, images, reference definitions and bare URLs in Markdown, with text, target and flags for relative/non-http(s) links. It explicitly names the sibling it is not (html-links-extract), so an agent can separate the two 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 'No para' clause names the alternative (html-links-extract) and the condition that selects it, which is the key routing decision here. The 'Cuándo' list, however, is generic boilerplate (HTTP headers, tokens, versions, IP ranges, agent-readiness files) rather than markdown-link-specific triggers, so the positive guidance is weaker than the negative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-render-htmlMarkdown a HTML seguroARead-onlyIdempotentInspect
Convierte un subconjunto de Markdown a HTML seguro: escapa HTML crudo y solo permite enlaces http(s), mailto, # y /. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: eliminar la sintaxis Markdown (markdown-to-text). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Renders a CommonMark-like Markdown subset (headings, paragraphs, emphasis, code, fenced code, lists, blockquotes, tables, links, images) to HTML. Raw HTML is escaped and only http(s), mailto, # and / links are kept. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, so the safety profile is covered. The description still adds real value beyond them: deterministic output, no network or stored state, the link-scheme allowlist, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result) that an agent must respect to avoid failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core Spanish sentence is well front-loaded, but the description is then duplicated almost verbatim in English and closes with a self-referential pointer ('[EN completo / full EN: inputSchema.description]') that points at text the agent already has in the schema. Roughly half the token budget is redundant repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value description is not required, and the remaining gaps an agent would care about — determinism, limits, escaping/allowlist behavior, absence of side effects — are all covered. The only shortfall is that the misleading generic 'when' list invites misuse of the tool on inputs (headers, tokens, IP ranges) it does nothing for.
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?
Only one parameter, and schema description coverage is 100%, so the schema already carries the required/type contract (baseline 3). The description does add useful input semantics by enumerating the supported Markdown constructs (headings, tables, blockquotes, images, fenced code), which tells the agent what the renderer will and will not interpret, but it offers nothing on formats or edge cases beyond that.
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 ('Convierte un subconjunto de Markdown a HTML seguro') and enumerates the supported subset, plus the security behavior (raw HTML escaped, link scheme allowlist). It also names the sibling it is not ('markdown-to-text'), so an agent can separate it from the other markdown-* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The exclusion is explicit and useful ('No para: eliminar la sintaxis Markdown (markdown-to-text)'), which is the strongest routing signal. However, the 'Cuándo' clause lists a grab-bag of unrelated triggers (HTTP header, token, version, IP range, agent-readiness file) that reads like boilerplate reused across many sibling tools and does not actually describe when one would render Markdown to HTML, muddying rather than sharpening selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-tableConstruir tabla MarkdownARead-onlyIdempotentInspect
Construye una tabla Markdown (GFM) desde objetos o filas, con alineación por columna. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer los títulos de un Markdown y genera una tabla de contenido anidada con anclas estilo GitHub (markdown-toc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a GitHub-flavored Markdown table from an array of objects (columns = union of keys) or an array of rows with headers, with per-column alignment and pipe escaping. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting ATX headings (markdown-toc). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | Array of objects or arrays (array of object/array; required). | |
| align | No | Alignment per column (array of string; optional; default []; up to 100 items). | |
| headers | No | Headers (for array rows or to order columns) (array of string; optional; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description still adds real value by stating determinism and hard limits (64 KB input, 1 s per call, 1 MB result), which no annotation conveys. It repeats 'no network, no stored state' that the annotations already imply, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool-specific content is front-loaded and tight, but the definition ships the same text twice (ES then EN, then again in the schema description) and carries a 'When' sentence irrelevant to this tool. Roughly half the words do not earn their 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 described; limits, determinism, escaping and the two input modes are all covered. The only real gap is a concrete usage example of when the union-of-keys behavior surprises an agent, and the mismatched 'When' text distracts rather than completes.
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 further by explaining the semantics the schema does not: object-mode columns are the union of keys, and headers can both supply array-row headers and order columns. The per-column alignment behavior and pipe escaping are also stated, which the minimal schema field descriptions leave implicit.
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 and artifact: builds a GitHub-flavored Markdown table from objects (columns = union of keys) or rows with headers, with per-column alignment and pipe escaping. The EN half makes the input-to-output mapping unambiguous, and the exclusion of markdown-toc separates it from the nearest sibling.
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 'Not for' clause names a concrete alternative (markdown-toc), which is genuinely useful routing. However the 'When' clause is boilerplate copied from other tools in the suite ('a URL, HTTP header, token, version string, IP range ... has to be parsed, built or checked exactly') and does not describe when to reach for a table builder rather than, say, markdown-render-html or csv-build.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-tocÍndice de un MarkdownARead-onlyIdempotentInspect
Extrae los títulos de un Markdown y genera una tabla de contenido anidada con anclas estilo GitHub. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: construir una tabla Markdown (markdown-table). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Extracts ATX headings (#…######, skipping code fences) and builds a nested Markdown table of contents with GitHub-style anchors, deduplicating repeated anchors. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a GitHub-flavored Markdown table from an array of objects (markdown-table). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown (string; required). | |
| max_level | No | Deepest heading level (integer; optional; default 3; min 1; max 6). |
Output Schema
| Name | Required | Description |
|---|---|---|
| headings | No | |
| markdown | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, and closed-world behavior. The description adds useful behavioral context beyond annotations: no side effects, no network access, no stored state, deterministic output, and stated time/result limits. The 64 KB input limit is potentially inconsistent with the schema's 1 MB markdown maxLength, but it is still informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the description is bloated by a duplicated full English block and a generic 'Cuándo' list that is unrelated to TOC generation. Those passages do not earn their place and reduce clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and has rich annotations. The description covers purpose, one exclusion, side effects, determinism, and limits, which is nearly complete for correct invocation, though the misleading usage list and the 64 KB versus 1 MB limit discrepancy keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both markdown and max_level are already documented in the schema. The description does not add parameter-specific semantics such as how max_level changes output depth, 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 and resource: it extracts ATX headings, skipping code fences, and builds a nested Markdown table of contents with GitHub-style anchors. It also explicitly distinguishes the tool from markdown-table, so an agent can tell them apart 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 explicit 'No para' exclusion correctly routes away from markdown-table, but the positive 'Cuándo' guidance is a misleading boilerplate list about URLs, HTTP headers, tokens, IP ranges, HTML documents, and agent-readiness files. It does not clearly say to use this tool specifically when a Markdown table of contents is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-to-chatMarkdown a WhatsApp, Slack o TelegramARead-onlyIdempotentInspect
Convierte Markdown al formato de una app de chat: WhatsApp, Slack mrkdwn o Telegram MarkdownV2 (con el escape obligatorio); los títulos pasan a negrita y las tablas a bloques de código. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: eliminar la sintaxis Markdown (markdown-to-text). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts Markdown to the formatting of a chat app: WhatsApp (bold italic strike), Slack mrkdwn (<url|text>, & escaping) or Telegram MarkdownV2 (with its required backslash escaping); headings become bold lines and tables code blocks. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Chat app (required; one of: whatsapp, slack, telegram). | |
| markdown | Yes | Markdown (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| length | No | |
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description's 'sin efectos secundarios' partly repeats them. However it adds genuinely new behavioral facts: determinism (same input, same output), input cap of 64 KB, 1 s per-call budget, and 1 MB result ceiling, plus the concrete rendering rules (headings become bold lines, tables become code blocks, escaping required for MarkdownV2).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and dense, but the block duplicates itself almost entirely in Spanish and English ('[EN completo / full EN: inputSchema.description]'), and the misdirecting 'Cuándo'/'When' sentence consumes real estate without earning it. Content that is wrong is worse than content that is absent.
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 two required parameters are fully documented, so the structural side is covered, and limits/timeouts are disclosed. What is missing is accurate use-case framing: the stated 'when' scenarios belong to other tools in this catalog, leaving the agent without a correct picture of when a chat-format conversion is the right call.
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 enum already constrains target, so baseline is 3. The description earns above baseline by explaining what each enum value actually produces — dialect syntax per app, mandatory backslash escaping for Telegram, entity escaping for Slack — which the enum values alone do not convey.
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 (convert Markdown to chat-app formatting) and enumerates the three targets with their dialect specifics (WhatsApp *bold*, Slack mrkdwn <url|text>, Telegram MarkdownV2 escaping). It also names the sibling it is not (markdown-to-text), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative guidance is good: 'No para: eliminar la sintaxis Markdown (markdown-to-text)' correctly routes the stripping case to the sibling. But the positive 'Cuándo' clause is wrong: it says to use this when a URL, HTTP header, token, version string or IP range has to be parsed or checked exactly, none of which this tool does. That actively misroutes an agent toward this tool for url-parse or http-headers-parse style tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdown-to-textMarkdown a texto planoARead-onlyIdempotentInspect
Elimina la sintaxis Markdown (títulos, énfasis, enlaces, listas, tablas…) y devuelve texto plano. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir HTML en texto plano legible (html-to-text). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Strips Markdown syntax (headings, emphasis, links, images, code fences, lists, blockquotes, tables, inline HTML) and returns plain text, keeping link and image text. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting HTML to readable plain text by string processing (html-to-text). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Markdown (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, but the description still adds value the structured data cannot: deterministic output, no network access, no persisted state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). It also discloses semantics beyond stripping — link and image text are preserved.
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 and well ordered (purpose → when → not-for → side effects → limits), but the full English block duplicates the Spanish text verbatim, and that same English block is repeated again inside the input schema description. Roughly half the content is redundant restatement rather than new 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 unnecessary, and the description covers safety profile, determinism, limits and the sibling alternative. The one loose end is the size-ceiling discrepancy (64 KB stated vs. 1 MB maxLength in schema), which an agent could trip over on large inputs.
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 a single required parameter at 100% schema coverage (including an example and maxLength), the schema carries the baseline. The description adds content-level meaning by specifying what survives the transformation (link/image text kept), which affects what the caller should send. Minor tension: the description says 64 KB input while the schema allows maxLength 1048576 characters.
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 ('Elimina la sintaxis Markdown … devuelve texto plano') and enumerates exactly which constructs are stripped (headings, emphasis, links, lists, tables, code fences). It also distinguishes itself from the nearest sibling by name (html-to-text), so the agent can separate the two without inspecting 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 'Cuándo' clause gives concrete trigger cases (URL, HTTP header, token, version string, IP range, HTML/Markdown document, agent-readiness file that must be parsed, built or checked exactly). The 'No para' clause names the exclusive alternative html-to-text and the condition that selects it, so routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrix-determinantDeterminante de matrizARead-onlyIdempotentInspect
Calcula el determinante de una matriz cuadrada (hasta 20×20). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la inversa de una matriz cuadrada (matrix-inverse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the determinant of a square matrix (up to 20×20) by LU decomposition with partial pivoting. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the inverse of a square matrix (matrix-inverse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| matrix | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| determinant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the 'no side effects' sentence largely repeats structured data. However, the description adds genuine context beyond annotations: the LU/partial-pivoting algorithm, determinism guarantee, and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Well front-loaded: purpose, when, when-not, effects, determinism, limits, each in a labelled clause. The only waste is the full ES/EN duplication, which doubles length without adding information an agent lacks in one language.
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 pure-computation tool with an output schema and rich annotations, everything needed to call it correctly is present: input shape, limits, determinism, and the sibling to use for a different operation. The output schema covers the return value, so the description need not.
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 matrix parameter is fully documented with bounds, so the baseline is 3. The description adds the 64 KB JSON-input ceiling and the 20×20 row/column shape constraint, giving an agent extra guardrails 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 (computes the determinant of a square matrix), plus the size bound (up to 20×20) and the algorithm (LU decomposition with partial pivoting). This clearly distinguishes it from sibling matrix tools like matrix-inverse.
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?
Explicitly gives the when ('a numeric result has to be exact or reproducible instead of estimated') and the when-not with a named alternative ('Not for: computing the inverse of a square matrix (matrix-inverse)'). The agent can route without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrix-inverseInversa de matrizARead-onlyIdempotentInspect
Calcula la inversa de una matriz cuadrada (hasta 20×20); falla si es singular. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular el determinante de una matriz cuadrada (matrix-determinant). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the inverse of a square matrix (up to 20×20) by Gauss-Jordan elimination; fails for singular matrices. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the determinant of a square matrix (matrix-determinant). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| matrix | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| inverse | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, but the description adds genuinely new context: the Gauss-Jordan algorithm, failure on singular matrices, determinism guarantee, and concrete resource limits (64 KB input, 1s per call, 1 MB result). Only minor numerical-precision caveats are missing, keeping it just below top.
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?
Content is front-loaded and cleanly structured with When/Not for/Side effects/Deterministic/Limits labels. The Spanish and English duplication inflates length somewhat, but each section earns its place and is easy to scan.
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 numeric tool with an output schema present, the description covers purpose, constraints, failure modes, limits, and side effects. Nothing an agent needs to call it correctly is missing, and 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 description coverage is 100%, so the single 'matrix' parameter (array of rows, 1–20 items) is fully documented in the schema itself. The description mentions the square-matrix/20×20 constraint but adds little parameter syntax beyond what the schema and examples already convey, so 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+resource ('Calcula la inversa de una matriz cuadrada'), the algorithm (Gauss-Jordan), the size limit (20×20), and the failure mode (singular matrices). It also distinguishes itself from the matrix-determinant sibling, so an agent can select 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?
Explicitly provides 'Cuándo/When' (exact or reproducible numeric result) and 'No para/Not for' with the named alternative matrix-determinant. Both the positive and negative selection conditions are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrix-multiplyMultiplicar matricesARead-onlyIdempotentInspect
Multiplica dos matrices (hasta 20×20). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: transponer una matriz (matrix-transpose). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Multiplies two matrices (up to 20×20); columns of A must equal rows of B. When: a numeric result has to be exact or reproducible instead of estimated. Not for: transposing a matrix (matrix-transpose). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). | |
| b | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, and the description does restate those ('no network access, no stored state'), which is redundant. However it adds genuinely new behavioral facts: determinism and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result) that an agent cannot derive from 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?
Well front-loaded and organized with labeled segments (Cuándo / No para / Efectos secundarios / Límites), but the entire content is duplicated in Spanish and English, roughly doubling length with no new information for the reader. The structure is good; the volume is wasteful.
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 it covers everything else an agent needs: dimensionality limits, the compatibility precondition, determinism, and resource ceilings. Combined with full schema coverage and rich annotations, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description earns above baseline by adding the cross-parameter constraint that columns of A must equal rows of B, which the schema cannot express. It does not explain the row/column array layout in more depth, but that is already covered by the schema descriptions and examples.
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 ('Multiplica dos matrices') plus the size ceiling (up to 20×20) and the dimensional compatibility rule (columns of A must equal rows of B). It explicitly excludes the closest sibling ('No para: transponer una matriz (matrix-transpose)'), so an agent can distinguish it from matrix-transpose, matrix-determinant and matrix-inverse 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?
Gives an explicit positive condition ('When: a numeric result has to be exact or reproducible instead of estimated') and an explicit negative with the named alternative ('Not for: transposing a matrix (matrix-transpose)'). Both the when and the when-not are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrix-transposeTransponer matrizARead-onlyIdempotentInspect
Transpone una matriz (filas a columnas). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: multiplicar dos matrices (matrix-multiply). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Transposes a matrix (rows become columns), up to 20×20. When: a numeric result has to be exact or reproducible instead of estimated. Not for: multiplying two matrices (matrix-multiply). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| matrix | Yes | Matrix as array of rows (array of array; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's restatement of 'read-only, no network, no stored state, deterministic' adds little. What it does add that structured fields lack is concrete operational limits: 64 KB JSON input, 1 s per call, 1 MB result — the kind of constraint an agent needs to avoid oversized calls.
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 core operation, then when/not-for/side effects/limits in tight order. The main cost is that the English block is a near-verbatim duplicate of the Spanish block, effectively doubling length, though each individual sentence still 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-value explanation is unnecessary; the description instead covers what schemas cannot — side-effect profile, determinism, and hard limits on input size, latency, and result size. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented, so baseline would be 3. The description adds transformation semantics ('rows become columns') and the 20×20 bound, which explains what the array-of-rows structure will produce rather than merely restating its shape.
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 (matrix transpose, rows to columns) with a concrete size boundary (up to 20×20), and explicitly names the sibling it is not (matrix-multiply). An agent can distinguish it from matrix-determinant, matrix-inverse, and matrix-multiply 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?
'Not for: multiplying two matrices (matrix-multiply)' is an explicit exclusion that routes to the correct sibling. The positive 'When: a numeric result has to be exact or reproducible instead of estimated' is clear but generic — it would equally describe matrix-determinant or matrix-inverse, so it does not fully disambiguate among the matrix family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp-protocol-compatCompatibilidad del initialize de MCPARead-onlyIdempotentInspect
Compara una solicitud initialize de MCP y su respuesta (revisiones hasta 2025-11-25; desde 2026-07-28 no hay initialize, y lo informa): negociación de versión, capacidades por revisión, capacidades requeridas que faltan, nombres desconocidos y clientInfo/serverInfo. Cuándo: hay que analizar un intercambio initialize de MCP ya capturado para encontrar diferencias de versión y de capacidades. No para: revisar un server.json del MCP Registry (mcp-server-json-lint); ni una prueba en vivo de compatibilidad 2026-07-28 de un endpoint MCP remoto (SKU x402 de pago aparte de Burs-IA verify-mcp-2026, por llamada en USDC en Base). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Compares an MCP initialize request and its response (revisions up to 2025-11-25; from 2026-07-28 there is no initialize, which it… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | initialize request: the JSON-RPC message or its params ({protocolVersion, capabilities, clientInfo}) (object; required). | |
| server | Yes | initialize response: the JSON-RPC message (result or error) or its result ({protocolVersion, capabilities, serverInfo}) (object; required). | |
| client_supported_versions | No | Every protocol revision the client can speak (default: only the requested one) (array of string; optional; up to 50 items). | |
| required_client_capabilities | No | Client capabilities the server needs (e.g. "sampling", "elicitation") (array of string; optional; up to 50 items). | |
| required_server_capabilities | No | Server capabilities the client needs, as dotted paths (e.g. "tools", "resources.subscribe") (array of string; optional; up to 50 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| errors | No | |
| reason | No | |
| missing | No | |
| unknown | No | |
| warnings | No | |
| handshake | No | |
| compatible | No | |
| server_version | No | |
| version_agreed | No | |
| requested_version | No | |
| negotiated_version | No | |
| client_capabilities | No | |
| server_capabilities | No | |
| server_supported_versions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds traits the annotations do not carry: revision-dependent behavior (no initialize exists from 2026-07-28, and it reports that), determinism, and hard limits (64 KB input, 1 s runtime, 1 MB result). The 'solo lectura, sin red, sin estado guardado' sentence mostly restates readOnlyHint/openWorldHint/idempotentHint but does not contradict 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?
Front-loaded with purpose, then labeled Cuándo / No para / Efectos secundarios / Determinista / Límites sections, which is easy to scan. It loses a point for being long and for duplicating itself in a full EN block and again in the schema description, which bloats the definition without adding new 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 shape need not be explained; the description correctly spends its budget on version scope, exclusions, side effects and limits. The remaining gap is minor: it does not say what happens if the exchange is malformed or uses an unrecognized revision, though 'lo informa' hints at reporting.
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 explains the semantic role of the optional inputs: the required_client_capabilities / required_server_capabilities arrays drive the 'missing required capabilities' computation, and unknown names are matched against per-revision capability sets. That is meaning beyond the bare field descriptions, though the client/server vs client_supported_versions distinction is 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 and resource: compares a captured MCP initialize request with its response, listing exactly what is computed (version negotiation, per-revision capabilities, missing required and unknown capabilities, clientInfo/serverInfo). It also pins the revision window (up to 2025-11-25, none from 2026-07-28), so it is immediately distinguishable from the lint and probe siblings.
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?
Explicit 'Cuándo' clause scopes it to analysing an already-captured initialize exchange, and 'No para' names two alternatives: mcp-server-json-lint for server.json registry files and the separate paid verify-mcp-2026 x402 probe for live remote endpoints. When, when-not and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp-server-json-lintRevisar server.json del MCP RegistryARead-onlyIdempotentInspect
Revisa un server.json del MCP Registry: URL y fecha de $schema, nombre en DNS inverso (namespace/name), descripción de hasta 100 caracteres, versión exacta, repositorio, packages (registryType, identifier, transport) y remotes (streamable-http o sse sobre https), y campos snake_case antiguos. Cuándo: hay que revisar un server.json del MCP Registry antes de publicarlo. No para: revisar definiciones de herramientas MCP (mcp-tools-lint); ni sondear en vivo un endpoint MCP remoto (SKU x402 de pago aparte de Burs-IA verify-mcp-quick, por llamada en USDC en Base). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lints an MCP Registry server.json: $schema URL and date, reverse-DNS name (namespace/name), description up to 100 characters, exact version, repository, packages (registryType, identifier,… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| server_json | Yes | server.json content: a JSON object, or JSON text (object or string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| valid | No | |
| errors | No | |
| remotes | No | |
| version | No | |
| packages | No | |
| warnings | No | |
| transports | No | |
| schema_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/idempotent/openWorld=false) by declaring no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). These operational constraints are not derivable from the annotation block and directly affect how an agent should call 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?
Front-loaded with the resource and the checked fields, then when/not-for, then effects and limits – good ordering. It loses a point because the same content is given twice (ES in the description, EN appended, and again inside the inputSchema description), so the payload is roughly doubled without new 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?
Covers everything needed for a single-parameter read-only linter: scope, exclusions, side-effect profile, determinism, and size/time limits. An output schema exists, so omitting return-value details is correct rather than a gap.
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% with a single well-described parameter, so baseline is 3. The description adds an input-size limit but states 64 KB while the schema declares maxLength 262144 (256 KB), leaving an unresolved discrepancy the agent can't reconcile from the text alone.
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 (lints an MCP Registry server.json) and enumerates exactly what is checked: $schema URL/date, reverse-DNS name, 100-char description, exact version, repository, packages, remotes. An agent can distinguish it from the large sibling set (json-schema-validate, mcp-tools-lint, openapi-summary) 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?
Explicit 'Cuándo' clause (before publishing a server.json) plus an explicit 'No para' section naming the alternatives: mcp-tools-lint for tool definitions and a separate paid verify-mcp-quick SKU for live endpoint probing. Both the when and the when-not are stated, which is rare.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp-tools-lintRevisar herramientas MCPARead-onlyIdempotentInspect
Revisa definiciones de herramientas MCP: nombres, descripciones, inputSchema, requeridos y propiedades sin documentar; devuelve un puntaje 0-100. Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: revisar una Agent Card de A2A según la especificación A2A (agent-card-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lints MCP tool definitions (a tools/list result or array): name syntax and uniqueness, description presence/length, inputSchema root type, required keys defined in properties, undocumented properties, and annotation hints; returns a 0-100 score. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Array of tools or an object with a tools array (array or object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | No | |
| tools | No | |
| errors | No | |
| issues | No | |
| warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/no-open-world, so the 'solo lectura, sin red, sin estado guardado' sentence mostly restates them. But the description adds genuinely non-structured traits: determinism and hard limits (64 KB input, 1 s per call, 1 MB result), which an agent cannot infer from the schema or annotations. It does not say whether the score is accompanied by per-finding details (though an output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then When/Not-for/Side-effects/Determinism/Limits in a scannable order — no hunting required. The main inefficiency is the verbatim duplication of the full EN text that also appears inside inputSchema.description, plus the loosely related OpenAPI/receipt examples in the 'Cuándo' list.
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, annotations carry the safety profile, and the schema fully documents the one parameter. The description still covers the non-structured gaps that matter for correct invocation: accepted input shapes, size/time limits, determinism and the nearest non-overlapping sibling.
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 'tools' parameter already documents both accepted shapes ('array or object') with a worked example. The description's 'a tools/list result or array' adds no detail beyond that, 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 and resource ('Revisa definiciones de herramientas MCP') and enumerates exactly what is checked: name syntax/uniqueness, description presence, inputSchema root type, required-vs-properties, undocumented properties, annotation hints, plus the 0-100 score output. The explicit 'No para: ... (agent-card-validate)' clause distinguishes it from at least one sibling by name.
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?
An explicit 'Cuándo' clause and an explicit exclusion ('No para' → agent-card-validate) give real routing guidance. However, the 'Cuándo' text is broad and partly off-topic (OpenAPI documents, 'recibos'), and it never mentions the far more likely alternatives in this sibling list — mcp-server-json-lint, tool-definition-convert, mcp-protocol-compat — so the most probable confusion is left unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mermaid-checkRevisar sintaxis MermaidARead-onlyIdempotentInspect
Revisa de forma básica un diagrama Mermaid sin renderizarlo: tipo de diagrama y dirección válidos, corchetes y comillas balanceados por línea, pares subgraph/end y loop/alt/opt/par…end, y aristas con destino. No es un analizador completo. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: revisar de forma básica un texto DOT de Graphviz sin renderizarlo (dot-check). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Sanity-checks Mermaid diagram text without rendering it: known diagram type and direction, balanced brackets and quotes per line, subgraph/end and block (loop/alt/opt/par) pairing, and flowchart edges with a target. Not a full parser. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Mermaid source (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| issues | No | |
| diagram_type | No |
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 still adds real value with 'no rendering', 'not a full parser', determinism, and explicit limits (64 KB input, 1 s per call, 1 MB result). One caveat: the stated 64 KB input cap conflicts with the schema's maxLength of 262144, which could confuse an agent on large inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the check list are front-loaded and earn their space. But the copied 'Cuándo' enumeration of URLs/tokens/IP ranges is pure waste and actively harmful, and the trailing '[EN completo / full EN: inputSchema.description]' pointer is redundant meta-text rather than content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-string, low-complexity validator with an output schema present, the description covers scope, the non-parser caveat, determinism, and limits — enough to call it correctly. The only substantive hole is trustworthy when-to-use guidance, which is filled with irrelevant content instead.
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 required parameter with 100% schema description coverage plus a worked example embedded in the schema, so the baseline is already high. The description adds nothing about the 'text' parameter specifically, but nothing is missing at this parameter count.
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 ('Revisa de forma básica un diagrama Mermaid sin renderizarlo') and then enumerates exactly what is checked: diagram type/direction, bracket/quote balance per line, subgraph/end and loop/alt/opt/par pairing, and edges with a target. It also explicitly bounds scope ('No es un analizador completo') and names the sibling it is not (dot-check), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No para' exclusion against dot-check is genuinely useful routing. However, the 'Cuándo' clause is boilerplate that does not match this tool at all — it lists URLs, HTTP headers, tokens, version strings, IP ranges, HTML/Markdown documents — so the only positive usage guidance present actively misleads an agent about when to invoke mermaid-check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mime-lookupBuscar tipo MIMEARead-onlyIdempotentInspect
Busca el tipo MIME de un archivo o extensión, o las extensiones de un tipo MIME (tabla de ~130 tipos). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar Content-Type en tipo, subtipo, sufijo (content-type-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Looks up the MIME type for a file name or extension, or the common extensions for a MIME type, from a built-in table of about 130 types; also says whether the type is text-like. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | File name, extension (.png) or MIME type (image/png) (string; required; up to 300 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mime | No | |
| text | No | |
| known | No | |
| extensions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, yet the description still adds material facts: no network access, no persisted state, determinism (same input → same output) and concrete limits (64 KB input, 1 s per call, 1 MB result). These are exactly the operational constraints an agent needs before calling and cannot be inferred from the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence and the effects/limits block are tight and front-loaded, but the 'Cuándo' list enumerating tokens, IP ranges, versions and agent-readiness files is noise for a MIME table and dilutes the signal. The description also carries a full Spanish block plus an English restatement, roughly doubling the reading cost.
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, table-backed lookup with an output schema and full annotation coverage, the definition supplies everything needed: what it resolves, in which direction, what it does not do, that it is side-effect-free and deterministic, and its limits. 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% and the single 'query' parameter already documents the accepted forms with an example ('report.final.PDF'), so the description's mention of 'archivo o extensión' or 'tipo MIME' mostly restates the schema. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource plus both lookup directions (file name/extension → MIME, MIME → extensions) and the size of the built-in table, which tells the agent exactly what the tool knows. It also names the sibling it is not (content-type-parse), so the tool is distinguishable without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No para' clause explicitly excludes content-type-parse, which is the highest-value routing signal. The positive 'Cuándo' clause, however, is a generic list (URL, token, version, IP range, HTML/Markdown, agent-readiness file) that reads like boilerplate shared across the server and only loosely maps to a MIME lookup, so the when-to-use side is weaker than the when-not side.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixed-script-detectDetectar mezcla de alfabetosARead-onlyIdempotentInspect
Señala palabras que mezclan alfabetos (p. ej. latino y cirílico), típico de suplantación con homoglifos. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar caracteres invisibles (text-invisible-scan). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Flags words that mix letters from different scripts (e.g. Latin with Cyrillic or Greek look-alikes), a common homoglyph-spoofing sign, and lists scripts used. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: finding zero-width, bidi-control, Unicode tag and other invisible characters (text-invisible-scan). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| scripts | No | |
| suspicious | No | |
| mixed_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, closed-world, idempotent and non-destructive, and the description reinforces determinism (same input, same output) plus concrete operational limits (64 KB input, 1 s per call, 1 MB result) that annotations cannot express. It does not describe the shape of the findings beyond 'lists scripts used', which the output schema covers. Minor wart: the stated 64 KB JSON input cap is smaller than the schema's maxLength of 262144, leaving a size ambiguity.
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 purpose, then When / Not for / Side effects / Deterministic / Limits in a scannable labeled structure. The Spanish and English halves are deliberate duplication for bilingual serving, but they do double the token cost.
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; the description covers the remaining agent needs: safety profile, determinism, and hard limits. The only gap is the size-cap mismatch between the description and the schema's maxLength.
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?
Only one parameter and schema description coverage is 100%, so the schema already carries the semantics; the description adds no format or content guidance for 'text' beyond size limits. This is the baseline case where the structured field does the work.
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 ('Señala palabras que mezclan alfabetos') and names the concrete phenomenon it detects (Latin/Cyrillic homoglyph spoofing), plus that it lists scripts used. The sibling text-invisible-scan is explicitly distinguished, so an agent can choose between them 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?
Contains explicit 'Cuándo:' (exact transformation/comparison/measurement of text) and 'No para:' (invisible characters, routed to text-invisible-scan). Both the positive trigger and the exclusion with a named alternative are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modular-arithmeticAritmética modularARead-onlyIdempotentInspect
Calcula base^exponente mod m y el inverso modular cuando existe. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: realizar aritmética exacta de enteros grandes (bigint-calc). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes base^exponent mod m (fast exponentiation) and, when it exists, the modular inverse of base mod m. Arbitrary precision up to 300 digits. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base (integer or string; required; up to 301 chars; pattern ^-?\d{1,300}$). | |
| modulus | Yes | Modulus ≥ 1 (integer or string; required; up to 301 chars; pattern ^-?\d{1,300}$). | |
| exponent | No | Exponent ≥ 0 (integer or string; optional; up to 301 chars; pattern ^-?\d{1,300}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| inverse | No | |
| power_mod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new context: determinism, 300-digit arbitrary precision, and concrete limits (64 KB input, 1 s per call, 1 MB result). The 'no network, no stored state' phrase partly restates annotations, keeping it just below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core computation, then labeled sections (When / Not for / Side effects / Deterministic / Limits) that are easy to scan. The bilingual duplication makes it longer than strictly necessary, but each labeled line carries distinct 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 explained. Combined with annotations covering safety and the description covering precision, determinism and resource limits, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema: the 300-digit precision bound and the condition that the inverse is returned only 'when it exists' (i.e. base coprime to modulus), which the schema does not state.
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: computes base^exponent mod m and the modular inverse when it exists. It also names the sibling it is not (bigint-calc), so an agent can distinguish it 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?
Explicit 'When' clause (exact/reproducible numeric result instead of estimated) and an explicit 'Not for' clause routing arbitrary-precision integer arithmetic to bigint-calc. Both the positive and negative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
money-allocateRepartir dinero sin perder centavosARead-onlyIdempotentInspect
Divide un monto en partes (por proporciones o iguales) en unidades menores, sin perder centavos: la suma siempre cuadra. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: dividir una cuenta entre personas con propina opcional y redondeo de cada parte (bill-split). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits an amount into parts by ratios or equally, in integer minor units using the largest-remainder method so the parts always add up exactly to the total. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: splitting a bill among people with an optional tip % (bill-split). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| parts | No | Equal parts when no ratios (integer; optional; min 1; max 1000). | |
| amount | Yes | Total amount (number; required; min 0; max 10000000000000). | |
| ratios | No | Ratios (e.g. [50, 30, 20]); omit with parts for equal split (array of number; optional; at least 1 items; up to 1000 items). | |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| allocations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, and the description corroborates rather than contradicts them while adding real context: no network, no stored state, deterministic same-input-same-output, and hard operational limits (64 KB input, 1 s per call, 1 MB result). The largest-remainder disclosure also tells the agent how rounding is resolved.
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 core action and invariant, then cleanly labelled sections (Cuándo / No para / Efectos / Determinista / Límites), so an agent can stop early. It loses a point because the Spanish and English blocks restate the same content, roughly doubling length without adding new 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, annotations covering the safety profile, and full schema coverage, the description still supplies everything else an agent needs: purpose, exclusion routing, determinism, side-effect profile and resource limits. No meaningful gap remains for a 4-parameter read-only calculator.
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 (amount, parts, ratios, currency) are already documented with types, bounds and defaults; baseline is 3. The description adds the 'integer minor units' framing and the ratios-vs-equal split behavior, but does not clarify edge semantics the schema leaves implicit, e.g. what happens if both parts and ratios are supplied.
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 ('Divide un monto en partes'), the two modes (proporciones o iguales), the unit (unidades menores) and the algorithm (largest-remainder), plus the invariant that the sum always matches. It also explicitly names the sibling it is NOT (bill-split), so an agent can discriminate 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?
Provides an explicit 'Cuándo' clause (exact, reproducible money/tax/financial-math results with rounding, cents, rates) and an explicit 'No para' clause routing to bill-split with the distinguishing condition (optional tip %, per-person rounding). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
month-infoDatos del mes y del añoARead-onlyIdempotentInspect
Describe un año y mes: días, si es bisiesto, día de la semana del primero y del último, días entre semana y trimestre. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: devolver un mes como cuadrícula de semanas (calendar-month). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Describes a year and month: number of days, leap year, weekday of the first and last day, number of weekdays (Mon-Fri) and weekend days, and the quarter. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: returning a month as a grid of weeks (calendar-month). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (integer; required; min 1; max 9999). | |
| month | Yes | Month 1-12 (integer; required; min 1; max 12). |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | No | |
| quarter | No | |
| weekdays | No | |
| leap_year | No | |
| last_weekday | No | |
| weekend_days | No | |
| first_weekday | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description still adds value beyond them: no network access, no stored state, determinism guarantee, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). That is exactly the extra behavioral context a calling agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish version is front-loaded and well-sectioned (purpose, when, not for, side effects, determinism, limits). It loses a point for the bilingual duplication and the trailing meta-reference '[EN completo / full EN: inputSchema.description]', which adds length without adding 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?
A pure-function calendar tool with an output schema, full parameter documentation, annotations covering the safety profile, and stated limits — nothing an agent needs in order 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 description coverage is 100%, with both parameters carrying type, min/max and examples, so the schema does the heavy lifting. The description adds no syntax or edge-case guidance about year/month beyond what the schema already states, 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 ('Describe') and resource ('un año y mes') and enumerates exactly what is returned: number of days, leap year, weekday of the first and last day, weekday/weekend counts, and quarter. It also names the sibling it is not (calendar-month), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit 'Cuándo' condition (when a date, time-zone or calendar result must be exact – offsets, DST, month ends, leap years) and an explicit 'No para' exclusion that routes to calendar-month. Both the selection and rejection cases are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moon-phaseFase lunarARead-onlyIdempotentInspect
Calcula la fase lunar aproximada para un instante: edad en días, fracción iluminada y nombre de la fase (en/es). Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: calcular la salida y puesta del sol y la duración del día para un lugar y una fecha (sun-times). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the approximate moon phase for an instant from the mean synodic month (29.530589 days) since the 2000-01-06 18:14 UTC new moon: age in days, illuminated fraction and phase name (en/es). Accuracy about ±1 day for names. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | Instant (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| phase | No | |
| age_days | No | |
| phase_es | No | |
| illumination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, yet the description still adds real value: the ±1 day accuracy caveat, the deterministic-output guarantee, and concrete limits (64 KB input, 1 s per call, 1 MB result). The accuracy disclosure is the kind of trait an agent cannot get from structure. Minor deduction because the side-effect/determinism statements largely restate the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Cuando / No para / Efectos / Límites structure is scannable and front-loads the purpose, but the content is delivered twice in full (ES then EN) and then a third time verbatim via the schema description, and several sentences merely restate the annotations.
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 computation with an output schema and full annotation coverage, this is essentially complete: purpose, accuracy, limits and the sibling exclusion are all present. The one gap is the misleading "when" clause, which points at DST/calendar exactness rather than at actual moon-phase use cases.
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% with a single required parameter, so the baseline is 3. The description adds conceptual meaning (the instant is measured against a fixed reference new moon) but does not clarify the accepted datetime format or timezone handling beyond what the schema's example shows.
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 (computes approximate moon phase for an instant) and enumerates the outputs: age in days, illuminated fraction, phase name in en/es. It also names the algorithm basis (mean synodic month since the 2000-01-06 18:14 UTC new moon) and accuracy (±1 day), which no sibling covers.
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 exclusion is excellent: "No para: calcular la salida y puesta del sol... (sun-times)" explicitly names the closest sibling and the condition that selects it. However, the positive "Cuándo" guidance (date, time-zone or calendar results needing exactness, DST, leap years) does not describe a use case for moon phase at all — it reads like boilerplate from a datetime tool, so an agent gets only half-usable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
morse-decodeDecodificar MorseARead-onlyIdempotentInspect
Decodifica código Morse internacional. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto en código Morse internacional (morse-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes International Morse code (dots/dashes, letters separated by spaces, words by / or 3+ spaces). When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding text in International Morse code (morse-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| morse | Yes | Morse code (string; required; up to 16384 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety restatement adds little. The description does add real context beyond the annotations: determinism (same input, same output) and concrete limits (64 KB JSON input, 1 s per call, 1 MB result), which are not in the annotations or schema.
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?
Well structured with explicit labels (Cuándo / No para / Efectos / Límites), but the whole content is duplicated in Spanish and English, roughly doubling length for a single calling agent. Front-loading is good, but the doubled text is padding relative to a single-locale consumer.
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 one-parameter, output-schema-backed, fully annotated tool, the description covers everything needed: input notation, what it is not, safety profile, determinism and hard limits. Nothing material 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 'morse' parameter, so the baseline is 3. The description goes further by defining the expected input notation (dots/dashes, letters separated by spaces, words by / or 3+ spaces), which is the main way a caller can get this wrong.
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 ('Decodifica código Morse internacional') and immediately defines the input alphabet (dots/dashes, spaces between letters, / or 3+ spaces between words). It explicitly names the opposite tool (morse-encode), so the agent can distinguish it from the sibling 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?
Explicit 'Cuándo' clause with the condition (convert bytes/text to or from this encoding exactly, without guessing) and an explicit 'No para' clause naming the alternative morse-encode. Both when-to-use and when-not-to-use are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
morse-encodeCodificar MorseARead-onlyIdempotentInspect
Codifica texto en código Morse internacional; letras separadas por espacios y palabras por " / ". Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar código Morse internacional (morse-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes text in International Morse code: letters separated by spaces, words by " / ". Unsupported characters are reported, not dropped silently. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding International Morse code (morse-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| morse | No | |
| unsupported | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description still adds real value: unsupported characters are reported rather than dropped, and it gives concrete limits (64 KB input, 1 s per call, 1 MB result). The 'o desde ella' phrasing mildly blurs the encode-only behavior, but nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded: purpose first, then when/not-for, side effects, determinism, limits. It is a full bilingual duplicate, so roughly half the text is redundant, but each block is individually tight and 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?
An output schema exists, so return format needn't be explained, and limits plus determinism are covered. The one real gap is the mismatch between the described 64 KB input ceiling and the schema's 4096-character maxLength, which an agent could trip over when sizing input.
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 there is only one parameter, so the schema already documents 'text'. The description adds the unsupported-character contract, but its stated 64 KB input limit conflicts with the schema's maxLength of 4096, which is more confusing than clarifying.
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 ('Codifica texto en código Morse internacional') plus the exact output convention (letters separated by spaces, words by ' / '). It explicitly names the sibling it is not (morse-decode), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has an explicit 'Cuándo' clause and a 'No para' exclusion naming morse-decode, which is strong routing guidance. Slightly weakened by 'convertir bytes o texto a esta codificación, o desde ella', which implies bidirectional conversion while the exclusion says decode belongs elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mx-amount-in-wordsImporte con letra (México, CFDI)ARead-onlyIdempotentInspect
Escribe un importe en letras al estilo de facturas (CFDI) y cheques en México: "MIL DOSCIENTOS PESOS 50/100 M.N.". Cuándo: hay que tratar texto, números o fechas en español según las reglas escritas del idioma y no por aproximación. No para: escribir un valor en pesos colombianos en letras para cheques y facturas (co-amount-in-words). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Writes a peso amount in words in the style used on Mexican invoices (CFDI) and checks: "MIL DOSCIENTOS PESOS 50/100 M.N.". When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: writing a Colombian peso amount in words for cheques and invoices (co-amount-in-words). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount as number or decimal string (up to 2 decimals) (number or string; required; up to 30 chars). | |
| uppercase | No | Uppercase (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the "read-only, no network, no stored state" statement is largely redundant. The genuinely additive content is determinism (same input → same output) and hard limits (64 KB input, 1 s/call, 1 MB result), which the agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well structured with labeled sections (When / Not for / Side effects / Limits) and the output example front-loaded. Slight waste in the ES/EN duplication plus the dangling "[EN completo / full EN: inputSchema.description]" pointer, which carries no 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, return format need not be described, and annotations cover safety; the description still supplies determinism, limits and a sample result. Minor gaps remain around edge-case inputs (negatives, more than two decimals) that a money-in-words tool would plausibly encounter.
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 both parameters carry their own descriptions, so the schema does the heavy lifting and baseline 3 applies. The description adds nothing about `amount` accepted forms (negatives, >2 decimals, rounding) or what `uppercase=false` produces, beyond implying the default case via the sample output.
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+resource (write a peso amount in words, Mexican CFDI/cheque style) and gives a literal output example, so the agent knows exactly what comes back. It also names the sibling it is not (co-amount-in-words), making the distinction from other amount-in-words tools immediate.
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?
"Cuándo / When" states the triggering condition (handling Spanish text/numbers/dates by written language rules) and "No para / Not for" explicitly excludes the Colombian variant with a named alternative sibling. Both the positive and negative selection conditions are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mx-clabe-validateValidar CLABE (México)ARead-onlyIdempotentInspect
Valida una CLABE interbancaria mexicana de 18 dígitos: estructura (banco 3, plaza 3, cuenta 11, dígito 1) y el dígito de control ponderado 3-7-1 módulo 10. Solo valida; no calcula dígitos faltantes. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar una CURP mexicana (mx-curp-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates an 18-digit Mexican CLABE interbank account number: structure (bank 3, branch/plaza 3, account 11, check digit 1) and the weighted 3-7-1 mod-10 check digit. Validation only; it never computes a missing digit. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| clabe | Yes | CLABE (spaces, dots or dashes allowed) (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| length | No | |
| reason | No | |
| account | No | |
| bank_code | No | |
| branch_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false. The description reinforces these but also adds operational detail annotations don't carry: no network, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). The duplication of annotation facts slightly dilutes the added value.
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?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Límites) that make scanning easy. However the full Spanish text is then repeated verbatim in English, and the schema description repeats the EN block again, so the total surface is roughly double what is strictly needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover the safety profile, the definition supplies everything else an agent needs: precise validation semantics, exclusions, side-effect posture, determinism, and size/time limits. Nothing material is left 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?
Schema coverage is 100% and the single param is exemplified, so the baseline is 3. The description adds real semantic meaning by explaining what the component segments of the input represent and clarifying the tool never fills in a missing check digit, which helps an agent interpret the expected input shape.
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 with exact scope: validates an 18-digit Mexican CLABE, breaking down structure (bank 3, plaza 3, account 11, check digit 1) and the 3-7-1 mod-10 checksum. It also bounds the operation ('solo valida; no calcula dígitos faltantes'), so an agent knows precisely what is and isn't performed, distinguishing it from generic checksum 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?
Explicit 'Cuándo' clause (check a user-supplied account number offline before storing/using it) and an explicit 'No para' naming the sibling mx-curp-validate. Minor gap: the when-to-use text widens scope to 'LatAm o España' IDs, which is broader than CLABE and could mislead an agent into routing a Spanish IBAN here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mx-curp-validateValidar CURP (México)ARead-onlyIdempotentInspect
Valida una CURP mexicana (18 caracteres): estructura, fecha de nacimiento, sexo, entidad y dígito verificador RENAPO. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar un RFC mexicano (mx-rfc-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Mexican CURP (18 characters): structure, birth date, sex (H/M/X), state code, and the RENAPO check digit; returns valid/invalid and the decoded fields. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Mexican RFC (mx-rfc-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| curp | Yes | CURP (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sex | No | |
| state | No | |
| valid | No | |
| reason | No | |
| birth_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld=false, idempotent, non-destructive), the description adds offline/no-network, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). It also states the return shape (valid/invalid plus decoded fields), which is behavioral context annotations 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?
Labeled sections (Cuándo / No para / Efectos / Determinista / Límites) make it skimmable and front-loaded with purpose. It loses a point for repeating the entire English block already present in inputSchema.description, plus the pointer '[EN completo / full EN: inputSchema.description]'.
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 one required param, full schema coverage, an output schema, and rich annotations, the description fills every remaining gap: trigger conditions, exclusion, side effects, determinism, and size/time limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: the input is an 18-character CURP, and it is decoded into birth date, sex, and state code. Minor tension with the schema's maxLength of 20 is a small blemish, not a blocker.
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 (validate a Mexican CURP, 18 chars) with an enumeration of exactly what is checked: structure, birth date, sex, state code, RENAPO check digit. It also names the sibling it is not (mx-rfc-validate), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Cuándo' clause gives a concrete trigger (checking a user-supplied LatAm/Spanish ID offline before storing or using it) and states the tool only validates. The 'No para' clause explicitly routes RFC validation to mx-rfc-validate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mx-rfc-validateValidar RFC (México)ARead-onlyIdempotentInspect
Valida un RFC mexicano (SAT): 13 caracteres persona física o 12 moral, fecha y dígito verificador mod 11. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar una CURP mexicana (mx-curp-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Mexican RFC (SAT taxpayer ID): 13 characters for individuals or 12 for companies, embedded date, and the SAT mod-11 check digit (homoclave last character). Returns valid/invalid only. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Mexican CURP (mx-curp-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| rfc | Yes | RFC (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| valid | No | |
| reason | No | |
| generic | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, but the description goes further: no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). These operational constraints are not derivable from the annotations and materially affect how an agent batches or retries calls.
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 core purpose, then cleanly segmented into When / Not for / Side effects / Deterministic / Limits. Slightly bloated by the bilingual ES+EN duplication and the trailing pointer to inputSchema.description, but every section 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 spelled out, yet the description still notes it returns valid/invalid only. For a single-parameter, read-only validator, 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% and the single parameter is documented, so the baseline is 3. The description adds real meaning beyond the schema's bare 'up to 20 chars' by explaining the expected RFC structure (13 chars individual / 12 company, embedded date, mod-11 homoclave), which helps the agent pre-validate input.
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 ('Valida un RFC mexicano (SAT)') and immediately pins down the exact validation rules (13/12 chars, embedded date, mod-11 check digit). It explicitly names the sibling it is not (mx-curp-validate), so an agent can distinguish it 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?
Provides an explicit 'Cuándo/When' clause (offline check of a user-supplied LatAm/Spanish ID before storing or using it) and an explicit 'No para/Not for' exclusion pointing to mx-curp-validate. Both the positive trigger and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nanoidGenerar ID estilo Nano IDARead-onlyInspect
Genera IDs aleatorios compactos y seguros para URL (21 caracteres por defecto) o con alfabeto propio. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: generar un token aleatorio de 1 a 256 bytes en hex, base64url o base58 (random-token). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio salvo que se dé seed. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates compact URL-safe random IDs (default 21 chars from A-Za-z0-9_-) or with a custom alphabet of 2-256 unique characters, without modulo bias. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating a random token of 1-256 bytes encoded as hex, base64url or base58, e.g. for API keys or nonces (random-token). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed. With a seed the output is reproducible; without one, cryptographically random bytes are used (string; optional; up to 256 chars). | |
| size | No | Length (integer; optional; default 21; min 2; max 256). | |
| count | No | How many to generate (integer; optional; default 1; min 1; max 100). | |
| alphabet | No | Custom alphabet (string; optional; at least 2 chars; up to 256 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ids | No | |
| aviso | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations: no network, no stored state, non-determinism that is removed when seed is supplied, and hard limits (64 KB input, 1 s per call, 1 MB result). The safety profile itself (readOnlyHint true, openWorldHint false) is already carried by annotations, so this is supplementary rather than essential; return-value shape is left to the existing output schema.
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 purpose, then when/not-for, side effects and limits – a sound order. The Spanish and English versions duplicate the same content verbatim, and the trailing pointer '[EN completo / full EN: inputSchema.description]' is redundant noise, inflating length without adding 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 4-param generator with an output schema and full annotation coverage, the description supplies everything needed to call it correctly: determinism via seed, alphabet constraints, batch size, and resource limits. The only gap is the confusing 'embedded fields' phrasing, which could send an agent looking for a decode capability this tool does not expose.
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 adds semantics the schema lacks: the default alphabet charset A-Za-z0-9_- and the requirement that custom alphabet characters be unique (schema only states length bounds). It does not explain how seed interacts with count or alphabet, which is the one remaining ambiguity.
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 and resource ('Genera IDs aleatorios compactos y seguros para URL'), names the default format (21 chars, A-Za-z0-9_-) and the custom-alphabet variant, which cleanly separates it from token/ID siblings. The clause 'o leer los campos que lleva dentro' ('or read the fields it contains') is misleading, since a random Nano ID has no embedded fields to decode, and it muddies an otherwise precise statement.
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 an explicit When ('hay que generar un identificador en este formato') and an explicit Not-for with the named alternative ('random-token' for hex/base64url/base58 tokens of 1-256 bytes) plus the motivating use cases (API keys, nonces). An agent can route between nanoid and random-token without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndjson-to-jsonNDJSON a arreglo JSONARead-onlyIdempotentInspect
Convierte JSON delimitado por líneas (NDJSON) en un arreglo. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: serializar un arreglo JSON como NDJSON (json-to-ndjson). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses newline-delimited JSON (JSON Lines) into an array, skipping blank lines; errors report the failing line number. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: serializing an array of JSON values as newline-delimited JSON (json-to-ndjson). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ndjson | Yes | NDJSON text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| values | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, yet the description still adds real value: blank lines are skipped, errors report the failing line number, output is deterministic, and explicit limits (64 KB input, 1 s, 1 MB result) are disclosed. That is behavioral context not derivable from 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?
Front-loaded and well structured with labelled sections, but the entire payload is repeated verbatim in Spanish and English, roughly doubling length without adding information for a reader who understands either language.
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 errors, blank-line handling, determinism and limits. The only gap is the inconsistent input size bound (64 KB in prose vs 1 MB in schema), which an agent could stumble on for large inputs.
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?
Only one parameter and schema coverage is 100%, so the baseline is 3. The description adds a size limit that the schema does not express, though it states 64 KB while the schema's maxLength is 1 MB, leaving a minor ambiguity about the effective bound.
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?
State a specific verb and resource: parses newline-delimited JSON into an array, with blank-line skipping and line-numbered errors. It explicitly names the inverse sibling json-to-ndjson, so the agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit 'When' (transform/compare/check structured data exactly) and 'Not for' (serializing an array as NDJSON, with the sibling named). The routing condition between the two tools is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ngramsN-gramasARead-onlyIdempotentInspect
Genera n-gramas de caracteres o palabras con sus conteos. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar la frecuencia de palabras en un texto (word-frequency). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Produces character or word n-grams (n = 1-10) with counts, sorted by frequency. Useful for keyword or similarity features. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting word frequencies in text (word-frequency). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | n (integer; optional; default 2; min 1; max 10). | |
| top | No | Top N (integer; optional; default 20; min 1; max 1000). | |
| text | Yes | Text (string; required). | |
| unit | No | Unit (optional; one of: word, char; default "word"). | word |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| ngrams | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description restates that ("solo lectura, sin red, sin estado guardado") rather than adding to it. What it does add beyond annotations is genuinely useful: determinism guarantee and concrete limits (64 KB JSON input, 1 s per call, 1 MB result), which an agent cannot infer from structured fields. Some duplication of the annotation profile keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Límites), but the entire Spanish and English blocks are content-identical, roughly doubling length without adding information. Every sentence earns its place individually, but the bilingual duplication does not.
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 prose. Usage routing, side effects, determinism and hard limits are all covered for a 4-parameter read-only text tool. Nothing an agent needs in order 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 description coverage is 100%, so n, top, text and unit are fully documented with types, defaults, ranges and an enum. The description only echoes the n=1-10 range and the word/char choice, and never mentions the top parameter or its truncation behavior. Baseline 3 is appropriate when the schema carries the parameter burden.
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 ("Produces character or word n-grams (n = 1-10) with counts, sorted by frequency") and immediately distinguishes the output shape by sorting order. The nearby sibling word-frequency is named as the thing it is not, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has an explicit "When" clause (exact transform/compare/measure vs. approximation) and an explicit "No para / Not for" clause that names the alternative tool, word-frequency, by name. This is the strongest possible usage routing short of listing prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
number-format-localeFormatear número por paísARead-onlyIdempotentInspect
Formatea un número según el idioma/país con Intl (decimal, porcentaje, compacto, científico). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: redondear a N decimales con aritmética decimal exacta y modos half_up, half_even (round-number). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Formats a number for a locale with Intl.NumberFormat: decimal, percent, compact (1.2K / 1,2 mil), scientific or engineering notation, with min/max fraction digits and grouping. When: a numeric result has to be exact or reproducible instead of estimated. Not for: rounding a number to N decimal places using exact decimal arithmetic (round-number). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Style (optional; one of: decimal, percent, compact, scientific, engineering; default "decimal"). | decimal |
| value | Yes | Number (number; required). | |
| locale | No | BCP 47 locale (string; optional; default "en-US"; up to 35 chars; pattern ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$). | en-US |
| grouping | No | Use grouping separators (boolean; optional; default true). | |
| max_fraction_digits | No | Max fraction digits (integer; optional; min 0; max 20). | |
| min_fraction_digits | No | Min fraction digits (integer; optional; min 0; max 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
| locale | No | |
| formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/non-openWorld, and the description still adds real context: no network, no stored state, determinism, plus concrete limits (64 KB input, 1 s per call, 1 MB output). That exceeds the lower bar annotations set.
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 core action, then When / Not for / effects / limits in a scannable order. It is somewhat verbose because the same content is restated in Spanish, English, and again in inputSchema.description, which costs a point.
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 6-parameter read-only formatter with a full output schema and complete annotation coverage, nothing an agent needs is missing: purpose, alternatives, determinism, and resource limits are all present.
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; the description adds value by showing concrete compact output examples ("1.2K / 1,2 mil") and restating the min/max fraction digit and grouping behavior. It does not explain that percent style multiplies by 100, a meaningful semantic gap that keeps it below 5.
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 ("Formats a number for a locale with Intl.NumberFormat") and enumerates the supported styles (decimal, percent, compact, scientific, engineering). An agent can distinguish it from sibling formatting/conversion tools 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?
Explicit "When:" clause sets the selection condition (exact/reproducible numeric output) and an explicit "Not for:" clause names the alternative sibling round-number and the condition that routes to it. This is the strongest possible routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
number-to-words-enNúmero en letras (inglés)ARead-onlyIdempotentInspect
Escribe un entero en palabras en inglés (cardinal u ordinal). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: escribir un entero hasta 10^18 en palabras en español (es-number-to-words). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Spells an integer (|n| < 10^18) in English words, as a cardinal (one hundred twenty-three) or ordinal (one hundred twenty-third). When: a numeric result has to be exact or reproducible instead of estimated. Not for: spelling an integer up to 10^18 in Spanish words (es-number-to-words). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Integer (integer or string; required; up to 19 chars; pattern ^-?\d{1,18}$). | |
| ordinal | No | Ordinal form (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety restatement ('solo lectura, sin red, sin estado guardado') adds little. It does add value beyond structured data with hard limits (64 KB JSON input, 1 s per call, 1 MB result) and an explicit determinism guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the ES/EN split is parallel, but the entire description is duplicated in Spanish and English, so roughly half the text is redundant for any given reader. The 64 KB/1 s/1 MB limits are useful but phrased in a boilerplate block.
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; purpose, exclusions, side effects, determinism and limits are all covered. Minor gap: how negative signs are rendered in words is not stated, though the schema pattern allows 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 100%, so baseline is 3, but the description adds meaning: it states the accepted magnitude range (|n| < 10^18) and shows what the ordinal flag actually produces ('one hundred twenty-third' vs 'one hundred twenty-three'). That is real semantic value beyond the boolean's schema text.
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+resource: 'Spells an integer (|n| < 10^18) in English words, as a cardinal ... or ordinal', with concrete output examples. It is immediately distinguishable from the near sibling es-number-to-words, which it names.
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?
Explicitly names the alternative and the exclusion: 'Not for: spelling an integer up to 10^18 in Spanish words (es-number-to-words)'. The 'When' clause ('a numeric result has to be exact or reproducible instead of estimated') is a bit vague since word-spelling is always deterministic, but the routing signal against the sibling is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
objectid-decodeDecodificar ObjectId de MongoDBARead-onlyIdempotentInspect
Valida un ObjectId de MongoDB y extrae su fecha de creación. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: decodificar un KSUID de 27 caracteres en fecha y payload de 128 bits (ksuid-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 24-hex MongoDB ObjectId and extracts its embedded creation time (seconds precision) and the random/counter parts. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: decoding a 27-char base62 KSUID into its timestamp (ksuid-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| objectid | Yes | 24 hex chars (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| counter | No | |
| timestamp | No | |
| random_hex | No | |
| timestamp_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description nonetheless adds genuinely new behavioral facts not present in annotations: no network access, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). The 'deterministic / no side effects' lines largely restate the annotations, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labelled structure (When / Not for / Side effects / Deterministic / Limits) is front-loaded and scannable, and every sentence is on topic. However, the full Spanish-then-English duplication roughly doubles the length, repeating the same content twice with no compression or cross-reference.
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 carry the safety profile; the description still supplies the limits, the sibling exclusion, and the deterministic/no-network guarantees. For a single-parameter decoder, nothing an agent needs in order 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 description coverage is 100% and the single parameter is already documented in the schema ('24 hex chars... up to 64 chars'), so the baseline is 3. The description reinforces the 24-hex requirement but adds no syntax, normalization or error-condition detail about the input beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resources ('Valida un ObjectId de MongoDB y extrae su fecha de creación') and names the exact decoding components (creation time in seconds, random/counter parts), so the agent knows precisely what the tool returns. It is differentiated from a named sibling (ksuid-decode) by length/charset. Minor blemish: the 'When' clause mentions generating an identifier, which this read-only decoder cannot do, slightly blurring the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit 'Cuándo/When' trigger and an explicit 'No para/Not for' exclusion that names the alternative tool (ksuid-decode) and its defining characteristic (27-char base62 KSUID). There is no inference required to choose between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onda-traducirONDA: traducir entre protocolos de agentesARead-onlyIdempotentInspect
Recibe un Agent Card A2A, server.json/tools de MCP, OpenAPI/Swagger, manifiesto de pago x402, llms.txt o una descripción en texto (es/en/pt; JSON roto se repara) y devuelve las traducciones A2A, MCP, OpenAPI y x402, ejemplos de llamada y cada supuesto. Cuándo: un agente, servidor o API está descrito en un protocolo (A2A, MCP, OpenAPI, x402, llms.txt o texto) y se necesita la misma descripción en los demás. No para: convertir una definición de herramienta entre los formatos MCP, OpenAI (tool-definition-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Accepts an A2A Agent Card, MCP server.json/tools, OpenAPI/Swagger, x402 payment manifest, llms.txt or a plain es/en/pt description (JSON string or object, broken JSON repaired) and returns A2A, MCP, OpenAPI and x402 translations, call examples… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | The document: JSON object or text (Agent Card, server.json, tools/list, OpenAPI, x402 body, llms.txt or a description) (any JSON value; required). | |
| idioma | No | Language for notes: es, en or pt (default: detected from the input) (optional; one of: es, en, pt). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notas | No | |
| idioma | No | |
| detectado | No | |
| supuestos | No | |
| utilizable | No | |
| procedencia | No | |
| reparaciones | No | |
| traducciones | No | |
| como_hablarle | No | |
| siguiente_paso | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral detail beyond the annotations: broken JSON is repaired rather than rejected, output is deterministic, and hard limits are disclosed (64 KB input, 1 s per call, 1 MB result). Some of the 'sin red / sin estado / solo lectura' phrasing restates openWorldHint=false, readOnlyHint=true and idempotentHint=true, which the annotations already carry, so it is not purely additive.
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?
Strongly front-loaded and labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), so an agent can scan it quickly. It loses a point for being bilingual-duplicated: the same content appears in Spanish and again as an EN block that is then re-embedded verbatim in the schema description.
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 2-parameter tool with an output schema, four annotations and full schema coverage, the description covers everything an agent needs: accepted inputs, produced outputs, scope exclusions, side effects, determinism and size/time limits. Nothing material is left 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?
Schema description coverage is 100% and the schema already documents 'input' (any JSON value, string or object) and the 'idioma' enum with its auto-detect default. The description restates the same facts (texto/JSON roto se repara, es/en/pt) without adding format or syntax guidance 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 (traducir/recibe...devuelve) and resource (descripciones de agentes/API entre protocolos), and enumerates the exact input formats (Agent Card A2A, server.json/tools MCP, OpenAPI/Swagger, x402, llms.txt, texto) and the four outputs produced. It explicitly distinguishes itself from the nearest sibling, tool-definition-convert, 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?
Contains an explicit 'Cuándo:' clause naming the triggering condition (the description exists in one protocol and is needed in the others) and a 'No para:' exclusion that names the alternative tool and its scope. Both when-to-use and when-not-to-use are covered with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openapi-summaryResumir y revisar OpenAPIARead-onlyIdempotentInspect
Resume un documento OpenAPI 3.x: título, versión, servidores, operaciones y problemas (sin operationId, sin respuestas, respuestas 402). Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: traducir la descripción completa de un agente o API entre A2A, MCP, OpenAPI y x402 (onda-traducir). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Summarizes a supplied OpenAPI 3.x document: title, version, servers, operations (method, path, operationId, summary), security, and lint issues (missing operationId/summary, no responses, 402 payment responses). When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| openapi | Yes | OpenAPI document (JSON object) (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| issues | No | |
| openapi | No | |
| servers | No | |
| version | No | |
| operations | No | |
| operation_count | No | |
| security_schemes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'sin efectos secundarios (solo lectura, sin red, sin estado guardado)' largely restates structured data. However the description adds genuinely new operational facts: hard limits of 64 KB input, 1 s per call, 1 MB result, and a determinism guarantee — real value an agent cannot read off the annotations. It stops short of saying what happens with a malformed/non-3.x document.
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?
Well front-loaded — purpose first, then when/not-for/effects/limits — and the labeled structure is easy to scan. But the content is duplicated wholesale in Spanish and English, which roughly doubles the length without adding information, and 'resultado de hasta 1 MB' is a fact the output schema could carry. Efficient in shape, wasteful in volume.
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-input read-only inspection tool with a full annotation set and an output schema, nothing an agent needs is missing: purpose, scope boundaries, sibling exclusion, cost/limits and determinism are all stated, and 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?
Only one parameter, and schema coverage is 100% — the schema already documents it as a required JSON object with an example. The description adds the domain constraint 'OpenAPI 3.x' and the 64 KB size ceiling, but does not clarify 3.0 vs 3.1 acceptance or whether a raw string/YAML is accepted. Baseline 3 given 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+resource (summarize an OpenAPI 3.x document) and enumerates exactly what the summary contains: title, version, servers, operations (method, path, operationId, summary), security, and lint issues. It also names the sibling it is not (onda-traducir), so an agent can separate the two 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?
An explicit 'Cuándo' clause lists the triggering situations (reading/converting/checking an agent description, tool list, OpenAPI document or protocol receipt) and an explicit 'No para' clause routes translation work to onda-traducir. This is the when/when-not/alternative pattern at full strength, even if the 'when' list is broad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
password-generateGenerar contraseñas segurasARead-onlyInspect
Genera contraseñas aleatorias con los conjuntos de caracteres elegidos, exclusiones y sin caracteres ambiguos, e informa el tamaño del alfabeto y la entropía en bits. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: generar un token aleatorio de 1 a 256 bytes en hex, base64url o base58 (random-token). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio (aleatoriedad criptográfica, sin semilla). Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates random passwords with crypto randomness from chosen character sets (lower, upper, digits, symbols) with exclusions and ambiguous-character removal, at least one character from each set, and reports the pool size and entropy in bits. No seed. When: an identifier has to be generated in this format or its embedded fields decoded. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many passwords (integer; optional; default 1; min 1; max 50). | |
| lower | No | Use a-z (boolean; optional; default true). | |
| upper | No | Use A-Z (boolean; optional; default true). | |
| digits | No | Use 0-9 (boolean; optional; default true). | |
| length | No | Password length (integer; optional; default 20; min 4; max 256). | |
| exclude | No | Characters never to use (string; optional; default ""; up to 200 chars). | |
| symbols | No | Use symbols (boolean; optional; default true). | |
| symbol_set | No | Symbols to use (string; optional; default "!@#$%^&*()-_=+[]{};:,.?/"; at least 1 chars; up to 100 chars). | !@#$%^&*()-_=+[]{};:,.?/ |
| require_each | No | At least one character from each chosen set (boolean; optional; default true). | |
| exclude_ambiguous | No | Drop look-alike characters (I l 1 O 0 o B 8 S 5 Z 2 | ` ' ") (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sets | No | |
| length | No | |
| strength | No | |
| passwords | No | |
| pool_size | No | |
| entropy_bits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, non-idempotent, closed-world, non-destructive. The description adds real context beyond them: crypto randomness with no seed (explaining why idempotentHint is false), no network, no stored state, and hard limits (64 KB input, 1 s per call, 1 MB result). Some lines merely restate the annotations, and there is no note on what happens with conflicting inputs (e.g. exclude removing an entire chosen set).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish block is front-loaded and scannable with labeled segments (Cuándo / No para / Efectos / Límites), which is good. But the English half is truncated into a pointer ("[EN completo / full EN: inputSchema.description]"), which is padding rather than content, and the mismatched "Cuándo" sentence about decoding embedded fields wastes a slot.
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 spelled out, yet the description usefully previews that pool size and entropy bits are reported. All parameters are schema-documented and operational limits are stated. The missing piece is behavior on degenerate configurations (all sets disabled, or exclusions that empty the pool), which for a 10-param generator would be worth one clause.
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 every one of the 10 parameters is already documented with defaults and bounds; baseline is 3. The description adds only marginal semantic value on top ("at least one character from each set" mirrors require_each, ambiguous removal and exclusions mirror their own params) and says nothing new about count, length, or symbol_set interaction.
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 ("Genera contraseñas aleatorias") plus the mechanism (character sets, exclusions, ambiguous-character removal) and the reported outputs (pool size, entropy bits). The sibling distinction from random-token is explicit. However, the "Cuándo" line calls the output "un identificador" and mentions "leer los campos que lleva dentro" (decoding embedded fields), boilerplate that does not fit a password generator and slightly muddies what the tool produces.
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 para: generar un token aleatorio de 1 a 256 bytes... (random-token)" names an alternative and the condition that selects it, which is exactly the discriminator an agent needs among the random/nanoid/uuid siblings. It gives no exclusion against nanoid, uuid-v4, or idempotency-key, so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment-feeComisión de pago (bruto/neto)ARead-onlyIdempotentInspect
Calcula, para una comisión de porcentaje + fijo, cuánto cobrar para recibir un neto o cuánto se recibe de un cobro bruto. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: aplicar descuentos porcentuales o fijos a un precio (discount-calculate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes, for a processor fee of percent + fixed amount, the amount to charge to net a target amount (gross-up) or the net received from a gross charge. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: applying percentage or fixed discounts to a price (discount-calculate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Direction (optional; one of: gross_up, net; default "gross_up"). | gross_up |
| amount | Yes | Target net (gross_up) or charge (net) (number; required; min 0; max 10000000000000). | |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
| fee_fixed | No | Fixed fee per transaction (number; optional; default 0; min 0). | |
| fee_percent | Yes | Percent fee (number; required; min 0; max 99). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fee | No | |
| net | No | |
| charge | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered; the description still adds genuinely new context in the form of determinism guarantees and hard limits (64 KB input, 1 s per call, 1 MB result). It loses a point because 'no network access, no stored state' largely restates the annotation set rather than adding to 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?
The labeled structure (When / Not for / Side effects / Deterministic / Limits) is good and front-loaded, but the content is duplicated wholesale in Spanish and English and ends with a dangling artifact ('[EN completo / full EN: inputSchema.description]'), roughly doubling length without adding 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, rich annotations and 100% schema coverage, the description needs only purpose, selection guidance and any behavioral caveats — all of which it supplies, including rate/size limits that an agent should know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters including the mode enum, currency pattern and fee percent bounds. The description only adds the conceptual frame (fee is percent + fixed, amount is the target net or the gross charge), which is essentially what amount's schema description says — 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 and resource — computing a processor fee (percent + fixed) to gross up a target net or derive the net from a gross charge — and names both directions explicitly. It also explicitly distinguishes itself from the closest sibling (discount-calculate), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When' clause (money/tax/financial math that must be exact and reproducible) and an explicit 'Not for' clause naming the alternative tool (discount-calculate). The condition that selects this tool versus a discount calculator is stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
percent-changeVariación porcentualARead-onlyIdempotentInspect
Calcula la variación porcentual entre un valor anterior y uno nuevo. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular el p% de un valor y el valor aumentado o disminuido en p% (percent-of). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the percentage change from an old value to a new value ((new − old) / |old| × 100) and the absolute difference. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing p% of a value, and optionally the value increased or decreased by p% (percent-of). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | New value (number; required). | |
| from | Yes | Old value (number; required). | |
| decimals | No | Decimals (integer; optional; default 4; min 0; max 12). |
Output Schema
| Name | Required | Description |
|---|---|---|
| direction | No | |
| difference | No | |
| percent_change | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only/no-network/no-stored-state line largely restates readOnlyHint and openWorldHint, so that part earns little. The genuinely additive content is the limits block (64 KB JSON input, 1 s per call, 1 MB result) and the determinism guarantee, which no annotation conveys and which an agent needs for batching and retry decisions.
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?
Within each language the text is front-loaded with the purpose, then When / Not for / Side effects / Deterministic / Limits in a scannable order, with no filler sentences. The full Spanish and English duplication roughly doubles the length for a single-language reader, which is a real cost even if intentional.
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 three-parameter pure computation with an output schema and full annotation coverage, the description covers everything an agent needs: what is computed, the exact formula, the disambiguating alternative, determinism, resource limits, and safety profile. Return values are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns a bump because the formula fixes the semantics the schema only labels: 'from' is the denominator under an absolute value and 'to' is the numerator, which resolves the sign behaviour for negative old values. 'decimals' is not mentioned in the description, keeping it short of a 5.
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 (computes percentage change from an old value to a new value) and even gives the formula ((new − old) / |old| × 100) plus the absolute difference. It explicitly names the sibling it is not (percent-of), so the agent can separate it from the near-identical neighbour 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 'When' clause gives the selecting condition (numeric result must be exact or reproducible rather than estimated), and the 'Not for' clause names the alternative tool (percent-of) with the exact scenario that routes there. Nothing about when to choose this versus percent-of or percent-ratio 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.
percent-ofPorcentaje de un valorARead-onlyIdempotentInspect
Calcula el p% de un valor y el valor aumentado o disminuido en p%. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la variación porcentual entre un valor anterior y uno nuevo (percent-change). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes p% of a value, and optionally the value increased or decreased by p%. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the percentage change from an old value to a new value (percent-change). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Base value (number; required). | |
| percent | Yes | Percent (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| decreased | No | |
| increased | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the 'sin efectos secundarios' sentence largely repeats structured data. The description still earns credit for details the annotations do not carry: determinism, the 64 KB input cap, 1 s per call, and 1 MB result limit.
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, when, not-for, side effects, determinism and limits are all front-loaded before the limits section. The Spanish and English blocks are near-complete duplicates, which is defensible for a bilingual server but roughly doubles the length for the same 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, return-value explanation is unnecessary, and the description covers purpose, routing, determinism and resource limits. The only loose end is the 'optionally increased or decreased' wording, which is not reconciled with the actual two-parameter 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 100% and both parameters (percent, value) are documented in the schema with examples, so the baseline is 3. The description adds no format or boundary detail beyond what the schema states, and its phrase 'optionally the value increased or decreased by p%' implies an option the two-parameter schema does not expose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Calcula el p% de un valor' / 'Computes p% of a value'), and explicitly distinguishes the tool from its sibling percent-change. An agent can tell what it produces without reading 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 gives an explicit 'When' condition (exact/reproducible numeric result rather than an estimate) and an explicit 'Not for' that names the alternative tool (percent-change) and the case it covers. This is the full when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
percent-ratioQué porcentaje es X de YARead-onlyIdempotentInspect
Devuelve qué porcentaje representa una parte de un total. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la variación porcentual entre un valor anterior y uno nuevo (percent-change). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns what percentage a part is of a whole (part / whole × 100). When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the percentage change from an old value to a new value (percent-change). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| part | Yes | Part (number; required). | |
| whole | Yes | Whole (number; required). | |
| decimals | No | Decimals (integer; optional; default 4; min 0; max 12). |
Output Schema
| Name | Required | Description |
|---|---|---|
| percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The side-effect and determinism statements largely restate annotations (readOnlyHint, idempotentHint, openWorldHint, destructiveHint), which is redundant. What genuinely adds value is the disclosure of operational limits: 64 KB input, 1 s per call, 1 MB result. Those limits are information an agent cannot get from the annotations or schema, though the redundant safety sentences dilute the contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled structure (When / Not for / Side effects / Limits) is front-loaded and easy to scan. However, the entire content is duplicated in Spanish and English, roughly doubling length with near-zero marginal information for a given reader, and the safety sentences repeat the annotations.
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. With purpose, exclusions, determinism, and size/time limits all covered, an agent has everything required to invoke this correctly and to know its bounds.
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, including decimals with its default and 0-12 range, is documented there. The description only reinforces the semantics of part and whole via the formula; it says nothing about decimals or rounding behavior, so it stays at the baseline rather than adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource with the actual formula (part / whole × 100), so there is no ambiguity about what is computed. It explicitly contrasts itself with the sibling percent-change tool, letting an agent choose between them 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?
Gives an explicit 'When' condition (result must be exact or reproducible rather than estimated) and an explicit 'Not for' excluding percent-change with the sibling named. This is the strongest form of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pe-ruc-validateValidar RUC (Perú)ARead-onlyIdempotentInspect
Valida un RUC peruano (11 dígitos, dígito verificador SUNAT mod 11) e identifica el tipo de contribuyente. Cuándo: hay que comprobar sin conexión un documento o número de cuenta de LatAm o España dado por un usuario antes de guardarlo o usarlo; la herramienta solo valida. No para: validar una cédula ecuatoriana (ec-id-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a Peruvian RUC (11 digits) with the SUNAT mod-11 check digit (weights 5432765432) and identifies the taxpayer type from its prefix (10 person, 15/17 non-domiciled, 20 company). When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating an Ecuadorian cédula (ec-id-validate). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| ruc | Yes | RUC (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| reason | No | |
| taxpayer_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is known; the description restates it but also adds genuinely new operational facts: hard limits (64 KB input, 1 s per call, 1 MB result) and determinism. It does not contradict the annotations, though the side-effects sentence largely duplicates 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?
Well front-loaded: purpose, then when, then not-for, then side effects and limits. However the ES text is duplicated almost verbatim in English and again in inputSchema.description, which inflates length without adding information for the reader.
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; the description still supplies algorithm, prefix interpretation, determinism, timeouts and size bounds. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is a 3, but the description adds meaning the schema lacks: the 11-digit requirement, the mod-11 check-digit weights, and the prefix-to-taxpayer-type mapping (10/15/17/20). It stops short of describing accepted formatting variants (dots, dashes, whitespace) given the 20-char maxLength.
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 ('Valida un RUC peruano'), the exact algorithm (SUNAT mod-11, weights 5432765432) and the secondary behavior (taxpayer type from prefix). It also names the sibling it is not (ec-id-validate), so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' clause gives the triggering context (offline check of a user-supplied LatAm/Spanish ID before storing or using it) and an explicit 'No para' clause naming the alternative tool (ec-id-validate). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone-e164-validateValidar teléfono E.164BRead-onlyIdempotentInspect
Normaliza un teléfono a E.164 e identifica el código de país. Solo sintaxis: no verifica que el número exista. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: verificar la SINTAXIS de un teléfono colombiano (co-phone-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Normalizes a phone number to E.164 (+ and 8-15 digits) and identifies the country calling code from a built-in table. Syntax only: it does not check that the number is assigned or reachable. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | Phone number, with + or 00 international prefix (string; required; up to 64 chars). | |
| default_country_code | No | Calling code to assume when no + is given, e.g. 57 (string; optional; pattern ^\d{1,3}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| e164 | No | |
| valid | No | |
| reason | No | |
| country | No | |
| country_code | No | |
| national_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real value beyond them: it states the tool is syntax-only and does not verify the number is assigned or reachable, declares determinism, and gives operational limits (64 KB input, 1 s per call, 1 MB result). That is exactly the extra 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?
The core is front-loaded and tight, but the 'Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, un rango de IP...' sentence is pure noise transplanted from an unrelated tool, and it is duplicated in the English half. A substantial share of the text does not earn its place and adds confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description need not explain return values, and it correctly covers syntax-only scope, determinism and resource limits. However, the misleading 'when to use' clause leaves the agent with an inaccurate usage signal, which is the one completeness failure that matters for tool selection.
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 both parameters (phone, default_country_code) are documented in the schema itself, so the baseline is 3. The description contributes the E.164 output shape (leading '+' and 8-15 digits), which slightly clarifies what 'phone' should look like, but it never explains how default_country_code interacts with a '+' prefix — the one semantic gap the schema leaves open.
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 opening sentence gives a specific verb and resource — normalize a phone number to E.164 and identify the calling code — and the 'Solo sintaxis' clause sharply bounds what the tool does. It also names the sibling it is not (co-phone-validate), so it is distinguishable. The score is capped because the following 'Cuándo' sentence describes URLs, HTTP headers, tokens and IP ranges, which has nothing to do with this tool and muddies the purpose statement.
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 a concrete exclusion, 'No para: verificar la SINTAXIS de un teléfono colombiano (co-phone-validate)', which routes the agent to the right sibling. But the positive 'when to use' condition is copy-pasted boilerplate about parsing URLs, tokens, IP ranges and Markdown files — actively misleading for a phone normalizer. Useful guidance exists, but only in the negative form.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone-parseAnalizar teléfono de LatAm, EE. UU. o EspañaARead-onlyIdempotentInspect
Analiza un teléfono de CO, MX, BR, AR, CL, PE, EC, EE. UU. o España: país, tipo cuando el plan lo indica (móvil, fijo, gratuito…), E.164 y formatos nacional e internacional. Solo sintaxis. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: normalizar un teléfono a E.164 e identifica el código de país (phone-e164-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a phone number of Colombia, Mexico, Brazil, Argentina, Chile, Peru, Ecuador, the US (NANP) or Spain into country, type when the numbering plan tells it (mobile, fixed, toll-free…), E.164 and national and international formats. Syntax only; it does not check the line exists. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Phone number, with + and country code or national (string; required; up to 40 chars). | |
| default_country | No | Country for national numbers (optional; one of: CO, MX, BR, AR, CL, PE, EC, US, ES). |
Output Schema
| Name | Required | Description |
|---|---|---|
| e164 | No | |
| note | No | |
| type | No | |
| valid | No | |
| errors | No | |
| region | No | |
| source | No | |
| country | No | |
| warnings | No | |
| area_code | No | |
| country_code | No | |
| national_format | No | |
| national_number | No | |
| international_format | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered, and the description partially repeats that with 'sin red, sin estado guardado'. However it adds genuinely new operational context: determinism guarantee and hard limits (64 KB input, 1 s per call, 1 MB result) that annotations do not carry, which is 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?
Content is well front-loaded with labeled sections (Cuándo / No para / Efectos / Límites) that make scanning easy. It is somewhat long because it duplicates the whole body in Spanish and English, which costs a bit of conciseness without adding 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 explained, and the description still covers purpose, routing, side effects, determinism and execution limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum plus an example are already in the schema, so the schema does the heavy lifting. The description only mentions the general purpose of the two fields rather than adding format syntax or edge-case meaning, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (analiza/parses) plus the resource (phone number) and enumerates the exact country scope (CO, MX, BR, AR, CL, PE, EC, US, ES) and the outputs produced (country, type, E.164, national/international formats). It also names the sibling it is not (phone-e164-validate), so an agent can distinguish it 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?
Explicit 'Cuándo:' clause tells the agent when to use it (offline verification of format and check digit before use) and the 'No para:' clause names the alternative tool for normalization (phone-e164-validate). This is explicit 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.
plus-code-decodeDecodificar plus codeARead-onlyIdempotentInspect
Decodifica un Plus Code completo en su centro y caja delimitadora; rechaza códigos cortos. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: codificar latitud/longitud como Plus Code (plus-code-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a full Open Location Code (plus code) into its center latitude/longitude and bounding box. Short codes need a reference location and are rejected. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: encoding a latitude/longitude as a global Open Location Code (plus-code-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| plus_code | Yes | Full plus code (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No | |
| bbox | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and closed-world, yet the description still adds substantive facts: no network access, no stored state, deterministic output, and concrete limits (64 KB input, 1 s per call, 1 MB result). It also warns that short codes are rejected, which is a behavioral constraint not encoded anywhere in the schema.
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?
Each language block is front-loaded with purpose, then conditions, then effects and limits, with zero filler. The Spanish and English versions duplicate the same content, which is defensible for bilingual callers but does double the length.
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 elaboration, and the description still names what comes back (center plus bounding box). With one parameter, complete annotation coverage and stated limits, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is already documented as a required string up to 20 chars with an example. The description adds meaning beyond the schema by clarifying that only FULL codes are accepted and that short codes requiring a reference location will be rejected — a semantic constraint the schema does not express.
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: decodes a full Open Location Code into center lat/lon and bounding box, and explicitly rejects short codes. The scope boundary against plus-code-encode is named directly, so an agent can distinguish it from the sibling without inspecting 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?
Contains explicit 'When' (computing coordinates, distances, bearings, areas from given points) and 'Not for' (encoding lat/lon as a global plus code, naming plus-code-encode as the alternative). This is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plus-code-encodeCodificar plus codeARead-onlyIdempotentInspect
Codifica latitud/longitud como Plus Code (Open Location Code) global, útil para direcciones sin numeración. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: decodificar un Plus Code completo en su centro y caja delimitadora (plus-code-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes a latitude/longitude as a global Open Location Code ("plus code") of length 10 (≈14 m) to 15, as used by Google Maps for addresses without street numbers. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: decoding a full Open Location Code (plus-code-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (number; required; min -90; max 90). | |
| lon | Yes | Longitude in decimal degrees (number; required; min -180; max 180). | |
| length | No | Code length (10 = ~14 m, 11 = ~3 m) (integer; optional; default 10; min 10; max 15). |
Output Schema
| Name | Required | Description |
|---|---|---|
| plus_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and openWorld=false, so the bar is lower, yet the description adds genuinely new behavioral facts: determinism, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). The only redundancy is 'sin red', which openWorldHint=false already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is provided twice, once in Spanish and once in English, so roughly half the tokens carry zero new information for the agent. The labeled structure (Cuándo / No para / Efectos secundarios / Límites) is good, but the duplication means many sentences do not earn their 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 no explanation, and the description covers inputs, determinism, side effects and resource limits — enough to call it correctly. The one weak spot is the misleading 'when to use' clause pointing at distance/bearing computation, which could send the agent to the wrong 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 100%, so lat, lon and length are all documented, including ranges, defaults and the ~14 m granularity. The description restates the 10–15 length range but adds no new semantics (units, edge cases, behavior at minimum length) 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 precise verb+resource: encodes latitude/longitude into a global Open Location Code with explicit length range (10–15) and purpose (street-number-less addresses). It also explicitly names the inverse sibling plus-code-decode as out of scope, so the agent can distinguish it from that tool without reading 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 'No para' line is excellent: it names plus-code-decode explicitly with the condition that selects it. However, the 'Cuándo' line ('when coordinates, distances, bearings or areas have to be computed from given points') describes a family-level use case rather than a reason to encode a plus code — encoding does not compute distances or bearings, so that guidance is at best generic and at worst misroutes the agent to a sibling like geo-haversine.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polyline-decodeDecodificar polilíneaARead-onlyIdempotentInspect
Decodifica una cadena Encoded Polyline en puntos lat/lon. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: codificar una lista de puntos con el algoritmo Encoded Polyline (polyline-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes an Encoded Polyline string (precision 5 or 6) into lat/lon points. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: encoding a list of lat/lon points with the Encoded Polyline Algorithm (polyline-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| polyline | Yes | Encoded polyline (string; required). | |
| precision | No | Decimal precision (integer; optional; default 5; min 1; max 7). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| points | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, but the description still adds real context: no network access, no stored state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). Nothing here contradicts the structured hints.
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?
Well front-loaded with labeled sections (Cuándo / No para / Efectos / Determinista / Límites) and no filler sentences. The full bilingual restatement doubles the length for the same content, which is the main cost against a higher score.
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; the description still covers safety, determinism, size/time limits and the sibling alternative. Nothing an agent needs to invoke this decoding utility 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 adds practical meaning by naming the encoder precisions typically encountered (5 or 6). That said, the schema allows 1–7, so the description arguably narrows the range without explaining what other precisions would mean.
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 ("Decodifica una cadena Encoded Polyline en puntos lat/lon"), including the precision detail (5 or 6). It also names the sibling it is not (polyline-encode), so the agent can separate the two 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?
Explicit "Cuándo" clause (computing coordinates, distances, bearings or areas from points) and an explicit "No para" clause pointing to polyline-encode for the inverse operation. Both the positive and negative selection conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polyline-encodeCodificar polilíneaARead-onlyIdempotentInspect
Codifica una lista de puntos con el algoritmo Encoded Polyline (precisión 5 o 6). Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: decodificar una cadena Encoded Polyline en puntos lat/lon (polyline-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes a list of lat/lon points with the Encoded Polyline Algorithm (precision 5 by default, 6 for OSRM/Valhalla). When: coordinates, distances, bearings or areas have to be computed from given points. Not for: decoding an Encoded Polyline string (polyline-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | Points (array of object; required; at least 1 items). | |
| precision | No | Decimal precision (integer; optional; default 5; min 1; max 7). |
Output Schema
| Name | Required | Description |
|---|---|---|
| polyline | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, and the 'side effects/deterministic' lines largely restate them. However, the description adds real information the annotations do not cover: explicit limits (64 KB input, 1 s per call, 1 MB result) and the precision-6 OSRM/Valhalla convention.
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?
Each language section is tightly front-loaded with purpose first, followed by when/not-for, effects and limits. It is somewhat long because the same content is duplicated in ES and EN, which costs a point on strict size but does not bury the key 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. It covers purpose, selection criteria, the sibling alternative, side effects, determinism, resource limits and precision guidance — everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters; baseline is 3. The description earns a point by explaining what precision means in practice — 5 by default, 6 for OSRM/Valhalla — which the schema does not state. It does not describe edge behavior of out-of-range points beyond the schema's min/max, hence not a 5.
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 (encodes a list of lat/lon points with the Encoded Polyline Algorithm) and adds the default precision. It also explicitly names the sibling it is not (polyline-decode), so the agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Uses explicit 'When:' and 'Not for:' markers. It names the alternative (polyline-decode) and the condition that selects it (decoding a string into lat/lon). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price-from-marginPrecio desde margen objetivoARead-onlyIdempotentInspect
Calcula el precio necesario para un margen objetivo (precio = costo / (1 − m)) o un markup, y convierte entre ambos. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular utilidad, margen bruto % (margin-markup). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the selling price needed for a target gross margin % (price = cost / (1 − m)) or markup % (price = cost × (1 + k)), and converts between margin and markup. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing profit, gross margin % (margin-markup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Unit cost (number; required; min 0; max 1000000000000000). | |
| target | Yes | Target type (required; one of: margin, markup). | |
| percent | Yes | Target % (number; required; min 0; max 10000). | |
| decimals | No | Round price to decimals (integer; optional; default 2; min 0; max 6). |
Output Schema
| Name | Required | Description |
|---|---|---|
| price | No | |
| profit | No | |
| margin_percent | No | |
| markup_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotency, but the description adds determinism guarantees, no-network/no-stored-state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). That is meaningful context beyond what the structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded with the formula first, but the Spanish and English blocks are near-verbatim duplicates, and the trailing '[EN completo / full EN: inputSchema.description]' pointer is noise. Roughly half the text is redundant.
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 deterministic pure-calculation tool with an output schema, full annotation coverage, and complete parameter docs, the description supplies everything else needed: domain, formulas, exclusions, determinism, and execution limits.
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 baseline is 3. The formula in the description adds real semantic linkage between cost, target, and percent (which denominator applies), which the schema field descriptions do not convey.
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 plus the exact formula (price = cost / (1 − m)), and also covers the markup variant and margin↔markup conversion. It explicitly contrasts itself with the sibling margin-markup, so an agent can disambiguate 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?
Gives an explicit 'Cuándo' condition (money/tax/financial math needing exact, reproducible rounding) and an explicit 'No para' exclusion naming computing profit and gross margin % with the margin-markup alternative. Use vs. avoid is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prime-factorizeFactorización en primosARead-onlyIdempotentInspect
Factoriza un entero (hasta 10^20) en primos con exponentes y cuenta de divisores. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: probar la primalidad con Miller-Rabin determinista hasta 3,3·10^24 y devolver los primos siguiente y anterior (is-prime). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Factorizes an integer up to 10^20 into primes (trial division plus Pollard rho), returning factors with exponents and the divisor count. When: a numeric result has to be exact or reproducible instead of estimated. Not for: testing primality with deterministic Miller-Rabin for integers up to 3.3·10^24 (is-prime). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Integer ≥ 2 (integer or string; required; up to 22 chars; pattern ^-?\d{1,21}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| n | No | |
| factors | No | |
| is_prime | No | |
| divisor_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuine context: no network, no stored state, determinism guarantee, and concrete limits (64 KB input, 1 s per call, 1 MB result). Only slight duplication of the read-only/no-network claim already implied 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?
Front-loaded with purpose, then When/Not-for/Side-effects/Deterministic/Limits in a scannable order. The full Spanish and English duplication roughly doubles the length, which is the main cost.
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 one parameter and an output schema present, the description needn't explain return shape; it still covers domain bounds, performance limits, determinism, and the sibling split. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and documents the single parameter (integer or string, pattern, 22 chars), but the description adds the meaningful bound of 10^20 that the schema does not express, clarifying the practical domain.
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 — factorizes an integer up to 10^20 into primes with exponents and divisor count — plus the algorithm used (trial division + Pollard rho). An agent can distinguish it from numeric siblings 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?
Explicit 'When' clause (results must be exact/reproducible, not estimated) and an explicit 'Not for' clause naming the alternative is-prime with its own bound (3.3·10^24) and behavior (next/previous prime). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt-template-fillRellenar plantilla de promptARead-onlyIdempotentInspect
Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: estimar heurísticamente cuántos tokens de LLM usa un texto, con un rango de ±25 % (token-estimate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Fills {{variable}} placeholders (dotted paths allowed, optional {{name|default}}) from a values object, reporting missing and unused variables; strict mode fails on missing values. No code execution. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| escape | No | Escape inserted values (optional; one of: none, html, json; default "none"). | none |
| strict | No | Fail when a variable is missing and has no default (boolean; optional; default false). | |
| values | No | Values object (object; optional; default {}). | |
| template | Yes | Template text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| unused | No | |
| missing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, non-destructive. The description adds substantial context beyond that: no code execution, deterministic output, missing/unused variable reporting, strict-mode failure, and concrete limits (64 KB input, 1 s, 1 MB result).
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-loads the purpose, then layers When / Not-for / side effects / limits with clear labels. Slightly dense and mixes Spanish and English, but 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 explained, and annotations cover the safety profile. The description fills remaining gaps (determinism, limits, failure modes, alternative tool), making it complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters and earns a baseline 3. The description adds template-syntax meaning (dotted paths, {{name|default}}) and strict-mode behavior that complement the schema text.
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: fills {{variable}} placeholders from a values object, including dotted paths and defaults. It explicitly names the sibling it is not (token-estimate), so an agent can distinguish it from nearby tools 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 an explicit When (exact, repeatable bookkeeping steps like tokens, costs, retries, chunking, ranking, JSON clean-up) and an explicit Not-for (heuristic token estimation via token-estimate). The condition that selects between the two is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
punycode-decodeDominio a Unicode (Punycode)ARead-onlyIdempotentInspect
Convierte etiquetas Punycode xn-- de un dominio a Unicode. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: convertir un dominio internacionalizado a ASCII (punycode-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts xn-- Punycode labels of a domain back to Unicode (RFC 3492). ASCII labels are returned unchanged. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting an internationalized domain name to ASCII (punycode-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ASCII domain (string; required; up to 253 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| unicode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine context beyond that: no network, no stored state, determinism, ASCII labels returned unchanged, and concrete limits (64 KB input, 1 s per call, 1 MB result). Only the limits are boilerplate-style, keeping it just 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?
The EN block is front-loaded and well-ordered: purpose, when, not-for, side effects, determinism, limits. The full ES/EN duplication doubles the length, which is a deliberate bilingual convention rather than filler, but it does cost some density.
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, deterministic conversion tool with rich annotations and an output schema, nothing an agent needs is missing: direction, alternative, pass-through behavior, side effects, and resource limits are all stated.
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 single parameter has its own description and example, so the baseline is 3. The description contributes one useful semantic detail not in the schema, that non-xn-- ASCII labels pass through unchanged, but adds no format guidance beyond that.
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 ('Convierte etiquetas Punycode xn-- de un dominio a Unicode (RFC 3492)') and immediately distinguishes itself from the sibling 'punycode-encode'. An agent can pick the right direction of conversion 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?
Explicitly names the exclusion and the alternative ('No para: convertir un dominio internacionalizado a ASCII (punycode-encode)'). The 'Cuándo' clause is somewhat generic and the 'to or from this encoding' phrasing blurs directionality slightly, but the routing guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
punycode-encodeDominio a ASCII (Punycode)ARead-onlyIdempotentInspect
Convierte un dominio internacionalizado a ASCII (Punycode, prefijo xn--). Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: convertir etiquetas Punycode xn-- de un dominio a Unicode (punycode-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts an internationalized domain name to ASCII: lowercases and NFC-normalizes each label, then applies Punycode (RFC 3492) with the xn-- prefix. Does not apply full UTS #46 mapping. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting xn-- Punycode labels of a domain back to Unicode (punycode-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name or single label (string; required; up to 253 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ascii | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint, so the safety profile is covered. The description still earns credit for adding real context beyond them: lowercase + NFC normalization per label, no full UTS #46 mapping, determinism, and hard limits (64 KB input, 1 s, 1 MB output). Score held at 3 rather than higher because the 'to or from this encoding' phrasing creates internal ambiguity about the direction of the transform.
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?
Content is front-loaded and the scoping sentence precedes the exclusion, which is good structure. But the text is duplicated ES/EN inside a single description and ends with a dangling meta-artifact ('[EN completo / full EN: inputSchema.description]') that repeats the schema description verbatim rather than adding anything.
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 schema exists, so return values need not be explained. Combined with annotations plus the normalization, determinism and resource-limit disclosures, an agent has everything needed to call this correctly and to know it will not hit the network or mutate state.
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 single 'domain' parameter already documents type and 253-char max, so the baseline is 3. The description adds meaning the schema lacks: that each label is lowercased and NFC-normalized before Punycode, which tells the agent mixed-case or decomposed-Unicode input is acceptable rather than an error.
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 concrete verb and resource ('Convierte un dominio internacionalizado a ASCII (Punycode, prefijo xn--)') and specifies the exact algorithm (RFC 3492) plus normalization steps, which distinguishes it cleanly from punycode-decode and from generic encoding 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?
Explicit 'When' clause and an explicit 'Not for' clause naming the sibling punycode-decode, which is exactly the routing information an agent needs. However, the 'When' text says inputs must be converted 'to or from this encoding', which blurs the boundary the 'Not for' sentence just drew, since decoding is a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qr-encodeGenerar código QRARead-onlyIdempotentInspect
Codifica un texto como código QR (ISO/IEC 18004, versiones 1 a 40, corrección L/M/Q/H, modo numérico, alfanumérico o bytes UTF-8) y devuelve la matriz de módulos y un SVG. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: construir una URI data (data-uri-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes text as a QR Code (ISO/IEC 18004, versions 1-40, error correction L/M/Q/H, numeric, alphanumeric or UTF-8 byte mode, automatic mask) and returns the module matrix and an SVG. Port of the Nayuki reference encoder; no image decoding. When: bytes or text have to be converted to or from this encoding exactly, without guessing. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| ecc | No | Error correction level: L ~7 %, M ~15 %, Q ~25 %, H ~30 % of codewords recoverable (optional; one of: L, M, Q, H; default "M"). | M |
| dark | No | Dark module color (string; optional; default "#000000"; up to 7 chars; pattern ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$). | #000000 |
| mask | No | Mask pattern 0-7, or -1 to choose by the ISO penalty rules (integer; optional; default -1; min -1; max 7). | |
| mode | No | Encoding mode; auto picks numeric, alphanumeric or byte for the whole text (optional; one of: auto, numeric, alphanumeric, byte; default "auto"). | auto |
| text | Yes | Text to encode (UTF-8 in byte mode; at most 2953 bytes at version 40-L) (string; required; up to 7089 chars). | |
| light | No | Light module color (string; optional; default "#ffffff"; up to 7 chars; pattern ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$). | #ffffff |
| border | No | Quiet-zone width in modules for the SVG (the standard asks for 4) (integer; optional; default 4; min 0; max 16). | |
| boost_ecc | No | Raise the ECC level while the version does not grow (boolean; optional; default false). | |
| include_svg | No | Include the SVG string (boolean; optional; default true). | |
| max_version | No | Largest version allowed (integer; optional; default 40; min 1; max 40). | |
| min_version | No | Smallest version allowed (integer; optional; default 1; min 1; max 40). | |
| include_matrix | No | Include the module matrix (rows of "1" dark / "0" light) (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ecc | No | |
| svg | No | |
| mask | No | |
| mode | No | |
| size | No | |
| modules | No | |
| version | No | |
| data_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description still adds real value with hard operational limits (64 KB JSON input, 1 s per call, 1 MB result) and the reporting of the implementation lineage (Nayuki reference port, no image decoding). It restates determinism and 'no side effects', which partly duplicates the annotations, but the size/latency limits are information an agent can only get here.
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?
Capability and constraints are front-loaded, which is good, but the text is duplicated across ES and EN and then defers to '[EN completo / full EN: inputSchema.description]', a meta-reference rather than content. The bilingual duplication nearly doubles length without adding information an agent does not get elsewhere.
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 12 parameters, a matching output schema, and annotations carrying the safety profile, the description covers what an agent needs: inputs, both return artifacts, determinism, and size/time budgets. It does not explain how the bootstrap flags (min_version/max_version, boost_ecc, include_matrix/include_svg) interact, but those are schema-documented and the consequence of omitting them is small.
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 output schema exists, so the schema already documents all 12 parameters including enums, defaults, patterns and ranges. The description only echoes the ECC levels, mode choices and automatic mask in prose, adding no format or interaction 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+resource ('Codifica un texto como código QR') and immediately pins down the standard (ISO/IEC 18004), version range, ECC levels, modes, and outputs (module matrix + SVG). It also names the sibling it is not for (data-uri-build), so an agent can discriminate it inside a very large tool catalog 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?
Has an explicit 'Cuándo' clause and an explicit 'No para' routing to data-uri-build, which is exactly the when/when-not pattern. Minor deduction: the phrase 'convertir bytes o texto a esta codificación, o desde ella' implies a bidirectional conversion, but the tool only encodes — that could momentarily confuse an agent looking for decoding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quadratic-solveResolver ecuación cuadráticaARead-onlyIdempotentInspect
Resuelve ax² + bx + c = 0 con raíces reales o complejas, discriminante y vértice. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: resolver un sistema de ecuaciones lineales Ax = b (linear-system-solve). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Solves ax² + bx + c = 0, returning real or complex roots, the discriminant and the vertex. When: a numeric result has to be exact or reproducible instead of estimated. Not for: solving a square system of linear equations Ax = b (linear-system-solve). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | a (≠ 0) (number; required). | |
| b | Yes | b (number; required). | |
| c | Yes | c (number; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| roots | No | |
| vertex | No | |
| discriminant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered structurally. The description nonetheless adds operational limits not present in the annotations – 64 KB input, 1 s per call, 1 MB result – plus an explicit determinism guarantee, which is real added value. It stops short of describing output shape, but an output schema exists to carry 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?
Front-loaded with the core operation and the 'when/not for' routing, with limits last. The Spanish and English copies are redundant for an agent reading both, but the structure is otherwise tight and each field block 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?
This is a deterministic 3-parameter math tool with a full output schema, so return values need no prose. Purpose, routing, side effects, determinism and hard limits are all present; nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented in the schema, including the a ≠ 0 constraint. The description only restates the polynomial form ax² + bx + c = 0, adding mapping context but no new semantics such as numeric range or precision behavior. Baseline 3 applies 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+resource: solves ax² + bx + c = 0 and returns real or complex roots, the discriminant and the vertex. An agent can separate it from the closest sibling, linear-system-solve, purely from the description, since the negative case names that sibling 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?
Provides an explicit 'Cuándo/When' condition (a numeric result must be exact or reproducible rather than estimated) and an explicit 'No para/Not for' exclusion that names the alternative, linear-system-solve, with its problem shape (Ax = b). Both the inclusion and exclusion criteria are given rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query-buildConstruir query stringARead-onlyIdempotentInspect
Serializa un objeto como cadena de consulta; arreglos repiten la clave o usan corchetes. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: convertir una cadena de consulta en un objeto (query-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Serializes an object to an application/x-www-form-urlencoded query string; arrays repeat the key (a=1&a=2) or use brackets (a[]=1), nested objects use brackets, nulls are skipped. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a URL query string (query-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort keys (boolean; optional; default false). | |
| params | Yes | Parameters object (object; required). | |
| array_format | No | Array style (optional; one of: repeat, brackets, comma; default "repeat"). | repeat |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so statements like 'sin efectos secundarios' and 'determinista' mostly restate them. The description nonetheless adds genuinely non-annotated facts: hard limits of 64 KB input, 1 s per call and 1 MB output, plus the null-skipping behavior that changes the emitted string.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded, but the text is presented twice (Spanish and English), with the English section ending in a meta-note pointing back to inputSchema.description, which is redundant. The long enumerative 'when' clause occupies significant space without adding routing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema coverage, the description needn't explain return values, and it does supply limits, determinism, side-effect profile and an explicit inverse-tool exclusion. What is missing is any indication of error behavior (e.g., what happens when input exceeds 64 KB or exceeds 1000 properties).
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 beyond the schema by explaining the actual encoding consequences of the array_format choice (repeat vs brackets) and by documenting that nulls are skipped and nested objects use bracket notation — semantics the schema's terse field descriptions do not convey.
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 (serialize an object to an application/x-www-form-urlencoded query string) and immediately distinguishes itself from its inverse sibling by naming query-parse as the tool for parsing. The serialization details (arrays repeat keys or use brackets, nested objects use brackets, nulls skipped) make the scope 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?
Explicitly provides a 'Cuándo' clause and a 'No para' exclusion naming query-parse, which is exactly the routing information an agent needs. However, the 'when' list (URL, HTTP header, token, version string, IP range, HTML/Markdown document, agent-readiness file) reads as boilerplate shared across a parse/check tool family and is largely irrelevant to a query-string builder, which risks over-broadening perceived applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query-parseLeer query stringARead-onlyIdempotentInspect
Convierte una cadena de consulta en un objeto; claves repetidas forman arreglos y, opcionalmente, notación con corchetes. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: serializar un objeto como cadena de consulta (query-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a URL query string (leading ? optional, + as space) into an object; repeated keys become arrays, and with nested=true a[b]=1 and a[]=1 bracket syntax builds objects/arrays. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Query string (string; required). | |
| nested | No | Interpret bracket notation (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description still adds real value on top: no network, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). Those operational bounds are not recoverable from the annotations and directly affect how an agent should size its 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?
The core behavior is front-loaded and the exclusion is well placed, but the text is delivered twice (ES then EN) and the 'When' sentence is a long boilerplate list of irrelevant artifact types. Roughly a third of the content does not earn its place for this specific tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, an output schema and full parameter coverage, the description supplies enough — behavior, encoding rules, limits, the query-build exclusion — for correct invocation. The only shortfall is the over-broad 'When' list, which could make an agent try this tool on non-query-string artifacts.
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 would be 3, but the description earns more by explaining what the schema only gestures at: the leading '?' is optional, '+' decodes as space, and nested=true turns a[b]=1 / a[]=1 into objects and arrays. That is meaningful semantics beyond 'Interpret bracket notation (boolean; optional; default false)'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ('Convierte una cadena de consulta en un objeto') and immediately specifies the two behaviors that define it: repeated keys become arrays and bracket notation builds nested objects/arrays. It also names the sibling it is not (query-build), so an agent can distinguish the pair 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 exclusion and alternative are explicit ('No para: serializar un objeto como cadena de consulta (query-build)'), which is genuinely useful routing. However, the 'Cuándo' clause is boilerplate that lumps in parsing an HTTP header, token, IP range, HTML or Markdown document or agent-readiness file — inputs this tool does not handle — so the when-to-use signal is muddied rather than sharpened.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoted-printable-decodeDecodificar quoted-printableARead-onlyIdempotentInspect
Decodifica quoted-printable MIME a texto UTF-8. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto como quoted-printable MIME (quoted-printable-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes MIME quoted-printable (RFC 2045), removing soft line breaks, to UTF-8 text or hex. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: encoding UTF-8 text as MIME quoted-printable (quoted-printable-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| encoded | Yes | Quoted-printable text (string; required). | |
| output_encoding | No | How to return decoded bytes (optional; one of: utf8, hex, base64; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description reinforces this with 'no network access, no stored state' plus determinism and concrete limits (64 KB input, 1 s per call, 1 MB result) — genuinely additive runtime context. Minor discrepancy: the schema allows maxLength 1,048,576 for 'encoded' while the description caps JSON input at 64 KB.
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, exclusions, side effects and limits are front-loaded in a scannable structure. However, the entire block is duplicated verbatim in Spanish and English, roughly doubling length without adding 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 explained, and the description covers determinism, side effects, limits and the encoding alternative. Only the partial enumeration of output_encoding options and the input-size discrepancy leave small 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 100%, with an enum, default and example for both parameters, so the baseline applies. The description only mentions UTF-8 and hex outputs, omitting the base64 option that the enum provides, so it adds no param-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Decodes MIME quoted-printable (RFC 2045)... to UTF-8 text or hex'), including the RFC and the removal of soft line breaks. It explicitly names the mirror sibling quoted-printable-encode as the tool it is not, so an agent can distinguish the pair without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When' and 'Not for' clauses give a real routing rule and name the exact alternative (quoted-printable-encode). The phrasing 'converted to or from this encoding' is slightly muddled for a decode-only tool, since the reverse direction belongs to the sibling, which weakens the guidance a bit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoted-printable-encodeCodificar quoted-printableARead-onlyIdempotentInspect
Codifica texto como quoted-printable MIME (RFC 2045). Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar quoted-printable MIME a texto UTF-8 (quoted-printable-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes UTF-8 text as MIME quoted-printable (RFC 2045): =XX escapes, 76-char soft line breaks, CRLF line endings. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding MIME quoted-printable (quoted-printable-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| encoded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds crucial behavioral constraints not covered by the annotations or schema, including explicit limits (64KB input, 1MB output), side effects (none, read-only), and the deterministic nature of the operation.
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?
Despite being bilingual and lengthy, the information is highly organized into distinct, high-value blocks (Definition, When, Not For, Side Effects, Limits). Every sentence adds a unique and necessary piece of 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?
This definition is extremely complete. It covers technical specifications (RFC 2045, line endings), operational limits (time, size), and behavioral guarantees (deterministic, side effects), leaving no major technical gap for the agent to interpret.
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?
Since schema coverage is 100%, the baseline is high. The description clarifies that the required 'text' parameter is a string, reinforcing its necessity and type, although the schema itself handles the majority of the semantic burden.
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 precisely defines the tool's function as encoding UTF-8 text into MIME quoted-printable format (RFC 2045). It is highly specific and clearly differentiates itself from other encoding tools in the sibling list, such as base64-encode or quoted-printable-decode.
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 explicit 'When' and 'Not for' sections. Specifically, it advises the user to use this tool for conversion tasks and names the alternative sibling (quoted-printable-decode) that it should not replace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
radix-convertCambiar base numéricaARead-onlyIdempotentInspect
Convierte enteros de cualquier tamaño entre bases 2 y 36 (acepta prefijos 0x, 0o, 0b). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: convertir enteros 1-3999 a números romanos y viceversa (roman-numeral). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts an integer of any size between bases 2-36 (accepts 0x/0o/0b prefixes, underscores and a sign), returning the result and common bases. When: a numeric result has to be exact or reproducible instead of estimated. Not for: converting integers 1-3999 to standard Roman numerals and validating/parses Roman numerals (roman-numeral). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Number in from_base (string; required; up to 1000 chars). | |
| to_base | No | Target base (integer; optional; default 16; min 2; max 36). | |
| from_base | No | Source base (integer; optional; default 10; min 2; max 36). | |
| uppercase | No | Uppercase letters (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| octal | No | |
| binary | No | |
| result | No | any JSON value |
| decimal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety repetition is somewhat redundant. However, the description adds genuinely new behavioral context: determinism, no stored state, and hard limits (64 KB JSON input, 1 s per call, 1 MB result) that the annotations do not express.
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 core action, then cleanly labeled sections (When / Not for / Side effects / Deterministic / Limits). The full Spanish-plus-English duplication doubles the length for the same information, which is the main cost, but each version is individually tight and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still summarizes it returns the result plus common bases. Combined with limits, determinism, and the explicit sibling exclusion, an agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds parsing semantics the schema never states: accepted 0x/0o/0b prefixes, underscore separators, and an optional sign. Those details directly affect how the value parameter must be formatted.
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 precise scope: converts an integer of any size between bases 2-36, accepting 0x/0o/0b prefixes. It also explicitly excludes roman-numeral conversion, so an agent can separate it from the most confusable sibling 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?
Has explicit "When:" (a numeric result must be exact/reproducible, not estimated) and "Not for:" naming the alternative tool (roman-numeral) with the exact range 1-3999 where that sibling applies. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rag-chunkFragmentar texto para RAGARead-onlyIdempotentInspect
Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: dividir un texto en español en oraciones, considerando ¿…? y ¡…!, puntos suspensivos, decimales y miles (es-sentence-split). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits text into chunks of at most N characters or estimated tokens with overlap, preferring paragraph, then sentence, then word boundaries; returns offsets for citation. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| unit | No | Size unit (optional; one of: characters, tokens; default "characters"). | characters |
| overlap | No | Overlap in the same unit (default 10% of max_size) (integer; optional; min 0; max 50000). | |
| max_size | No | Max chunk size (integer; optional; default 1000; min 20; max 100000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| chunks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description reinforces this with determinism and operational limits (1 s per call, result up to 1 MB) that are not in the annotations. However, it states 'entrada JSON de hasta 64 KB' while the schema allows text up to 1,048,576 characters, an inconsistency that could mislead an agent about the real input ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well front-loaded (purpose, then when/not-for, then side effects, determinism, limits) and every block carries information. It loses a point because the English block duplicates the Spanish almost verbatim and the trailing '[EN completo / full EN: inputSchema.description]' pointer adds noise rather than value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description only needs to supply routing, determinism, and limits — all of which it does. Nothing an agent needs in order to call it correctly (boundary behavior, overlap, size limits, side-effect profile) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description adds genuine meaning beyond the schema by explaining that splitting prefers paragraph, then sentence, then word boundaries, which is not stated per-parameter. It also clarifies the 'estimated tokens' nature of the unit enum, though it doesn't elaborate on overlap vs max_size interaction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb, resource, and the numeric/overlap semantics of the result ('Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento'). It also distinguishes itself from the closest sibling by naming es-sentence-split as the tool for sentence-only Spanish splitting.
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 contains an explicit 'Cuándo:' section describing the triggering context (bookkeeping steps in an agent loop: tokens, costs, retries, ranking, JSON clean-up) and a 'No para:' section naming the competing tool by name plus the exact case that belongs to it. The alternative routing decision is fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random-pickNúmero al azar o sorteo de una listaARead-onlyInspect
Genera enteros aleatorios en un rango inclusivo o elige n elementos de una lista, con o sin repetición; con semilla el resultado es reproducible. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: mezclar un arreglo (array-shuffle). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio salvo que se dé seed. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Draws random integers in an inclusive range, or picks n items from a list, with or without repetition, using secure randomness; with a seed the result is reproducible (HMAC-SHA256 stream). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: shuffling an array (array-shuffle). Side effects: none (read-only, no network access, no stored state). Not deterministic: random unless seed is given. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Largest integer (mode int) (integer; optional; default 100; min -9007199254740991; max 9007199254740991). | |
| min | No | Smallest integer (mode int) (integer; optional; default 1; min -9007199254740991; max 9007199254740991). | |
| mode | No | int: integers in [min, max]; items: pick from items (optional; one of: int, items; default "int"). | int |
| seed | No | Seed for reproducible output (string; optional; up to 200 chars). | |
| count | No | How many values or items (integer; optional; default 1; min 1; max 1000). | |
| items | No | Items to pick from (mode items) (array; optional). | |
| unique | No | Without repetition (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| seeded | No | |
| values | No | any JSON value |
| indices | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-open-world, non-destructive and non-idempotent, and the description usefully attributes the non-idempotency to seeding ('no determinista salvo que se dé seed') plus the HMAC-SHA256 stream and the 64 KB / 1 s / 1 MB limits. Those limits and the seed-reproducibility guarantee are real value beyond the structured fields, though 'sin red / sin estado' partly restates openWorldHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and limits are front-loaded and dense, which is good, but the off-topic 'transformar, comparar o revisar con exactitud' sentence earns nothing and misdirects. The full Spanish block plus a partial English block ending in '[EN completo / full EN: inputSchema.description]' bloats the definition with a pointer rather than 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 the description covers modes, seeding, determinism and hard limits — enough for a 7-parameter optional-only tool. Remaining gap is failure behavior (insufficient items for unique picks, items omitted in items mode) which would prevent a wasted call.
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 3 baseline holds; the description still adds meaning the schema lacks, notably that the integer range is inclusive and that repetition is governed by the unique flag when picking items. It does not explain what happens when unique is true and count exceeds the item list, which is the one edge case an agent would want.
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 pair twice (generate inclusive-range integers / draw n items from a list), including the repetition flag and seed-reproducibility. It explicitly distinguishes itself from the sibling array-shuffle, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The exclusion is explicit and correct: 'No para: mezclar un arreglo (array-shuffle)'. But the positive 'Cuándo' clause — transforming/comparing/checking structured data exactly — reads as boilerplate from a different tool and does not describe when to draw random values, which actively misleads rather than guides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random-tokenGenerar token aleatorioARead-onlyInspect
Genera un token aleatorio de 1 a 256 bytes en hex, base64url o base58. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: generar IDs aleatorios compactos y seguros para URL (nanoid). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio salvo que se dé seed. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates a random token of 1-256 bytes encoded as hex, base64url or base58, e.g. for API keys or nonces. A seed is meant only for test fixtures. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating compact URL-safe random IDs (nanoid). Side effects: none (read-only, no network access, no stored state). Not deterministic: random unless seed is given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed. With a seed the output is reproducible; without one, cryptographically random bytes are used (string; optional; up to 256 chars). | |
| bytes | No | Number of random bytes (integer; optional; default 32; min 1; max 256). | |
| encoding | No | Output encoding (optional; one of: hex, base64url, base58; default "hex"). | hex |
Output Schema
| Name | Required | Description |
|---|---|---|
| bits | No | |
| aviso | No | |
| token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations cover the safety hints, the description adds critical behavioral context not covered by structured data, specifically stating that the tool is non-deterministic unless a seed is provided. It also clearly outlines operational limits (64KB input, 1s call time, 1MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly effective and structured, moving logically from the core function to its intended use, its limitations (nanoid), and operational constraints. It avoids fluff and is organized for maximum information density.
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 parameters and annotations, the description provides all necessary contextual information for an agent to safely and accurately select this tool, especially regarding its non-deterministic nature and performance limits.
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?
Given 100% schema coverage, the baseline is high. The description adds semantic value by explaining the *effect* of the seed parameter: that it allows the output to be reproducible for test fixtures, a functional detail beyond the basic type definition 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?
The description is highly specific, stating that it generates a random token within a specific range (1-256 bytes) and lists the exact encoding options (hex, base64url, base58). This clearly defines its scope and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent guidance by explicitly stating when to use the tool ('when: an identifier has to be generated in this format') and providing a strong negative constraint ('not for: generating compact URL-safe random IDs (nanoid)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate-limit-planPlanear límite de solicitudesARead-onlyIdempotentInspect
Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: calcular los tiempos de espera entre reintentos (backoff-schedule). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes, for a limit of N requests per window and a number of calls to make, the minimum spacing between calls, the minimum total duration and a token-bucket wait time for the next call. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| burst | No | Bucket capacity (default = limit) (integer; optional; min 1; max 1000000000). | |
| calls | No | Calls you need to make (integer; optional; default 0; min 0; max 1000000000). | |
| limit | Yes | Requests allowed per window (integer; required; min 1; max 1000000000). | |
| window_seconds | Yes | Window length in seconds (number; required; > 0; max 31536000). | |
| tokens_available | No | Tokens currently in bucket (number; optional; min 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| windows_needed | No | |
| rate_per_second | No | |
| min_total_seconds | No | |
| min_spacing_seconds | No | |
| next_call_wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds genuinely new traits: deterministic output, no network, no stored state, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). Only the "efectos secundarios: ninguno" sentence restates 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?
Both the Spanish and English blocks carry identical content, so roughly half the text is duplicated rather than additive, and the trailing truncated pointer "[EN completo / full EN: inputSchema.description]" is awkward. The structure is front-loaded (purpose → when → when-not → side effects → limits), which is good, but the payload is longer than it needs to be.
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; with that removed, everything an agent needs is present: determinism guarantee, absence of side effects, sibling exclusion, and hard input/latency/size limits that affect how to call it safely.
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 nevertheless adds conceptual meaning the schema lacks: it frames the output as token-bucket behaviour, which is what makes 'burst' and 'tokens_available' interpretable, and ties 'calls' to the total-duration result. It does not give explicit defaults, but the schema already does.
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?
Uses a specific verb plus enumerable outputs (espaciado mínimo, duración total mínima, espera token-bucket) for a clearly bounded resource: a rate limit of N requests per window. It also names the sibling it is not (backoff-schedule), so an agent can separate it from the retry-delay tool 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?
Explicitly states the trigger condition ("Cuando: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar") and an exclusion with a named alternative ("No para: calcular los tiempos de espera entre reintentos (backoff-schedule)"). When, when-not and alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readability-scoreMétricas de legibilidadARead-onlyIdempotentInspect
Calcula las métricas de legibilidad: LIX y RIX (independientes del idioma) y Flesch (en) o Fernández-Huerta (es) estimados. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar caracteres, bytes, palabras, oraciones, líneas y párrafos, y estima el tiempo de lectura (text-metrics). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the language-agnostic LIX and RIX scores plus estimated Flesch Reading Ease (en) or Fernández-Huerta (es) using heuristic syllable counts; also sentence and word length averages. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting characters (text-metrics). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language for syllable heuristics (optional; one of: en, es; default "en"). | en |
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lix | No | |
| rix | No | |
| words | No | |
| sentences | No | |
| fernandez_huerta | No | |
| syllables_estimate | No | |
| flesch_reading_ease | No | |
| avg_letters_per_word | No | |
| avg_words_per_sentence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds what they don't: no network, no stored state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). That is exactly the extra context an agent needs to avoid oversized inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Cuándo/No para/Efectos/Límites structure is well front-loaded, but the description ships the same content twice (Spanish block plus a near-duplicate English block), which is avoidable bloat for a two-parameter tool.
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; the description still covers scope, language coverage, determinism, side effects and hard limits. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the lang value selects Flesch (en) vs Fernández-Huerta (es) and drives heuristic syllable counting. It does not add format/size guidance for text beyond the schema's maxLength.
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 (calcula) and the exact resources (LIX, RIX, Flesch/Fernández-Huerta) plus the derived averages, so an agent knows precisely what it gets. It also names the sibling it is not (text-metrics) for counting characters/words.
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?
Explicit 'Cuándo' (exact measurement/comparison of text) and 'No para' (counting characters, bytes, words, sentences, lines, paragraphs, reading time → text-metrics) with the alternative named. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recibo-verifyVerificar recibo de Burs-IAARead-onlyIdempotentInspect
Verifica un recibo: recalcula los SHA-256 de la entrada, la salida y el recibo canónicos (RFC 8785) y, con rerun, vuelve a ejecutar la herramienta. Sin firma: prueba consistencia, no origen. Sin rerun informa consistent, no valid. Cuándo: hay que comprobar que un recibo de Burs-IA es consistente con la entrada y la salida que declara, opcionalmente volviendo a ejecutar la herramienta. No para: calcular el resumen SHA-256 (hash-sha256). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks a receipt (recibo): recomputes the SHA-256 of the RFC 8785 (JCS) canonical input, output and receipt, and with rerun re-runs the tool. Unsigned: proves consistency, not origin. Without rerun it reports consistent, not valid. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Tool name the receipt refers to (string; required; up to 64 chars). | |
| input | Yes | Input exactly as sent (object; required). | |
| rerun | No | Re-run the tool and compare outputs (boolean; optional; default true). | |
| output | Yes | Result exactly as received (any JSON value; required). | |
| recibo | Yes | The `recibo` object returned with the result (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| rerun | No | |
| valid | No | |
| checks | No | |
| consistent | No | |
| recomputed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: 'Sin firma: prueba consistencia, no origen' and 'Sin rerun informa consistent, no valid' are security-relevant caveats an agent would otherwise get wrong, and the Limits block (64 KB input, 1 s per call, 1 MB result) plus determinism statement are concrete operational constraints. Annotations already cover read-only/no-network, and the description still adds material context on top.
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 core action, then cleanly labeled sections (Cuándo / No para / Efectos secundarios / Determinista / Límites) that each earn their place. The bilingual duplication — full ES text plus an EN pointer back to inputSchema.description — adds length without adding information for an agent reading both fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation; the description still supplies the interpretation caveat ('consistent' ≠ 'valid'), the alternative tool, side-effect profile, determinism and hard limits. Nothing an agent needs to call this correctly and interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description adds real meaning by explaining what `rerun` actually does to the verdict ('consistent' vs 'valid') and by framing `input`/`output`/`recibo` as 'exactly as sent/received' artefacts. It does not, however, document the nested recibo fields (signed, canonicalization, standard) beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — recomputes SHA-256 over the RFC 8785 (JCS) canonical input, output and receipt and optionally re-runs the tool — and explicitly separates itself from hash-sha256. The 'recibo de Burs-IA' framing plus the hash-recomputation mechanics make it unambiguous what is being verified.
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?
Contains explicit 'Cuándo' (check a Burs-IA receipt for consistency with its declared input/output, optionally re-running) and 'No para' (computing a SHA-256 digest — use hash-sha256) sections. The rerun/no-rerun trade-off is spelled out, so the agent knows the condition that selects each mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regex-escapeEscapar expresión regularARead-onlyIdempotentInspect
Escapa una cadena literal para usarla dentro de una expresión regular. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: reemplazar coincidencias de una expresión regular (regex-replace). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Escapes a literal string so it can be embedded in a regular expression and match itself exactly. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: replacing regex matches (regex-replace). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Literal text (string; required; up to 10000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| escaped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so much of the safety profile is covered. The description still adds genuinely new context the annotations cannot express: determinism, no network access, no stored state, and concrete quotas (64 KB JSON input, 1 s per call, 1 MB result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The layout is well front-loaded with labeled clauses (Cuándo / No para / Efectos secundarios / Límites), so every sentence is scannable and purposeful. The full bilingual duplication roughly doubles the length; defensible given the Spanish title, but it does mean an English-only agent pays for the Spanish text twice over.
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 string transformer with an output schema, the description covers purpose, exclusions, side effects and limits, which is nearly everything an agent needs. Only edge behavior — what happens when input exceeds the 64 KB / 10000-char bounds — is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented with type, required flag, maxLength and an example, so the description adds little per-parameter meaning beyond "literal text." Worth noting the stated 64 KB limit applies to the whole JSON input while the schema caps this string at 10000 chars — not a contradiction, but the two are not reconciled.
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 ("Escapa una cadena literal para usarla dentro de una expresión regular") and pins down the semantics: the result must "match itself exactly." It explicitly separates the tool from its closest sibling, regex-replace, so an agent can choose between them 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?
It gives an explicit when ("text has to be transformed, compared or measured exactly instead of approximated") and an explicit not-for naming the alternative (regex-replace). The remaining gap is that the when-condition is abstract; it never mentions the concrete trigger, e.g. embedding untrusted user input into a pattern, and it does not distinguish itself from regex-test.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regex-replaceReemplazar con expresión regularARead-onlyIdempotentInspect
Reemplaza coincidencias de una expresión regular ($1, $) en un contexto vm con límite de 50 ms y resultado máx. de 1.000.000 caracteres. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: escapar una cadena literal para usarla dentro de una expresión regular (regex-escape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Replaces regex matches ($1, $, $&, $` and $' supported) in a vm context with a 50 ms limit and a 1,000,000-character result cap. Without the g flag only the first match is replaced. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: escaping a literal string so it can be embedded in a regular expression and match itself exactly (regex-escape). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Subject text (string; required). | |
| flags | No | Flags from dgimsuyv (string; optional; default ""; up to 8 chars; pattern ^[dgimsuyv]*$). | |
| pattern | Yes | JavaScript regular expression source (no slashes) (string; required; at least 1 chars; up to 500 chars). | |
| replacement | Yes | Replacement string (string; required; up to 10000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| replacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes further with a 50 ms vm limit, 1,000,000-char result cap, 64 KB input / 1 s call limits, determinism, and the first-match-only behavior without the g flag. These are real execution constraints an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and limits, and the when/not-for clauses are well placed. However the English block largely restates the Spanish block and then points back to inputSchema.description, which duplicates text already in a structured field.
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 annotations cover the safety profile, so the remaining burden is limits, determinism and alternative routing — all present. Nothing an agent needs to invoke this 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 baseline is 3; the description still adds value by explaining replacement-token syntax and that the g flag governs first-match vs global replacement, which the schema does not say. It does not explain individual flags (d, i, m, s, u, y, v) beyond listing them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Reemplaza coincidencias de una expresión regular') and adds the operative detail that replacement tokens ($1, $<name>, $&, $`, $') are supported, plus the g-flag behavior. It explicitly distinguishes itself from regex-escape, so an agent can separate it from at least one close sibling 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?
Contains explicit 'Cuándo' (transform/compare/measure text exactly) and 'No para' (escaping a literal string → regex-escape) clauses. The when/when-not pair with a named alternative is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regex-testProbar expresión regularARead-onlyIdempotentInspect
Aplica una expresión regular de JavaScript a un texto y lista cada coincidencia con posición y grupos (hasta 500). Corre en un contexto vm que se detiene a los 50 ms: un patrón catastrófico responde timeout. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: reemplazar coincidencias de una expresión regular (regex-replace). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Tries a JavaScript regex on a text and lists each match with its position and groups (up to 500). The pattern runs in a separate vm context that is stopped after 50 ms, so a catastrophic pattern returns timeout instead of hanging. Pattern ≤ 500 chars. When: text has to be transformed, compared or measured exactly instead of approximated. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Subject text (string; required). | |
| flags | No | Flags from dgimsuyv (string; optional; default ""; up to 8 chars; pattern ^[dgimsuyv]*$). | |
| pattern | Yes | JavaScript regular expression source (no slashes) (string; required; at least 1 chars; up to 500 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| matched | No | |
| matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: discloses that the pattern executes in an isolated vm context killed at 50 ms so catastrophic patterns return timeout instead of hanging, plus concrete limits (64 KB JSON input, 1 s per call, 1 MB result) and determinism. The 'no side effects' line merely restates readOnlyHint, but the sandbox/timeout and quota disclosure is exactly the behavioral context an agent cannot infer elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish block is front-loaded and dense, with labeled clauses (Cuándo / No para / Efectos secundarios / Límites) that are easy to scan. The appended English block largely duplicates it and points back to inputSchema.description, which is mild redundancy rather than bloat.
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?
Return shape is covered by the output schema, parameters by a fully-described schema, and safety by annotations; the description fills the remaining gaps (timeout behavior, quotas, replacement alternative). Nothing an agent needs in order 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 description coverage is 100%, so pattern/flags/text semantics are already fully documented, including the flags pattern ^[dgimsuyv]*$. The description adds only the pattern length cap (already in the schema as maxLength) and the 500-match result ceiling, which is output behavior rather than parameter 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?
States a specific verb and resource: applies a JavaScript regex to a text and lists every match with position and groups (capped at 500). It also names the sibling it is not (regex-replace), so an agent can separate the two 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 'Cuándo' clause gives the positive trigger (exact transform/compare/measure of text, not approximation) and the 'No para' clause routes replacement work to regex-replace. Both the use case and the exclusion are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove-accentsQuitar tildes y diacríticosARead-onlyIdempotentInspect
Quita tildes y diacríticos (á→a, ü→u); opcionalmente conserva la ñ. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: aplicar normalización Unicode NFC, NFD, NFKC o NFKD (unicode-normalize). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Strips combining diacritical marks (á→a, ü→u, ç→c, ñ→n) after NFD decomposition; optionally keeps ñ/Ñ for Spanish. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: applying Unicode normalization form NFC, NFD, NFKC or NFKD and reporting whether the text changed (unicode-normalize). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). | |
| keep_enye | No | Keep ñ and Ñ (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnlyHint, idempotentHint, openWorldHint) by stating no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). These are operational constraints the annotations cannot express.
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?
Well front-loaded with labeled sections (Cuándo, No para, Efectos, Límites) that scan quickly. The full ES/EN duplication roughly doubles length without adding information, which is the only real cost.
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. Purpose, exclusions, side effects, determinism, and hard limits are all covered — nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining that ñ normally strips to n and that keep_enye preserves ñ/Ñ 'for Spanish', which adds intent beyond the schema's terse 'Keep ñ and Ñ'. The text param gets no extra guidance beyond the example already 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?
Names a specific verb and resource (strip diacritics from text) and illustrates with concrete transformations (á→a, ü→u, ñ→n). The optional ñ behavior is stated up front, so an agent knows exactly what the tool produces.
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?
Has explicit 'Cuándo' and 'No para' sections that name the sibling alternative unicode-normalize and the exact condition that selects it (normalization form NFC/NFD/NFKC/NFKD and reporting whether text changed). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry-after-parseLeer cabecera Retry-AfterARead-onlyIdempotentInspect
Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: calcular los tiempos de espera entre reintentos (backoff-schedule). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an HTTP Retry-After value (delay seconds or HTTP-date) into seconds to wait and the absolute retry time, relative to a given now instant. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: computing retry delays for exponential, linear or constant backoff with a cap and optional jitter (backoff-schedule). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| now | Yes | Current instant ISO 8601 (string; required; up to 40 chars). | |
| value | Yes | Retry-After header value (string; required; up to 100 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| retry_at | No | |
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, but the description goes further: no side effects, no network, no stored state, deterministic output, plus concrete limits (64 KB input, 1 s per call, 1 MB result). Those limits and the determinism guarantee are operationally useful facts not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then clearly labelled blocks (Cuándo / No para / Efectos / Determinista / Límites), so scanning is easy. It loses a point because the full English text duplicates the Spanish verbatim and the trailing '[EN completo: inputSchema.description]' pointer adds no decision-relevant 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 shape need not be described, and the description still names the two returned values. Combined with the safety profile from annotations, the determinism guarantee and the input/size limits, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point because it tells the agent that `value` may be either delay-seconds or an HTTP-date and that `now` is the reference instant for the absolute retry time, which the terse schema descriptions ('Retry-After header value', 'Current instant ISO 8601') do not convey.
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 (parse an HTTP Retry-After value) and the exact output semantics (seconds to wait plus absolute retry time, relative to `now`). It also names what it is not (backoff-schedule), so an agent can distinguish it from the nearest sibling 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?
Explicit 'Cuándo' clause scopes usage to exact, repeatable bookkeeping steps in an agent loop, and the 'No para' clause rules out backoff-delay computation while naming the sibling `backoff-schedule` as the alternative. Both the inclusion and exclusion conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robots-ai-crawlersAcceso de rastreadores de IAARead-onlyIdempotentInspect
Informa, para un robots.txt dado y 21 rastreadores de IA conocidos (GPTBot, ClaudeBot, Google-Extended…), si una ruta está permitida y si la decisión viene de un grupo específico. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: decidir si un agente puede acceder a una ruta según un robots.txt dado (robots-txt-check). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Reports, for a given robots.txt and 21 known AI crawlers and agent fetchers (GPTBot, ClaudeBot, Claude-User, Google-Extended, PerplexityBot, CCBot…), whether a path is allowed and whether the decision comes from a bot-specific group. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to test (string; optional; default "/"; up to 4096 chars). | / |
| robots_txt | Yes | robots.txt content (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bots | No | |
| path | No | |
| allowed_count | No | |
| blocked_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations, detailing its side effects (none: read-only, no network), deterministic nature, and technical limits (input/output size, latency).
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?
Despite being quite dense due to the high amount of required information, the information is well-organized, front-loading the purpose and distinguishing usage scenarios before detailing behavioral limits.
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 complexity and the similarity to other string/parsing tools in the ecosystem, this description is exceptionally complete. It provides functional logic, scope, and performance characteristics that an agent needs to select it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description is mostly complementary. It adds high-value domain context by identifying the specific types of agents (AI crawlers) and the operational context for the required `robots_txt` content.
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 tool clearly states its purpose: reporting path permissibility for a given robots.txt and 21 known AI crawlers. It clearly distinguishes itself from other related tools by mentioning its role in parsing and decision-making (or lack thereof in the sibling).
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 explicit guidance on when to use the tool: when reading/parsing URLs, HTTP headers, tokens, or agent readiness files. Crucially, it specifies when NOT to use it (i.e., for a simple robots-txt-check).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robots-txt-checkRevisar reglas de robots.txtARead-onlyIdempotentInspect
Decide si un agente puede acceder a una ruta según un robots.txt dado (RFC 9309) e indica la regla decisiva. No descarga nada. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: informa, para un robots.txt dado y 21 rastreadores de IA conocidos (robots-ai-crawlers). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decides whether a user agent may fetch a path under a supplied robots.txt (RFC 9309: most specific group, longest match, Allow wins ties, * and $ wildcards) and reports the deciding rule. Nothing is fetched. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | URL path (with query) (string; optional; default "/"; up to 4096 chars). | / |
| robots_txt | Yes | robots.txt content (string; required). | |
| user_agent | Yes | User-agent product token or full UA (string; required; up to 500 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| rule | No | |
| group | No | |
| allowed | No | |
| sitemaps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, it discloses no network access, no stored state, determinism (same input, same output), and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). It also names the RFC 9309 matching semantics applied (most specific group, longest match, Allow wins ties, wildcards), which the agent could not infer from structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The same content is duplicated in Spanish and English, and the English half simply points at inputSchema.description rather than adding value. The 'When' block is a long list of unrelated items that does not earn its place. The genuinely useful facts (RFC semantics, no network, limits) are buried among noise.
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, a full-coverage schema and an output schema in place, the description supplies what remains: matching semantics, side-effect profile and resource limits. Only the misleading 'Cuando' enumeration keeps completeness below a 5.
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?
All three parameters are fully documented in the schema (100% coverage) and the tool has an output schema, so the schema carries the semantics. The description only generically refers to a 'supplied robots.txt' and a user agent, adding nothing about the path parameter, its default of '/', or the UA token format. 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 opening sentence gives a specific verb+resource+scope: decide whether a user agent may fetch a path under a supplied robots.txt per RFC 9309, plus it reports the deciding rule and fetches nothing. That clearly separates it from siblings like robots-ai-crawlers and llms-txt-lint. The purpose is nevertheless diluted by the generic 'Cuando/When' list of unrelated artifacts (HTTP headers, IP ranges, HTML documents), which obscures the actual scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It uses an explicit 'Cuando / When' and 'No para / Not for' structure and names the alternative sibling (robots-ai-crawlers) for AI-crawler lookups. But the when-list is garbled and off-topic, claiming the tool is for parsing URLs, HTTP headers, tokens, IP ranges and HTML/Markdown documents, which this tool does not do. The routing is present but partly misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
roman-numeralNúmeros romanosARead-onlyIdempotentInspect
Convierte enteros 1-3999 a números romanos y viceversa (forma estricta). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: convertir enteros de cualquier tamaño entre bases 2 y 36 (radix-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts integers 1-3999 to standard Roman numerals and validates/parses Roman numerals (strict subtractive form) back to integers. When: a numeric result has to be exact or reproducible instead of estimated. Not for: converting an integer of any size between bases 2-36 (radix-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Integer (to Roman) or Roman numeral string (to integer) (integer or string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| roman | No | |
| integer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent/non-destructive, but the description adds information they do not carry: no network access, no stored state, determinism, and concrete operational limits (64 KB input, 1 s per call, 1 MB result). Those limits directly affect how an agent should batch or size calls.
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 core sentence and organized under explicit labels (When / Not for / Side effects / Deterministic / Limits), so it scans fast. The ES/EN duplication roughly doubles the length, which is defensible for a bilingual catalog but is still redundancy against a single-language reader.
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 needn't be explained; annotations cover the safety profile; and the description fills the remaining gaps an agent would care about — accepted input domain, determinism, failure-relevant limits, and the absence of side effects. Nothing material is missing for a single-parameter conversion 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?
Only one parameter with 100% schema description coverage, so the schema already explains that an integer converts to Roman and a string parses back. The description's 'y viceversa' corroborates direction but adds no syntax, casing, or error-handling detail beyond the structured field. Baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact domain constraint: 'Converts integers 1-3999 to standard Roman numerals and validates/parses Roman numerals (strict subtractive form) back to integers.' The bidirectional scope and the 1-3999 boundary make it unambiguously distinguishable from radix-convert and from generic number tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When: a numeric result has to be exact or reproducible instead of estimated' gives the positive selection condition, and 'Not for: converting an integer of any size between bases 2-36 (radix-convert)' names the sibling to use instead. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
round-numberRedondear númeroARead-onlyIdempotentInspect
Redondea a N decimales con aritmética decimal exacta y modos half_up, half_even (bancario), up, down, ceiling, floor. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: redondear un número a N cifras significativas, en notación normal y científica (significant-figures). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Rounds a number to N decimal places using exact decimal arithmetic (no float drift: 1.005 → 1.01 half-up) with modes half_up, half_even (banker's), half_down, up, down, ceiling, floor. When: a numeric result has to be exact or reproducible instead of estimated. Not for: rounding a number to N significant figures and returning it in plain and scientific notation (significant-figures). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Rounding mode (optional; one of: half_up, half_even, half_down, up, down, ceiling, floor; default "half_up"). | half_up |
| value | Yes | Number, or decimal string for exact input (number or string; required; up to 400 chars). | |
| decimals | No | Decimal places (negative rounds to tens, hundreds…) (integer; optional; default 0; min -20; max 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| result | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the description's 'side effects: none' restates structured data. It does earn credit for genuinely new context: determinism, exact decimal arithmetic with the 1.005 → 1.01 illustration, and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Well front-loaded with labeled sections (When / Not for / Side effects / Limits) that make scanning easy. However, the body is bilingual with a duplicated Spanish and English rendering, which roughly doubles length for an audience that only needs one, and the Spanish mode list drops half_down.
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 3-parameter pure-computation tool with an output schema, full annotation coverage and complete schema descriptions, nothing an agent needs is missing. Determinism, limits and the sibling distinction are all covered.
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, enum, defaults and bounds, so the baseline is 3. The description adds only the conceptual framing of 'N decimal places' and modes; it does not explain the negative-decimals behavior or string-vs-number tradeoff beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rounds a number to N decimal places') plus the exact-arithmetic mechanism and the full mode list. It also names the adjacent-but-different tool (significant-figures), so an agent can separate the two 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?
Has explicit labeled 'When:' (result must be exact/reproducible, not estimated) and 'Not for:' (significant figures in plain/scientific notation → significant-figures) sections. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salary-convertConvertir salario por periodoARead-onlyIdempotentInspect
Convierte salarios entre hora, día, semana, quincena, mes y año con horas y semanas configurables. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: convertir tasas entre efectiva anual (interest-rate-convert). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts pay between hourly, daily, weekly, biweekly, monthly and annual figures using configurable hours per week, days per week and weeks per year. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: converting interest rates between effective annual (interest-rate-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Pay amount (number; required; min 0; max 1000000000000). | |
| period | Yes | Period of amount (required; one of: hourly, daily, weekly, biweekly, monthly, annual). | |
| days_per_week | No | Workdays per week (number; optional; default 5; > 0; max 7). | |
| hours_per_week | No | Hours per week (number; optional; default 40; > 0; max 168). | |
| weeks_per_year | No | Paid weeks per year (number; optional; default 52; > 0; max 53). |
Output Schema
| Name | Required | Description |
|---|---|---|
| daily | No | |
| annual | No | |
| hourly | No | |
| weekly | No | |
| monthly | No | |
| biweekly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'sin red, sin estado guardado' largely restates them. The description still adds genuinely new facts the annotations don't carry: full determinism and concrete operational limits (64 KB input, 1 s per call, 1 MB output), which matter for an exact-math 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?
Front-loaded with purpose, then organized as When / Not for / Side effects / Deterministic / Limits, so scanning is easy. It is somewhat verbose by carrying full Spanish and English text that is duplicated again in the schema description, which costs a point.
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, annotations cover the safety profile, all five parameters are documented, and the description adds determinism and size/time limits. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enum and defaults already documented, so the schema carries parameter semantics. The description names the three configuration levers (hours per week, days per week, weeks per year) but adds no interpretation beyond the schema, such as how biweekly/monthly are derived from weeks_per_year — 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 and resource ('Convierte salarios entre hora, día, semana, quincena, mes y año') and enumerates the six supported periods plus the configurable bases. It also names a near-miss sibling (interest-rate-convert), so an agent can separate pay conversion from rate conversion without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' clause scopes use to exact/reproducible money and financial-math results (rounding, cents, rates), and an explicit 'No para' clause redirects interest-rate conversion to interest-rate-convert. Both the positive and negative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security-txt-validateValidar security.txtARead-onlyIdempotentInspect
Valida un security.txt según RFC 9116: Contact y Expires obligatorios, campos conocidos, URIs https y firma PGP. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: decidir si un agente puede acceder a una ruta según un robots.txt dado (robots-txt-check). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a security.txt file per RFC 9116: required Contact and a single Expires (in the future relative to as_of and ideally < 1 year away), known fields, https URIs, and whether it is PGP-signed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | Yes | Reference instant ISO 8601 (string; required; up to 40 chars). | |
| security_txt | Yes | security.txt content (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| errors | No | |
| fields | No | |
| signed | No | |
| warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the safety profile is covered structurally. The description adds genuinely new operational context: no network access, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). It also clarifies RFC semantics — Expires must be in the future relative to as_of and ideally under a year — which is behavior, not restated 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?
The RFC 9116 spec is well front-loaded, but the body then wastes space on off-topic boilerplate about URLs, tokens, IP ranges and HTML, and ends with a dangling placeholder '[EN completo / full EN: inputSchema.description]' that is a broken reference rather than content. The Spanish and English blocks largely duplicate each other, inflating length without adding 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 the description covers the validation rules, limits, determinism and the nearest sibling exclusion. The one gap is that the misleading 'when' list leaves an agent unsure whether this tool is scoped strictly to security.txt files or also to other parsed artifacts.
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% with only two required params, so the baseline is 3. The description goes beyond the schema by explaining what as_of actually means functionally: it is the reference instant against which Expires is judged to be in the future, which the schema merely calls 'Reference instant ISO 8601'.
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 opening sentence names a specific verb and resource — 'Valida un security.txt según RFC 9116' — and enumerates the concrete checks (Contact and Expires required, known fields, https URIs, PGP signature). Combined with the explicit 'No para: ... (robots-txt-check)' exclusion, an agent can distinguish this from the closest sibling 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 'No para' clause is a genuine, useful exclusion that names robots-txt-check and the condition that selects it. However, the 'Cuándo' clause is generic template boilerplate ('una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown') that does not describe when to reach for security.txt validation and could mislead an agent into thinking this tool parses URLs, headers or HTML.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semver-bumpSubir versión semánticaARead-onlyIdempotentInspect
Incrementa una versión SemVer (major, minor, patch o prerelease con identificador opcional). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: validar y analizar una versión SemVer 2.0.0 en mayor, menor, parche, prerelease y build (semver-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Increments a SemVer version: major, minor, patch, premajor, preminor, prepatch or prerelease (with an optional identifier like beta or rc), following npm semver semantics. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| release | Yes | Release type (required; one of: major, minor, patch, premajor, preminor, prepatch, prerelease). | |
| version | Yes | Semantic version, e.g. 1.2.3-beta.1 (string; required; up to 256 chars). | |
| identifier | No | Prerelease identifier, e.g. beta (string; optional; up to 30 chars; pattern ^[0-9A-Za-z-]+$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld=false and destructive=false, and the description still adds concrete value: explicit limits (64 KB input, 1 s per call, 1 MB result) and a determinism guarantee. The side-effects line largely restates the annotations, so it is additive rather than fully independent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative sentences are well front-loaded, but the 'When' boilerplate about URLs, HTTP headers, tokens, IP ranges and HTML/Markdown documents is irrelevant to version bumping and appears to be reused template text, wasting space and inviting misapplication.
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, full parameter coverage and rich annotations, the description plus structured fields are sufficient to call the tool correctly. The remaining gap is the misleading generic usage clause, not missing invocation-critical information.
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 enum for 'release' is fully documented in the schema, so the baseline is 3. The description restates the same release list and mentions the optional identifier (beta/rc), adding marginal meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The EN text gives a specific verb and resource ('Increments a SemVer version') and enumerates the release modes plus npm semver semantics, which lets an agent separate it from siblings like semver-compare or semver-sort. The clarity is diluted by the boilerplate 'When' clause listing URLs, IP ranges and HTML documents, which does not describe what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative: 'No para: validar y analizar una versión SemVer 2.0.0 ... (semver-parse)', which is exactly the kind of routing signal that separates bumping from parsing. The positive 'Cuándo' clause, however, is generic copy that mentions unrelated artifact types, so the when-to-use half is weaker than the when-not half.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semver-compareComparar versiones semánticasARead-onlyIdempotentInspect
Compara dos versiones SemVer con las reglas de precedencia: devuelve -1, 0 o 1 y el nivel de diferencia. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: incrementar una versión SemVer (semver-bump). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Compares two SemVer versions with full precedence rules (prereleases sort before releases; build metadata ignored): returns -1, 0 or 1 and the difference level. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Semantic version, e.g. 1.2.3-beta.1 (string; required; up to 256 chars). | |
| b | Yes | Semantic version, e.g. 1.2.3-beta.1 (string; required; up to 256 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| relation | No | |
| difference | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine extra context beyond them: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result), which is exactly the operational detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded and tight, but the same content is duplicated in Spanish and English, and the 'Cuándo' sentence lists unrelated artifacts (URLs, HTTP headers, IP ranges, HTML/Markdown files) that a version comparison never touches — boilerplate that dilutes the signal.
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, full schema coverage and rich annotations, the description supplies what is missing: precedence rules, determinism, and resource limits. The only weakness is the generic applicability list, which could wrongly suggest the tool parses URLs or HTML.
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% with examples and maxLength, so the baseline is 3. The description goes slightly beyond by explaining how the inputs are interpreted — prerelease ordering and that build metadata is ignored — which changes what values in 'a' and 'b' actually mean for the comparison.
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 ('compara dos versiones SemVer'), the exact precedence semantics (prereleases before releases, build metadata ignored), and the return contract (-1, 0 or 1 plus difference level). An agent knows precisely what this does 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?
Explicitly excludes the closest confusable action: 'No para: incrementar una versión SemVer (semver-bump)'. However, it never mentions the equally adjacent siblings semver-satisfies and semver-sort, and the generic 'Cuándo' list (URLs, HTTP headers, tokens, IP ranges, HTML) does not help select among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semver-parseAnalizar versión semánticaARead-onlyIdempotentInspect
Valida y analiza una versión SemVer 2.0.0 en mayor, menor, parche, prerelease y build. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: incrementar una versión SemVer (semver-bump). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates and parses a SemVer 2.0.0 string (optional leading v) into major, minor, patch, prerelease identifiers and build metadata. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | Semantic version, e.g. 1.2.3-beta.1 (string; required; up to 256 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| build | No | |
| major | No | |
| minor | No | |
| patch | No | any JSON value |
| valid | No | |
| version | No | |
| is_stable | No | |
| prerelease | No | |
| is_prerelease | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'solo lectura, sin red, sin estado guardado' largely restates them. The genuinely additive parts are the determinism guarantee and the hard limits (64 KB input, 1 s per call, 1 MB result), which structured fields 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?
Front-loaded with the core action and organized into labelled Cuándo/No para/Efectos/Límites blocks, which is easy to scan. Points deducted because the trigger list mixes unrelated artifact types (URL, IP range, HTML, Markdown, agent-readiness file) and the full text is duplicated in Spanish and English.
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; the description still covers side effects, determinism and resource limits. For a single-parameter read-only parser, an agent has everything needed to call it correctly and predict the outcome.
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 single parameter carries its own description, examples and maxLength, so the baseline is 3. The description does add one useful constraint not in the schema — that a leading 'v' is optional — but otherwise adds little over the structured 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 pair (valida y analiza) plus the exact resource (SemVer 2.0.0) and enumerates the parsed components (mayor, menor, parche, prerelease, build). This clearly separates it from sibling parsers like semver-compare or semver-satisfies.
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?
Uses explicit 'Cuándo:' and 'No para:' sections, naming the alternative tool (semver-bump) and the operation it handles instead. The when-to-use trigger list is broad but the exclusion plus named sibling removes ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semver-satisfiesVersión dentro de un rangoARead-onlyIdempotentInspect
Verifica si una versión cumple un rango estilo npm (^, ~, x, guiones, ||). Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: incrementar una versión SemVer (semver-bump). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks whether a version satisfies an npm-style range (^, ~, x-ranges, hyphen ranges, comparators, || alternatives). Prereleases only match when the range names the same version tuple, unless include_prerelease is true. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | Range, e.g. ^1.2.0 || >=2.1 <3 (string; required; up to 512 chars). | |
| version | Yes | Semantic version, e.g. 1.2.3-beta.1 (string; required; up to 256 chars). | |
| include_prerelease | No | Let prereleases match any range (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| satisfies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so restating 'no side effects, read-only, no network' adds little. The description does add genuinely new behavior: the prerelease matching rule and concrete operational limits (64 KB input, 1 s per call, 1 MB result), which is what the annotations 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?
The core purpose-plus-exclusion is front-loaded and efficient, but the body is duplicated in ES and EN, and the generic 'When' enumeration of unrelated artifacts is padding that dilutes the signal. It is serviceable rather than 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, return values need not be described, and the limits, determinism and prerelease rule together give an agent enough to call it correctly. The only weak spot is the broad 'When' list, which does not reflect this tool's actual two-parameter surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns above that by explaining the semantics of include_prerelease ('prereleases only match when the range names the same version tuple, unless include_prerelease is true'), which the schema's one-line default note does not.
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 result ('Checks whether a version satisfies an npm-style range') and enumerates the exact range syntaxes supported (^, ~, x-ranges, hyphen ranges, comparators, ||). It also explicitly names the sibling it is not (semver-bump), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Not for: incrementing a SemVer version (semver-bump)' exclusion is explicit, and the prerelease matching rule tells the agent when to set include_prerelease. However, the 'When' clause lists URLs, HTTP headers, tokens, IP ranges and HTML/Markdown documents, which is generic boilerplate that does not map onto a two-string version/range tool and could misdirect an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semver-sortOrdenar versionesARead-onlyIdempotentInspect
Ordena versiones SemVer por precedencia y opcionalmente devuelve la mayor que cumple un rango. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: comparar dos versiones SemVer con las reglas de precedencia (semver-compare). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Sorts a list of SemVer versions by precedence (ascending or descending), reports invalid entries, and optionally returns the highest version satisfying a range. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: comparing two SemVer versions with full precedence rules (semver-compare). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Order (optional; one of: asc, desc; default "asc"). | asc |
| range | No | Range for max_satisfying (string; optional; up to 512 chars). | |
| versions | Yes | Versions (array of string; required; at least 1 items; up to 5000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sorted | No | |
| invalid | No | |
| max_satisfying | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, but the description adds real context beyond them: deterministic output, explicit limits (64 KB input, 1 s per call, 1 MB result), and the fact that invalid entries are reported rather than rejected. The translated duplicate of the same text adds no extra disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and crisp, but the definition is bloated by a generic 'When:' catalogue of unrelated artifact types and by a near-verbatim EN duplicate of the ES text, both of which dilute the signal.
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, 100% schema description coverage and rich annotations, the description only needs to add scoping and operational limits — which it does via the exclusion, the determinism claim and the size/time limits.
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 adds meaning the schema does not: it explains that the `range` parameter drives the optional 'highest satisfying version' output, which the schema only labels as 'Range for max_satisfying'.
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 opening sentence states a specific verb and resource: sorts SemVer versions by precedence and optionally returns the highest version satisfying a range. It also names the sibling it is not (semver-compare), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The explicit 'Not for: comparing two versions (semver-compare)' exclusion is genuinely useful routing. However, the 'When:' clause is boilerplate listing URLs, HTTP headers, tokens, IP ranges and HTML/Markdown documents, none of which is a SemVer sorting task, and it never mentions the more relevant siblings semver-satisfies, semver-parse or semver-bump.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-cookie-parseLeer cabecera Set-CookieARead-onlyIdempotentInspect
Analiza un encabezado Set-Cookie en nombre, valor y atributos, y señala omisiones de seguridad. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar el encabezado Cookie (cookie-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a Set-Cookie response header into name, value and attributes (Expires, Max-Age, Domain, Path, Secure, HttpOnly, SameSite, Partitioned) and flags common security omissions. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Cookie request header (cookie-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| set_cookie | Yes | Set-Cookie header value (string; required; up to 8192 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| path | No | |
| value | No | any JSON value |
| domain | No | |
| secure | No | |
| expires | No | |
| max_age | No | |
| warnings | No | |
| http_only | No | |
| same_site | No | |
| partitioned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description adds genuinely new behavior: determinism (same input, same output) and hard limits (64 KB JSON input, 1 s per call, 1 MB result). It also states the tool flags common security omissions, which tells the agent what the output is for.
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 exclusions are front-loaded, but the text is doubled in Spanish and English and then repeated a third time inside inputSchema.description, and the generic "Cuándo" list of unrelated artifact types is filler for this tool. It is longer than the task warrants.
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 one-parameter, single-purpose parser with a full output schema and complete annotations, the definition covers scope, exclusions, determinism and resource limits – enough for an agent to call it correctly. The only shortfall is that input edge cases (malformed header, multiple Set-Cookie values) are not addressed.
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 single parameter already has a type, maxLength, an example and a description, so the schema does the heavy lifting. The prose adds no syntax or format guidance beyond that (e.g. how multi-header input or malformed input is handled); 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: parses a Set-Cookie response header into name, value and attributes, and names the exact attributes handled (Expires, Max-Age, Domain, Path, Secure, HttpOnly, SameSite, Partitioned). It also names the sibling it is not (cookie-parse), so the agent can distinguish it 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 exclusion is explicit and routes to the alternative: "No para: analizar el encabezado Cookie (cookie-parse)". However, the "Cuándo" clause is generic boilerplate that lists URLs, tokens, versions, IP ranges, HTML and agent files – content irrelevant to this tool – so the positive usage trigger is weaker than the negative one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
significant-figuresRedondear a cifras significativasARead-onlyIdempotentInspect
Redondea un número a N cifras significativas, en notación normal y científica. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: redondear a N decimales con aritmética decimal exacta y modos half_up, half_even (round-number). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Rounds a number to N significant figures and returns it in plain and scientific notation. When: a numeric result has to be exact or reproducible instead of estimated. Not for: rounding a number to N decimal places using exact decimal arithmetic (round-number). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Number (number; required). | |
| digits | Yes | Significant figures (integer; required; min 1; max 17). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | any JSON value |
| scientific | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed world, so the safety profile is covered; the description's 'no side effects' restates that. What it genuinely adds is deterministic-output assurance and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result), which are not in any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The ES/EN structure is well front-loaded and the 'Cuándo / No para / Efectos / Límites' layout is easy to scan. However, the entire block is duplicated verbatim in English, roughly doubling token cost with no added information for an agent that reads either half.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return values need no explanation), the definition covers selection criteria, sibling disambiguation, determinism, and resource limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented with type and range (digits min 1, max 17). The description only restates that the number is rounded to N significant figures and does not add format, edge-case, or precision-loss guidance 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 first sentence names a specific verb and resource ('Rounds a number to N significant figures') and states the output form (plain and scientific notation). It is immediately distinguishable from round-number, which is named explicitly as the decimal-place alternative.
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 an explicit 'When:' clause (results that must be exact/reproducible rather than estimated) and an explicit 'Not for:' clause pointing at round-number with the exact distinction (N decimal places, half_up/half_even exact decimal arithmetic). No inference is required to choose between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sitemap-buildConstruir sitemap XMLARead-onlyIdempotentInspect
Genera un sitemap XML (sitemaps.org) de hasta 50.000 URLs con lastmod, changefreq y prioridad. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: extraer y clasificar los enlaces de un documento HTML (html-links-extract). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a sitemaps.org XML sitemap from up to 50,000 URLs with optional lastmod, changefreq and priority, XML-escaping each value and rejecting non-http(s) URLs. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | URLs or entries (array of string/object; required; at least 1 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| xml | No | |
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the description's 'side effects: none' line is redundant. It earns credit for the facts annotations do not carry: determinism, XML escaping of values, rejection of non-http(s) URLs, and hard limits of 64 KB input, 1 s per call and 1 MB result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and tight, but the generic 'When:' clause consumes a large share of the text while adding no tool-specific value, and the whole block is duplicated bilingually and again inside inputSchema.description.
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 one-parameter builder with an output schema and full annotation coverage, the definition supplies what an agent still needs: size/time/output limits, validation rules and determinism. Only the boilerplate 'When' clause and the unmentioned ordering/error behavior leave small 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 100% and the single parameter is fully documented with an item-level description and example, which sets a baseline of 3. The description adds real meaning beyond the schema by stating that URLs are validated (non-http(s) rejected) and that values are XML-escaped, which the schema does not mention.
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 scope: builds a sitemaps.org XML sitemap from up to 50,000 URLs with optional lastmod, changefreq and priority. It also names a concrete behavioral rule (XML-escaping each value, rejecting non-http(s) URLs) and explicitly disclaims a sibling (html-links-extract), so an agent can identify 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 'Not for' clause is the only genuinely tool-specific routing signal and it points to html-links-extract. The 'When:' clause is generic family boilerplate listing HTTP headers, tokens, IP ranges, HTML/Markdown documents and agent-readiness files, none of which this tool handles, so it does not actually tell an agent when to pick sitemap-build over url-build, xml-parse or robots-txt-check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snowflake-decodeDecodificar ID SnowflakeARead-onlyIdempotentInspect
Decodifica un ID Snowflake de 64 bits (Twitter/X, Discord o época propia) en fecha, trabajador y secuencia. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: construir un ID Snowflake (snowflake-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes a 64-bit Snowflake ID into timestamp, worker/process and sequence using the Twitter/X or Discord layout and epoch, or a custom epoch. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: building a 64-bit Snowflake ID (snowflake-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Snowflake ID as decimal string (string; required; pattern ^\d{1,20}$). | |
| flavor | No | Layout/epoch (optional; one of: twitter, discord, custom; default "twitter"). | |
| epoch_ms | No | Custom epoch (ms) when flavor=custom (integer; optional; min 0; max 4102444800000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| sequence | No | |
| timestamp | No | |
| worker_id | No | |
| machine_id | No | |
| process_id | No | |
| timestamp_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description still adds value by stating no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). The limit numbers read as generic boilerplate for a tool taking a single decimal string, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is well front-loaded and structurally labeled (when / not-for / side effects / limits). The definition is duplicated verbatim in Spanish and English, so roughly half the text is redundant for any single reader, though that appears to be a deliberate bilingual convention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a low-complexity deterministic transform with only three simple parameters, an output schema so return values need no prose explanation, and full annotation coverage. Everything an agent needs to call it correctly — scope, alternative, side effects, limits — is present.
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 enum is already documented, so the baseline is 3. The description adds modest meaning beyond the schema by explaining that `flavor` selects layout/epoch and that `epoch_ms` applies only to the custom flavor, but it doesn't define the Twitter vs Discord bit layouts or the epoch reference points.
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 (decodes) and resource (64-bit Snowflake ID) plus the exact outputs it yields: timestamp, worker/process and sequence. It names the encoding layouts (Twitter/X, Discord, custom epoch) and explicitly distinguishes itself from snowflake-encode, so an agent can separate it from the sibling 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 'Cuándo' / 'No para' pair gives explicit context and names the alternative (snowflake-encode) for the opposite task. However, the 'Cuándo' line also says it applies when 'an identifier has to be generated in this format', which is an encoding task and is then contradicted by the 'Not for: building a 64-bit Snowflake ID' line — a small but real routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snowflake-encodeConstruir ID SnowflakeARead-onlyIdempotentInspect
Construye un ID Snowflake (estilo Twitter 41/10/12 bits) desde marca de tiempo, máquina y secuencia. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: decodificar un ID Snowflake en su marca de tiempo y sus partes (snowflake-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a 64-bit Snowflake ID (Twitter-style 41/10/12 bit layout) from a timestamp, machine ID and sequence, for a given epoch. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: decoding a Snowflake ID into its timestamp and parts (snowflake-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| epoch_ms | No | Epoch ms (default Twitter 1288834974657) (integer; optional; default 1288834974657; min 0; max 8640000000000000). | |
| sequence | No | 0-4095 (integer; optional; default 0; min 0; max 4095). | |
| machine_id | No | 0-1023 (integer; optional; default 0; min 0; max 1023). | |
| timestamp_ms | Yes | Unix ms (integer; required; min 0; max 8640000000000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the bar is lower. The description still adds real context beyond them: no network access, no stored state, determinism of output, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result).
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 purpose, then when/not-for, then side effects and limits – a clean, scannable order. The content is duplicated verbatim in Spanish and English, which doubles length without adding information for a single agent.
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. Between the description, annotations and schema, an agent has everything needed to call this correctly: purpose, exclusions, determinism, side effects and operational limits.
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 adds meaning: it names the inputs (timestamp, machine, sequence, epoch) and ties them to the 41/10/12 bit layout, which explains why machine_id and sequence have their ranges. It does not restate defaults or bounds, which the schema already carries.
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 artifact: builds a 64-bit Snowflake ID with an explicit 41/10/12 bit layout from timestamp, machine ID and sequence. It also names the sibling it is not (snowflake-decode), so an agent can separate construction from decoding 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?
Has explicit "Cuándo" (generate an ID in this format or read its embedded fields) and an explicit "No para" that routes decoding work to snowflake-decode. The alternative and the condition selecting it are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana-address-validateValidar dirección SolanaARead-onlyIdempotentInspect
Verifica que una cadena sea una clave pública Solana válida en sintaxis: Base58 que decodifica a 32 bytes. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar una dirección Bitcoin sin conexión: Base58Check (bitcoin-address-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks that a string is a syntactically valid Solana public key: Base58 (Bitcoin alphabet) decoding to exactly 32 bytes. Cannot tell whether it is on-curve, funded or owned. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a Bitcoin address offline: Base58Check P2PKH/P2SH (bitcoin-address-validate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Solana address (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hex | No | |
| bytes | No | |
| valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, and the description goes further with what the check cannot determine ('cannot tell whether it is on-curve, funded or owned'), no network/no stored state, determinism, and explicit limits (64 KB input, 1 s per call, 1 MB result). The on-curve/funded caveat is the kind of semantic boundary an agent would otherwise get wrong.
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 core check and cleanly labeled (Cuándo / No para / Efectos / Determinista / Límites), so scanning is easy. It loses a point for being fully bilingual with the English half repeated verbatim in inputSchema.description, which roughly doubles the token cost for the same 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 single-parameter offline validator with an output schema, annotations and a fully described input, nothing an agent needs is missing: it knows the criterion, the exclusions, the side-effect profile and the operational limits.
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; the description adds real meaning by defining what 'valid' means for this parameter (Base58 over the Bitcoin alphabet decoding to 32 bytes), not just the type and max length the schema already gives.
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 (verify that a string is a syntactically valid Solana public key) plus the exact acceptance criterion: Base58 decoding to exactly 32 bytes. It also explicitly demarcates itself from the closest sibling (bitcoin-address-validate), so an agent can choose 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?
Has explicit 'Cuándo' and 'No para' sections: use it when an identifier's format must be verified offline before use, and do not use it for Bitcoin Base58Check validation, naming the alternative tool. This is exactly the when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
soundexCódigo SoundexARead-onlyIdempotentInspect
Calcula el código fonético Soundex (americano) de cada palabra, para nombres que suenan igual en inglés. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular la similitud Jaro y Jaro-Winkler (jaro-winkler). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the American Soundex phonetic code (letter + 3 digits, with the H/W rule) of each word, for matching names that sound alike in English. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the Jaro and Jaro-Winkler similarity (jaro-winkler). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Name(s) (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| codes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/no-network, and the description repeats some of that, but it goes further with hard operational limits (64 KB input, 1 s per call, 1 MB result) and an explicit determinism guarantee, which annotations cannot express. Minor redundancy with the safety hints keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (what it is, then when/not-for, then behavior and limits) and every clause is substantive. The cost is that the entire block is duplicated verbatim in Spanish and English, roughly doubling length without adding 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 single-parameter, read-only, deterministic tool with an existing output schema, nothing an agent needs is missing: algorithm variant, applicability, exclusion, side-effect profile, determinism, and size/time limits are all present.
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 single `text` parameter is fully documented, so the baseline is 3. The description does add the useful point that the code is computed per word ("de cada palabra"), which implies tokenization behavior not visible in the schema, but it adds no format or edge-case guidance for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Computes the American Soundex phonetic code (letter + 3 digits, with the H/W rule) of each word") and even names the algorithm variant and output shape. It explicitly scopes itself to English name matching, which separates it from the many other text tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit "When:" clause and an explicit "Not for:" clause pointing to the sibling jaro-winkler. The positive condition is somewhat generic ("transformed, compared or measured exactly") and doesn't say when Soundex beats, e.g., levenshtein-distance, but the named exclusion is a concrete routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sql-readonly-checkRevisar SQL de solo lecturaARead-onlyIdempotentInspect
Revisa estáticamente si un SQL solo lee: separa sentencias, ignora comentarios y textos entre comillas y marca palabras de escritura o DDL (también en CTE y SELECT … INTO), bloqueos, EXPLAIN ANALYZE y funciones riesgosas. Es heurístico; para imponerlo use roles de solo lectura. Cuándo: hay que revisar si un SQL de un modelo o de un usuario escribe datos antes de que llegue a una base de datos. No para: aplicar una expresión regular de JavaScript a un texto y listar cada coincidencia con posición y grupos (regex-test). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Statically checks whether SQL text only reads: splits statements, skips comments and quoted text, and flags write or DDL keywords (also inside CTEs and SELECT … INTO), locking clauses, EXPLAIN ANALYZE and risky functions. A heuristic;… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL text (any dialect) (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| caveat | No | |
| read_only | No | |
| statements | No | |
| statement_count | No | |
| multiple_statements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false, but the description adds valuable context beyond them: it is heuristic, not an enforcement mechanism; it has explicit limits (64 KB input, 1 s per call, 1 MB result); and it is deterministic. This gives the agent a clear operational 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?
The content is front-loaded and well-structured with clear sections for purpose, when, when-not, side effects, determinism, and limits. However, the description duplicates the same information in Spanish and English (with the English version partly deferred to the inputSchema description), which adds length without adding meaning for a single-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is complete: it covers purpose, heuristic caveats, explicit non-goals, limits, determinism, and side effects. An output schema exists, so the description need not explain return values, and the annotations cover safety and idempotency.
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 already explains that it expects SQL text (any dialect) with an example and maxLength. The description explains how the SQL is analyzed but does not add parameter-specific syntax or format details beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: statically checks whether SQL only reads, and enumerates exactly what it flags (write/DDL keywords, CTEs, SELECT INTO, locking, EXPLAIN ANALYZE, risky functions). It also explicitly names a sibling tool (regex-test) that it is not, so the agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('Cuándo: hay que revisar si un SQL... escribe datos antes de que llegue a una base de datos') and when not to use it ('No para: ... regex-test'). The alternative is named, and the heuristic limitation is stated with the recommended enforcement mechanism (read-only database roles).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-correlationCorrelación (Pearson, Spearman)ARead-onlyIdempotentInspect
Mide cómo se mueven juntas dos series de igual longitud: coeficiente de Pearson (lineal), de Spearman (por rangos, menos sensible a valores atípicos) y covarianza. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular el ajuste por mínimos cuadrados y = pendiente·x + intercepto, con R² y predicciones (stats-regression). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Measures how two equal-length series move together: the Pearson coefficient (linear), the Spearman coefficient (rank-based, less sensitive to outliers) and the covariance. When: a numeric result has to be exact or reproducible instead of estimated. Not for: least-squaring fit y = slope·x + intercept with R², standard error, and optional predictions for new x values (stats-regression). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X values (array of number; required; at least 2 items). | |
| y | Yes | Y values (array of number; required; at least 2 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| n | No | |
| pearson | No | |
| spearman | No | |
| covariance_sample | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely new behavioral context beyond the annotations: hard limits (64 KB input, 1 s per call, 1 MB result) that tell an agent when the call will fail on large series. The 'sin red, sin estado guardado' and determinism notes largely restate readOnlyHint/idempotentHint/openWorldHint, so it is value-adding but partly redundant with structured data.
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 what the tool computes, then consistently sectioned into When / Not for / Side effects / Deterministic / Limits, so an agent can skim the labels. It is longer than necessary because the whole block is duplicated bilingually and the side-effect sentence repeats annotation 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?
With a rich annotation set and an output schema, the description covers what is needed to select and invoke: computation outputs, exclusions, determinism, and runtime limits. Only the error behavior for mismatched or too-short series is left unstated, a minor gap for a two-array numeric 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 100% with per-property descriptions and examples, so the baseline is 3. The description lifts it by stating the equal-length constraint across x and y — a real validation rule the schema does not express — though it says nothing about the failure mode when lengths differ.
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 precise verb+resource (measures how two equal-length series move together) and enumerates exactly what is computed: Pearson, Spearman and covariance, including the semantic difference between them (linear vs. rank-based, outlier sensitivity). It contrasts itself with stats-regression by naming the sibling, so an agent can separate the two without inspecting 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?
Explicit 'Cuándo' condition (a numeric result must be exact/reproducible rather than estimated) plus an explicit 'No para' branch naming the alternative (stats-regression) and the operation it covers. Both use and exclusion are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-describeEstadística descriptivaARead-onlyIdempotentInspect
Calcula la estadística descriptiva: media, mediana, moda, mínimo, máximo, varianza y desviación estándar, cuartiles. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular percentiles (stats-percentile). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the count, sum, mean, median, mode(s), min, max, range, population and sample variance/standard deviation, and quartiles (linear method) of a list of numbers. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing one or more percentiles (stats-percentile). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Numbers (array of number; required; at least 1 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| q1 | No | |
| q3 | No | |
| max | No | |
| min | No | |
| sum | No | |
| mean | No | |
| mode | No | |
| count | No | |
| range | No | |
| median | No | |
| stddev_sample | No | |
| variance_sample | No | |
| stddev_population | No | |
| variance_population | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the simple hints provided in annotations, the description adds critical operational details, including low-level constraints like 'no network access,' 'no stored state,' and precise performance limits (64 KB input, 1 s call, 1 MB output).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly dense, balancing multiple complex features (functionality, limits, behavioral traits) into a single block. It is efficient but could be slightly more segmented for faster AI parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is exceptionally complete, covering functional scope, operational limits, safety profiles (read-only/deterministic), and the exact boundaries of its applicability relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds critical semantic context regarding the input, specifying it must be a JSON structure containing a list of numbers for calculation, rather than just a general list of numbers.
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 specifies the exact calculations performed (mean, median, mode, etc.). Crucially, it distinguishes itself by explicitly stating what it is NOT, referencing the sibling tool stats-percentile.
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 tightly governed by constraints: 'When' refers to needing exact/reproducible results, and 'Not for' immediately redirects the user to the correct alternative, stats-percentile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-forecastPronóstico por suavizado exponencialARead-onlyIdempotentInspect
Pronostica una serie numérica con suavizado exponencial simple, Holt (tendencia) o Holt-Winters aditivo (tendencia + estacionalidad). Los parámetros se dan o se eligen con una búsqueda en rejilla determinista que minimiza el SSE. Devuelve pronóstico, ajuste y MAE/RMSE/MAPE. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la media móvil simple (stats-moving-average). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Forecasts a numeric series with simple exponential smoothing, Holt (trend) or additive Holt-Winters (trend + season). Smoothing parameters are given or chosen by a deterministic grid search minimizing SSE. Returns forecasts, fitted values and MAE/RMSE/MAPE. When: a numeric result has to be exact or reproducible instead of estimated. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| beta | No | Trend smoothing 0-1 (number; optional; min 0; max 1). | |
| alpha | No | Level smoothing 0-1 (number; optional; min 0; max 1). | |
| gamma | No | Season smoothing 0-1 (number; optional; min 0; max 1). | |
| method | No | Method (optional; one of: ses, holt, holt_winters; default "holt"). | holt |
| series | Yes | Observations in time order (array of number; required; at least 3 items). | |
| horizon | No | Periods to forecast (integer; optional; default 3; min 1; max 1000). | |
| season_length | No | Season length (holt_winters) (integer; optional; min 2; max 366). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fitted | No | |
| method | No | |
| metrics | No | |
| forecast | No | |
| parameters | No | |
| parameters_chosen_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that parameters are fitted via deterministic grid search minimizing SSE, that output is fully reproducible, and by giving hard limits (64 KB input, 1 s per call, 1 MB result) which appear nowhere in the structured fields. Minor gap: it does not say what happens on invalid input (e.g. holt_winters without a sufficient season_length) since no error behavior is described.
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 method, then the fitting behavior, then when/when-not, then effects and limits — a clean, dense single block with no filler sentences. Slight deduction for the redundant bilingual pointer to inputSchema.description, which repeats the same text the agent already has.
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 spelled out, yet the description still names them (forecast, fitted values, MAE/RMSE/MAPE). Combined with method variants, fitting strategy, determinism and resource limits, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value: alpha/beta/gamma are not just 'optional 0-1' — if omitted they are chosen by the SSE-minimizing grid search, which tells the agent it can leave them out. It also flags season_length as holt_winters-specific. It stops short of explaining how season_length interacts with series length.
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 (forecast) plus the exact resource (numeric series) and enumerates the three concrete model variants (ses, holt, holt_winters) with what each captures. Explicitly names the sibling it is not (stats-moving-average), so an agent can pick it out of the large stats-* family without inspecting 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?
Provides an explicit 'Cuándo' condition (a numeric result must be exact/reproducible rather than estimated) and an explicit 'No para' exclusion pointing to the alternative stats-moving-average. That is the when / when-not / alternative triad in full.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-histogramHistogramaARead-onlyIdempotentInspect
Agrupa números en intervalos de igual ancho y devuelve conteos. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular percentiles (stats-percentile). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Buckets numbers into equal-width bins (count or explicit edges), returning bin ranges and counts; the last bin includes its upper edge. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing one or more percentiles (stats-percentile). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Upper bound (default data max) (number; optional). | |
| min | No | Lower bound (default data min) (number; optional). | |
| bins | No | Number of bins (integer; optional; default 10; min 1; max 1000). | |
| values | Yes | Numbers (array of number; required; at least 1 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bins | No | |
| outside | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds material context the annotations cannot express: no network, no stored state, determinism guarantees, and concrete operational limits (64 KB JSON input, 1 s per call, 1 MB result). No contradiction with the annotation 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?
Each individual sentence (when, not-for, side effects, determinism, limits) earns its place and the critical scoping leads. However, the entire block is duplicated verbatim in Spanish and English, roughly doubling length without adding information for a single reader.
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 side effects, determinism, limits, and the sibling routing are all covered for this small 4-parameter tool. The only incompleteness is the unsupported "explicit edges" capability claim, which the schema does not back.
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 documents min/max/bins/values fully, so the baseline is 3. The description adds the genuinely useful statement that the last bin is closed on its upper edge, but it also advertises "count or explicit edges" when the schema exposes no edges parameter — a claim that cannot be satisfied and may mislead.
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?
"Buckets numbers into equal-width bins ... returning bin ranges and counts" names a specific verb, the resource, and the exact output shape, and adds the non-obvious boundary rule (last bin includes its upper edge). It also explicitly separates itself from stats-percentile, so an agent can distinguish it from the ~15 other stats-* siblings 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?
Provides an explicit "When:" (result must be exact/reproducible rather than estimated) and an explicit "Not for:" naming the alternative tool (stats-percentile). This is the full when/when-not/alternative triad, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-meansMedias aritmética, geométrica y armónicaARead-onlyIdempotentInspect
Calcula media aritmética, geométrica, armónica, cuadrática y ponderada. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la estadística descriptiva de una lista de números (stats-describe). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes arithmetic, geometric and harmonic means (the latter two only for positive values), root mean square, and a weighted mean when weights are supplied. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing descriptive statistics of a list of numbers (stats-describe). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Numbers (array of number; required; at least 1 items). | |
| weights | No | Optional weights, same length (array of number; optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| harmonic | No | |
| weighted | No | |
| geometric | No | |
| quadratic | No | |
| arithmetic | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, and the description restates those. The added value is real though: hard limits (64 KB input, 1 s per call, 1 MB result) and the domain rule that geometric/harmonic require positive values — neither is discoverable from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation list, then labeled sections for usage, side effects, determinism and limits — highly scannable. The bilingual ES/EN duplication roughly doubles the length, and the side-effects/determinism sentences largely repeat the annotations, costing some efficiency.
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 rightly omitted, and the limits plus positivity constraint cover the main failure modes. The only gap is error behavior for mismatched weights or non-positive inputs to geometric/harmonic means, which an agent must infer.
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; the description exceeds it by explaining that weights trigger the weighted-mean mode and that values must be positive for the geometric/harmonic variants — behavioral meaning the schema's 'array of number' text does not convey. It does not state what happens on a weights/values length mismatch, which keeps it below 5.
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 the exact resource and enumerates the operations: arithmetic, geometric, harmonic, quadratic (RMS) and weighted means, plus the constraint that geometric/harmonic apply only to positive values. This is unambiguously distinguishable from stats-describe and stats-correlation in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When:' clause (a numeric result must be exact or reproducible, not estimated) and an explicit 'Not for:' clause naming the sibling stats-describe for descriptive statistics. This is the when/when-not/alternative triad in compact form.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-moving-averageMedia móvilARead-onlyIdempotentInspect
Calcula la media móvil simple (SMA) o exponencial (EMA) de una serie. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: pronosticar una serie numérica con suavizado exponencial simple, Holt (stats-forecast). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the simple (SMA) or exponential (EMA, alpha = 2/(window+1)) moving average of a series; SMA returns null until the window fills. When: a numeric result has to be exact or reproducible instead of estimated. Not for: forecasting a numeric series with simple exponential smoothing, Holt (stats-forecast). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type (optional; one of: sma, ema; default "sma"). | sma |
| values | Yes | Numbers (array of number; required; at least 1 items). | |
| window | Yes | Window size (integer; required; min 1; max 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| values | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: SMA returns null until the window fills, EMA uses alpha = 2/(window+1), and operational limits (64 KB input, 1 s per call, 1 MB result) are disclosed. Some sentences restate what annotations already declare (read-only/no side effects, determinism vs. idempotentHint=true), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded (purpose, then when/not-for, then effects, then limits), but the entire content is duplicated verbatim in Spanish and English, doubling length without adding information. Every sentence earns its place individually, but the payload is delivered twice.
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 pure computation with an output schema and full annotation coverage, the description covers purpose, routing, edge-case output (leading nulls), limits, and determinism. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns more by supplying the EMA window-to-alpha formula and the sma default, meaning the schema does not express. The `values` and `window` semantics are otherwise 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 and named resource (computes SMA or EMA of a series) and immediately names the sibling it is not (stats-forecast). An agent can distinguish it from stats-forecast, stats-means and stats-describe 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?
Explicitly gives the selection condition ("a numeric result has to be exact or reproducible instead of estimated") and the exclusion with the alternative tool named: not for forecasting with SES/Holt, use stats-forecast. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-outliers-iqrValores atípicos (IQR)ARead-onlyIdempotentInspect
Detecta valores atípicos fuera de las vallas de Tukey (Q1 − k·IQR, Q3 + k·IQR). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: estandarizar cada valor como puntuación z (stats-zscore). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Detects outliers outside Tukey fences Q1 − k·IQR and Q3 + k·IQR (k = 1.5 default, 3 for extreme), using linear quartiles. When: a numeric result has to be exact or reproducible instead of estimated. Not for: standardizing each value as a z-score (stats-zscore). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Fence multiplier (number; optional; default 1.5; min 0; max 10). | |
| values | Yes | Numbers (array of number; required; at least 4 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| q1 | No | |
| q3 | No | |
| iqr | No | |
| outliers | No | |
| lower_fence | No | |
| upper_fence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, closed-world behavior, and the description adds concrete context beyond them: determinism (same input → same output), no network, no stored state, plus hard limits (64 KB input, 1 s per call, 1 MB result). These operational bounds are exactly what an agent needs and are not derivable from 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?
Content is front-loaded and each ES sentence is useful, but the entire block is duplicated verbatim in English, roughly doubling length without adding information for the agent. The bilingual redundancy costs conciseness even though structure and ordering are sound.
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 2-parameter deterministic read tool with an output schema, the description covers what is computed, when to use it, the alternative, side effects, determinism, and input/output limits. Return-value details are correctly left to the output schema, so nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, giving a baseline of 3. The description adds practical meaning by explaining k as a fence multiplier where 1.5 is default and 3 selects extreme outliers, which goes beyond the schema's mechanical min/max/default statements.
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 operation with the exact formula (Tukey fences Q1 − k·IQR, Q3 + k·IQR) and the default multiplier, so the agent knows precisely what is computed. It explicitly names stats-zscore as the tool this is not, letting the agent distinguish siblings 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?
Provides an explicit 'Cuándo' (when a numeric result must be exact/reproducible rather than estimated) and an explicit 'No para' routing the agent to stats-zscore for z-score standardization. Both the selection condition and the exclusion are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-percentilePercentiles y cuantilesARead-onlyIdempotentInspect
Calcula percentiles (0-100) con método seleccionable (lineal, exclusivo, rango más cercano). Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: calcular la estadística descriptiva de una lista de números (stats-describe). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes one or more percentiles (0-100) of a list of numbers with a selectable method (linear = Excel PERCENTILE.INC / numpy default, exclusive, nearest_rank). When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing descriptive statistics of a list of numbers (stats-describe). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Percentile method: linear (Excel PERCENTILE.INC, numpy default), exclusive (PERCENTILE.EXC), nearest_rank (optional; one of: linear, exclusive, nearest_rank; default "linear"). | linear |
| values | Yes | Numbers (array of number; required; at least 1 items). | |
| percentiles | No | Percentiles 0-100 (array of number; optional; default [25,50,75,90,95,99]; at least 1 items; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the 'no side effects / read-only / no network / no stored state / deterministic' sentences largely restate structured data. What genuinely adds value is the operational envelope: 64 KB JSON input, 1 s per call, 1 MB result cap — hard limits the annotations cannot express. It stops short of describing error behavior when limits are exceeded.
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?
Labeled, front-loaded sections (Cuándo / No para / Efectos / Determinista / Límites) make it skimmable, and every clause is a discrete fact. The cost is full Spanish/English duplication, which roughly doubles token length for the same information — wasteful but not disorganized.
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 supplies the resource limits, determinism guarantee, and the sibling boundary. For a 3-parameter, single-purpose statistics tool this covers everything an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the method enum with its Excel/numpy equivalences, the 0-100 percentile bounds, and the default set. The description repeats the method names and percentile range but adds no syntax, ordering, or edge-case guidance (e.g. behavior when percentiles are non-integers or values are unsorted). Baseline 3 is appropriate when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (computes percentiles 0-100 of a list of numbers) plus the method selection, and explicitly contrasts with the sibling stats-describe. An agent can distinguish it from stats-describe, stats-means, or stats-histogram 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?
Uses explicit 'When:' (a numeric result must be exact or reproducible, not estimated) and 'Not for:' (descriptive statistics of a list → stats-describe) routing. The alternative sibling is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-regressionRegresión lineal simpleARead-onlyIdempotentInspect
Calcula el ajuste por mínimos cuadrados y = pendiente·x + intercepto, con R² y predicciones. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: medir cómo se mueven juntas dos series de igual longitud (stats-correlation). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Least-squares fit y = slope·x + intercept with R², standard error, and optional predictions for new x values. When: a numeric result has to be exact or reproducible instead of estimated. Not for: measuring how two equal-length series move together (stats-correlation). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X values (array of number; required; at least 2 items). | |
| y | Yes | Y values (array of number; required; at least 2 items). | |
| predict | No | X values to predict (array of number; optional; default []; up to 1000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slope | No | |
| intercept | No | |
| r_squared | No | |
| predictions | No | |
| standard_error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, so the description's 'no side effects' restates them. It does add genuinely new behavior: determinism guarantees (same input → same output) and hard limits (64 KB JSON input, 1 s per call, 1 MB result) that an agent needs before sending a large array. Output format detail is carried by the output schema.
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 operation and formula, then conditionally ordered (when / not for / effects / limits). It is verbose because the content is duplicated in Spanish and English, which is intentional for bilingual routing, but the same agent reads both halves.
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 three simple flat parameters, full schema coverage, an output schema, and rich annotations, the description covers purpose, alternatives, determinism, and resource limits. Nothing essential for correct invocation is missing; only minor detail such as handling of unequal-length x/y (assumed equal-length) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each property already documents type, requiredness, minimum/maximum items, and default. The description only adds that predict targets 'new x values', which is a marginal addition over 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 operation (least-squares fit) with the exact model form y = slope·x + intercept and the outputs (R², standard error, predictions). It also explicitly names the sibling it must not be confused with (stats-correlation), so an agent can differentiate 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?
Provides an explicit 'When' rule (numeric result must be exact/reproducible rather than estimated) and an explicit 'Not for' rule pointing to stats-correlation for co-movement of two equal-length series. Both the positive and negative selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats-zscorePuntuaciones ZARead-onlyIdempotentInspect
Estandariza valores como (x − media) / desviación y marca los que superan un umbral. Cuándo: un resultado numérico tiene que ser exacto o reproducible y no estimado. No para: detectar valores atípicos fuera de las vallas de Tukey (stats-outliers-iqr). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Standardizes each value as (x − mean) / stddev (population or sample), and flags values whose |z| exceeds a threshold. When: a numeric result has to be exact or reproducible instead of estimated. Not for: detecting outliers outside Tukey fences Q1 − k·IQR and Q3 + k·IQR (stats-outliers-iqr). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| sample | No | Use sample stddev (boolean; optional; default false). | |
| values | Yes | Numbers (array of number; required; at least 2 items). | |
| threshold | No | Outlier |z| threshold (number; optional; default 3; min 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| z | No | |
| mean | No | |
| stddev | No | |
| outliers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, but the description adds concrete operational context: no side effects, no network, no stored state, deterministic output, and limits of 64 KB input, 1 s per call, and 1 MB result. It also clarifies population-vs-sample behavior, which has practical consequences for the computation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well organized with explicit labels for when, not-for, side effects, determinism, and limits, and the core formula is front-loaded. The only conciseness cost is the full bilingual duplication, which doubles the text even though the English and Spanish sections carry the same 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 that an output schema exists, the description need not explain return values, and it already covers limits, side effects, determinism, and alternative routing. With complete schema coverage and rich annotations, the definition gives the agent everything needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents values, sample, and threshold. The description still adds useful semantic detail: it gives the standardization formula, mentions population or sample stddev, and explains that threshold flags values whose |z| exceeds it, which clarifies the threshold direction beyond the schema text.
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 and formula: standardizes values as (x − mean) / stddev and flags values whose |z| exceeds a threshold. It explicitly distinguishes the tool from stats-outliers-iqr, so an agent can identify the correct 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?
It states exactly when to use it (when a numeric result must be exact or reproducible rather than estimated) and explicitly says when not to use it, naming stats-outliers-iqr as the alternative for Tukey-fence outliers. This is a clear routing instruction with an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sun-timesAmanecer, atardecer y duración del díaARead-onlyIdempotentInspect
Calcula la salida y puesta del sol, mediodía solar, crepúsculo civil y duración del día (aprox. ±1-2 min) para una ubicación y fecha. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: convertir entre UTC y fechas julianas (julian-day). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the approximate sunrise, sunset, solar noon, civil twilight and day length for a latitude/longitude and date (astronomical formulas, about ±1-2 min), shown in UTC and a chosen time zone. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: converting between UTC and Julian dates (julian-day). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| latitude | Yes | Latitude (number; required; min -90; max 90). | |
| timezone | No | IANA time zone, e.g. America/Bogota (default UTC) (string; optional; default "UTC"; up to 64 chars). | UTC |
| longitude | Yes | Longitude (number; required; min -180; max 180). |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| polar | No | |
| sunset | No | |
| sunrise | No | |
| timezone | No | |
| civil_dawn | No | |
| civil_dusk | No | |
| solar_noon | No | |
| day_length_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description still adds real context: no network, no stored state, determinism, ±1-2 min accuracy, and hard limits (64 KB input, 1 s, 1 MB result). Minor redundancy in restating 'solo lectura' keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled structure (Cuándo / No para / Efectos / Límites) is well front-loaded, but the entire content is duplicated verbatim in Spanish and English, effectively doubling length without adding information. Every sentence earns its place individually, yet half of them are repeats.
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; the description still covers computations, accuracy, limits and exclusions, which is enough for a 4-parameter read-only tool. The lone soft spot is the 'Cuando' framing, which implies exactness for a tool that is itself approximate (±1-2 min).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (date, latitude, longitude, timezone with default UTC) is documented in the schema itself. The description only gestures at 'a latitude/longitude and date' and 'a chosen time zone', adding no syntax or format detail beyond that.
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 set (sunrise, sunset, solar noon, civil twilight, day length) with the inputs (latitude/longitude, date) and an accuracy bound (±1-2 min). It also names the sibling it is not for (julian-day), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' section gives the triggering condition (date/time-zone/calendar results that must be exact: DST, month ends, leap years) and an explicit 'No para' exclusion pointing at julian-day. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift-bic-validateValidar SWIFT/BICARead-onlyIdempotentInspect
Verifica la sintaxis de un código SWIFT/BIC (ISO 9362) y lo separa en partes; no confirma que el banco exista. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un IBAN (iban-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks SWIFT/BIC code syntax (ISO 9362: 4-letter institution, 2-letter country, 2-char location, optional 3-char branch) and splits it into parts. Does not confirm the bank exists. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating an IBAN (iban-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| bic | Yes | BIC (string; required; up to 16 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bic11 | No | |
| valid | No | |
| branch | No | |
| country | No | |
| location | No | |
| test_bic | No | |
| institution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/idempotent, and the description still adds substantive context beyond them: no network access, no stored state, determinism ('la misma entrada da la misma salida'), an explicit semantic limit (does not confirm bank existence), and concrete operational limits (64 KB input, 1 s per call, 1 MB result). That is exactly the kind of disclosure 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?
Content is front-loaded and labeled (Cuándo / No para / Efectos secundarios / Determinista / Límites), so an agent can scan straight to the routing cue. The ES/EN duplication doubles the token footprint without adding information, which is the only thing keeping it off a 5.
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 is right not to enumerate return fields, and every other decision-relevant fact for a single-input validator — offline scope, determinism, size/time limits, semantic ceiling — is present. 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, and the description goes further by decomposing the expected value into its ISO 9362 components (4-letter institution, 2-letter country, 2-char location, optional 3-char branch). That tells an agent what a well-formed input looks like, though it does not address the schema's maxLength of 16 against the 8/11-char reality.
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 ('Verifica la sintaxis de un código SWIFT/BIC (ISO 9362)') and adds the exact output behavior ('lo separa en partes'). It also draws an explicit negative boundary ('no confirma que el banco exista') and names the confusable sibling iban-validate, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Cuándo' clause gives the selecting condition (offline format/check-digit verification before using an identifier) and the 'No para' clause names the alternative tool (iban-validate) for the adjacent use case. Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template-renderRellenar plantilla MustacheARead-onlyIdempotentInspect
Rellena una plantilla Mustache (subconjunto sin lógica): variables escapadas para HTML, nombres con punto, secciones, bucles sobre listas, secciones invertidas y comentarios. Sin parciales, lambdas ni código. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: rellenar marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados (prompt-template-fill). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Renders a logic-less Mustache template subset: {{variables}} (HTML-escaped; {{{raw}}} and {{&raw}} unescaped), dotted names, {{#sections}} and loops over lists, {{^inverted}} sections and comments. No partials, lambdas or code; output is bounded. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | View data (object) (object; optional). | |
| strict | No | Fail when a variable or section name is missing (boolean; optional; default false). | |
| template | Yes | Mustache template (string; required). | |
| escape_html | No | HTML-escape {{variables}} (Mustache default) (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| length | No | |
| output | No | any JSON value |
| missing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is free; the description adds real value on top with hard limits (64 KB input, 1 s per call, 1 MB output) and a determinism guarantee. The 'sin efectos secundarios / sin red / sin estado' sentence largely restates the annotations rather than extending them, which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish text is dense and front-loads the feature list, but the description then repeats itself as a parallel EN block that adds no new information and even self-references '[EN completo / full EN: inputSchema.description]'. That meta-pointer and the duplication consume space without earning it.
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 tool with a nested object input and an existing output schema, the description supplies everything an agent still needs: supported template syntax, explicit exclusions, when/when-not, side-effect profile, size and time limits, and determinism. Return shape can be safely omitted because an output schema exists.
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; the description does clarify escaping semantics ({{var}} escaped vs {{{raw}}}/{{&raw}} unescaped), which gives meaning to escape_html. However, the 'strict' switch — the parameter most likely to cause unexpected failures — is never mentioned in the description, and data/template typing is left entirely 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 and resource (render a Mustache template) and immediately bounds the feature subset: variables with HTML escaping, raw braces, dotted names, sections, list loops, inverted sections, comments, and explicit exclusions (no partials, lambdas or code). It also names the sibling template-render is not (prompt-template-fill), so an agent can disambiguate 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?
Explicit 'Cuándo' list enumerates concrete scenarios (URLs, HTTP headers, tokens, versions, IP ranges, HTML/Markdown, agent files) and an explicit 'No para' that routes placeholder filling to prompt-template-fill. Both the inclusion and exclusion conditions are stated, which is the top of the scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-dedentQuitar sangría comúnARead-onlyIdempotentInspect
Elimina la sangría común de todas las líneas no vacías. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: anteponer un prefijo a cada línea (text-indent). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Removes the common leading whitespace from every non-blank line (like Python textwrap.dedent); tabs and spaces are not mixed. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: prefixing every line (text-indent). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive, yet the description still adds real value: determinism, no network or stored state, and concrete limits (64 KB input, 1 s, 1 MB output). One friction point: the stated 64 KB JSON input cap sits in tension with the schema's maxLength of 262144, which could make an agent over-restrict input sizes. Minor, but it keeps this below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each version is front-loaded and tight—purpose, when, not-for, side effects, limits—with no filler sentences. The cost is that the identical content is presented twice (ES and EN), which roughly doubles length for an English-reading agent without adding 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 single-parameter pure function with an output schema, annotations and full schema coverage, the definition supplies everything else an agent needs: scope, alternative tool, side-effect profile, determinism and operating limits.
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 required parameter at 100% schema coverage, so the schema already documents it fully. The description adds only the semantic note that tabs and spaces are not mixed, which is a behavior of the transform rather than guidance on the 'text' argument itself; 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 and resource ('removes the common leading whitespace from every non-blank line') and anchors it to a known reference implementation (Python textwrap.dedent). It also distinguishes itself from the nearest sibling, text-indent, so an agent can pick correctly 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?
Explicitly gives a when clause ('text has to be transformed, compared or measured exactly instead of approximated') and a when-not clause naming the alternative ('Not for: prefixing every line (text-indent)'). Nothing about selection 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.
text-indentAgregar sangríaARead-onlyIdempotentInspect
Antepone un prefijo a cada línea (o solo a las no vacías). Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: eliminar la sangría común de todas las líneas no vacías (text-dedent). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Prefixes every line (or only non-blank lines) with a given string, e.g. spaces, tabs or "> ". When: text has to be transformed, compared or measured exactly instead of approximated. Not for: removing the common leading whitespace from every non-blank line (text-dedent). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). | |
| prefix | No | Prefix (string; optional; default " "; up to 64 chars). | |
| skip_blank | No | Leave blank lines untouched (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the "no side effects / deterministic" sentences largely restate structured data. The description does add genuinely new behavioral data: per-call resource limits (64 KB input, 1 s, 1 MB result). Note the stated 64 KB input cap sits below the schema's 262144-char maxLength, a soft inconsistency worth flagging but not an annotation contradiction.
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 verb and scope, then clearly labeled sections (Cuándo / No para / Efectos / Determinista / Límites) that scan well. The full bilingual duplication roughly doubles length, which is defensible for discoverability but is not maximally economical.
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 the description covers scope, alternative, safety, determinism and limits. Only minor gaps remain, e.g. how trailing newlines or an empty final line are treated.
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 baseline is 3; the description goes slightly beyond by giving concrete prefix examples (spaces, tabs, "> ") and by making the skip_blank toggle explicit in prose ("o solo a las no vacías"). It does not explain defaults, which the schema already carries.
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 ("Antepone un prefijo a cada línea") with the exact scope qualifier "o solo a las no vacías", and explicitly names the opposite operation text-dedent. An agent can distinguish this from text-dedent and text-pad without reading 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?
Has explicit "Cuándo" (when to use: exact transformation/comparison/measurement instead of approximation) and "No para" (when not: use text-dedent to strip common leading whitespace), naming the alternative sibling by name. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-invisible-scanBuscar caracteres invisiblesARead-onlyIdempotentInspect
Detecta caracteres invisibles (ancho cero, control bidi, etiquetas Unicode) que pueden ocultar instrucciones, y decodifica el texto oculto. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: eliminar caracteres invisibles (text-invisible-strip). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds zero-width, bidi-control, Unicode tag and other invisible characters (often used to hide instructions in text) and decodes any hidden tag-character text. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: removing zero-width, bidi-control, Unicode tag and other invisible format characters (text-invisible-strip). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| counts | No | |
| findings | No | |
| hidden_tag_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive, and the description goes further by adding determinism guarantees and concrete operational limits (input size, 1 s per call, result size). These are exactly the runtime constraints an agent needs and are not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish text is front-loaded and well structured with labeled When / Not for / Side effects / Deterministic / Limits segments. The trailing full-English restatement duplicates the same content inside a single field, adding bulk without new 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 need not explain return values, and it still covers safety profile, determinism, resource limits and sibling routing. Only the input-size mismatch with the schema slightly undercuts an otherwise complete picture.
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 there is a single required `text` parameter, so the schema already carries parameter meaning and baseline 3 applies. The description adds no parameter-level detail, and its stated 64 KB input limit conflicts with the schema's maxLength of 1,048,576, which could mislead on size.
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: detects invisible characters (zero-width, bidi control, Unicode tags) and decodes hidden tag text. It also names the adjacent capability it is not (text-invisible-strip), so the agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When:' condition (text must be transformed, compared or measured exactly) and an explicit 'Not for:' routing the removal case to text-invisible-strip. Both inclusion and exclusion are stated, which is the top bar for this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-invisible-stripQuitar caracteres invisiblesARead-onlyIdempotentInspect
Elimina caracteres invisibles; opcionalmente conserva ZWJ y selectores de variación para no romper emojis. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: detectar caracteres invisibles (text-invisible-scan). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Removes zero-width, bidi-control, Unicode tag and other invisible format characters; optionally keeps ZWJ (U+200D) and variation selectors so emoji sequences survive. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: finding zero-width, bidi-control, Unicode tag and other invisible characters (text-invisible-scan). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| keep_emoji_joiners | No | Keep U+200D and variation selectors (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| removed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the hints provided in annotations, the description details crucial behavioral traits: 'Deterministic' behavior, 'no network access', 'no stored state', and defines concrete operational limits for input and output size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is expertly structured, front-loading the function, followed by context (When/Not For), behavioral limits (Side effects/Limits), and technical constraints (Deterministic).
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 definition is fully comprehensive. Given the detailed schema and annotations, it covers all necessary logic for correct selection and invocation, including operational boundaries and relationship with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds critical context by explaining that 'keep_emoji_joiners' is used 'so emoji sequences survive,' which gives semantic depth to the optional boolean parameter that the schema description alone does not provide.
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 is immediately clear, specifying that the tool eliminates zero-width, bidi-control, Unicode tag, and other invisible format characters using a specific action verb ('Removes').
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 usage guidelines are extremely precise, stating that it should be used 'When' text needs exact comparison or measurement, and explicitly stating what it should *not* be used for, referencing the sibling tool (text-invisible-scan).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-metricsEstadísticas de textoARead-onlyIdempotentInspect
Cuenta caracteres, bytes, palabras, oraciones, líneas y párrafos, y estima el tiempo de lectura. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: calcular las métricas de legibilidad: LIX y RIX (readability-score). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts characters (code points and graphemes), bytes, words, sentences, lines and paragraphs, using Unicode segmentation, plus an estimated reading time at 238 words per minute. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the language-agnostic LIX and RIX scores plus estimated Flesch Reading Ease (readability-score). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | No | |
| words | No | |
| graphemes | No | |
| sentences | No | |
| bytes_utf8 | No | |
| characters | No | |
| paragraphs | No | |
| characters_no_spaces | No | |
| reading_time_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world, but the description adds genuinely non-derivable facts: no network access, no stored state, determinism guarantee, 1 s per call, result up to 1 MB. It does not explain output shape, though an output schema exists, so this is appropriately scoped rather than exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core English content is front-loaded and dense, but the block is bilingual and the English section is truncated as '[EN completo / full EN: inputSchema.description]', which is wasted text that just redirects to a field already supplied. The 64 KB / 1 MB mismatch also adds noise rather than 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 one-parameter deterministic counting tool with full annotations and an output schema, the description covers purpose, exclusions, side effects, determinism and operational limits — nearly everything needed to call it correctly. The only gap is the conflicting input-size ceiling (64 KB vs schema's 1 MB), which could mislead an agent sizing its input.
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?
Single required parameter with 100% schema coverage, so the schema documents 'text' and carries constraints. The description adds counting semantics (Unicode graphemes vs code points) that affect what the string means, but says nothing parameter-specific. Notably, it states a 64 KB JSON input limit while the schema declares maxLength 1048576, leaving conflicting size ceilings.
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 the exact metrics produced (code points, graphemes, bytes, words, sentences, lines, paragraphs, reading time at 238 wpm), plus the Unicode segmentation algorithm. It explicitly distinguishes itself from readability-score, so an agent can pick between the two 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?
Uses explicit 'When:' and 'Not for:' clauses, and names the alternative sibling (readability-score) with the reason it is different (LIX/RIX/Flesch scores). The selection condition is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-normalize-whitespaceNormalizar espaciosARead-onlyIdempotentInspect
Colapsa espacios, recorta líneas, normaliza saltos de línea y espacios Unicode. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: aplicar normalización Unicode NFC, NFD, NFKC o NFKD (unicode-normalize). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Collapses runs of spaces/tabs, trims each line, normalizes CRLF/CR to LF, converts non-breaking and other Unicode spaces to ASCII space and limits consecutive blank lines. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: applying Unicode normalization form NFC, NFD, NFKC or NFKD and reporting whether the text changed (unicode-normalize). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). | |
| max_blank_lines | No | Max consecutive blank lines (integer; optional; default 1; min 0; max 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, but the description adds real value beyond them: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB output). One caveat: the stated 64 KB input cap sits awkwardly against the schema's maxLength of 262144 characters, which an agent could read as a conflict.
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 exact behavior, then labeled When/Not-for/Side-effects/Deterministic/Limits sections. The bilingual duplication is somewhat costly, though the full English text is deferred to inputSchema.description rather than repeated inline.
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 explanation is unnecessary, and the description covers behavior, exclusion, determinism and operational limits. The only gap is the tension between the stated 64 KB limit and the schema's 262144-character maxLength, which is left unreconciled.
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 both parameters are fully documented in the schema (including max_blank_lines default 1, min 0, max 10). The description only alludes to the blank-line cap as part of the behavior, adding no syntax or edge-case detail beyond the structured field. 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 the exact transformations performed (collapse space/tab runs, trim each line, CRLF/CR→LF, Unicode spaces→ASCII, cap blank lines) rather than a vague 'normalize'. It explicitly distinguishes itself from the unicode-normalize sibling, so an agent can route between them 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?
Has explicit 'When' (exact transformation/comparison/measurement rather than approximation) and 'Not for' (Unicode normalization forms NFC/NFD/NFKC/NFKD, naming unicode-normalize as the alternative). The positive 'when' is a bit generic and other adjacent siblings (text-invisible-strip, text-dedent, text-indent) are not addressed, but the exclusion is decisive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-padRellenar textoARead-onlyIdempotentInspect
Rellena texto hasta un ancho dado a la izquierda, derecha o ambos lados. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: acortar un texto a una longitud máxima (text-truncate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Pads text to a target width in graphemes on the left, right or both sides with a fill string. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: shortening text to a maximum length (text-truncate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | Fill (string; optional; default " "; at least 1 chars; up to 8 chars). | |
| side | No | Side (optional; one of: left, right, both; default "left"). | left |
| text | Yes | Text (string; required; up to 4096 chars). | |
| width | Yes | Target width (integer; required; min 0; max 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, yet the description still adds real behavioral context: no network, no stored state, determinism, and concrete limits (64 KB JSON input, 1 s per call, 1 MB result). The grapheme-based width semantics is a further behavioral detail absent from the schema keywords.
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, then cleanly labeled clauses (When / Not for / Side effects / Deterministic / Limits) with zero filler. It loses a point only because the whole block is duplicated in Spanish and English, roughly doubling length for a single-purpose tool.
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 fully described in the schema. Combined with stated time, size and input limits and explicit safety/determinism notes, nothing an agent needs before calling 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 parameters are already documented and the baseline is 3. The description still contributes the unit that matters most: width is measured in graphemes, not code units or bytes, which changes how an agent sizes its inputs.
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: 'Pads text to a target width in graphemes on the left, right or both sides with a fill string.' It also names the scope (graphemes, three sides) and distinguishes itself from the nearest sibling by ruling out text-truncate, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When:' clause ('text has to be transformed, compared or measured exactly instead of approximated') and explicit 'Not for:' clause naming the alternative text-truncate. Both the trigger condition and the exclusion are spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-redact-piiOcultar datos personales y secretosARead-onlyIdempotentInspect
Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo: hay que ocultar datos personales (correos, teléfonos, documentos, tarjetas) en un texto antes de registrarlo o enviarlo a un modelo. No para: extraer direcciones de correo de un texto (extract-emails). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Masks common personal data and secrets in text: emails, phone numbers, Luhn-valid card numbers, IBANs, IPv4 addresses, JWTs, API keys (sk-, AKIA, ghp_, xox, AIza) and PEM private keys. Pattern-based; may miss or over-match. When: personal data (emails, phones, IDs, cards) has to be masked in text before it is logged or sent to a model. Not for: finding email-like addresses in text (extract-emails). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| style | No | Replacement (optional; one of: label, mask; default "label"). | label |
| types | No | Types to redact (array of string; optional; default ["email","jwt","api_key","private_key","iban","card","ip","phone"]; at least 1 items; up to 8 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| total | No | |
| redactions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive/openWorld=false, and the description adds context they cannot carry: pattern-based detection that may miss or over-match, determinism guarantee, no network, no stored state, plus hard limits (64 KB input, 1 s per call, 1 MB result). That is exactly the added behavioral value expected.
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?
Content is well front-loaded with labeled sections, but the same information is delivered twice (Spanish block then English block) and a third time via the pointer to inputSchema.description, roughly doubling the necessary length. Every sentence earns its place, yet the duplication does not.
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 3-parameter, read-only transform with an output schema, the description covers purpose, alternatives, safety profile, determinism and size/time limits — everything an agent needs before calling it. Return values need not be described since an output schema exists.
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 enum for `types` is fully documented in the schema, so the baseline of 3 applies. The description's enumeration of detectable data types loosely maps to the `types` values but never explains `style` (label vs mask) or how `types` narrows detection.
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+resource ('Enmascara datos personales y secretos en un texto') and enumerates exactly what is detected (emails, Luhn cards, IBANs, IPv4, JWTs, sk-/AKIA/ghp_/xox/AIza API keys, PEM keys). It explicitly separates itself from the nearest sibling by naming extract-emails as the tool for extracting rather than masking.
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?
Uses explicit 'Cuándo' / 'No para' sections: mask before logging or sending text to a model, and not for finding email-like addresses (route to extract-emails instead). Both the positive trigger and the exclusion are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-reverseInvertir textoARead-onlyIdempotentInspect
Invierte el texto por grafemas, sin romper emojis ni tildes. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: invierter mayúsculas y minúsculas de cada letra (case-swap). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Reverses text by grapheme clusters so emoji, flags and accented letters stay intact. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: inverting the case of every letter (case-swap). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint, and destructiveHint=false. The description adds useful behavior beyond annotations: grapheme-level handling, deterministic output, and operational limits, though it also repeats some annotation-covered safety points.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded and the description uses clear labeled sections for when, not-for, side effects, determinism, and limits. It is somewhat longer than necessary because the Spanish and English text duplicate the same 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 does not need to explain return values. It still covers the key invocation context an agent needs: grapheme-safe reversal, intended use, exclusion, determinism, side effects, and limits.
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 single text parameter is already documented. The description still adds meaning by explaining grapheme-cluster semantics and input/output limits beyond the schema's basic string definition.
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: reversing text by grapheme clusters. It explicitly distinguishes the behavior from case-swap, so an agent can identify the tool without inspecting 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 gives explicit when-to-use guidance (exact transformation, comparison, or measurement rather than approximation) and a clear not-for case (case-swap). The sibling alternative is named directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-slugCrear slugARead-onlyIdempotentInspect
Genera un slug para URL: quita tildes, pasa a minúsculas y reemplaza símbolos por un separador. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: crear un slug desde texto en español sin convertir ñ en n (es-slug). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Makes a URL slug: transliterates accents and common ligatures to ASCII, lowercases, replaces non-alphanumerics with a separator, and trims to a max length at a word boundary. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: building a URL slug from Spanish text without collapsing ñ into n (es-slug). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required; up to 4096 chars). | |
| lowercase | No | Lowercase (boolean; optional; default true). | |
| separator | No | Separator (optional; one of: -, _, .; default "-"). | - |
| max_length | No | Max length (integer; optional; default 80; min 1; max 512). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, non-destructive, so the safety restatement adds little. The description does earn credit for genuinely new behavioral facts: deterministic output, word-boundary trimming to max length, and concrete limits (64 KB input, 1 s per call, 1 MB result) that an agent cannot infer from 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?
Well front-loaded: the operation comes first, then when/when-not, then effects, determinism and limits. It is somewhat bloated by the full EN restatement of the ES text and by the vague "exactitud" usage sentence, so it is not 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?
Rich annotations, 100% schema coverage and an output schema mean the description need not explain return values; given that, it covers everything an agent needs — transformation semantics, the sibling alternative, side-effect profile, determinism and hard limits.
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 adds real semantics for max_length by explaining that truncation happens at a word boundary, and it clarifies that lowercase/separator are applied as part of a fixed transliteration-then-replace pipeline rather than arbitrary tweaks.
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 and enumerates the transformation pipeline: strip accents, transliterate ligatures to ASCII, lowercase, replace non-alphanumerics with a separator, trim at a word boundary. It also names the sibling it is not (es-slug, which collapses ñ into n), so an agent can distinguish it 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 "No para" line is precise: it names the actual alternative (es-slug) and the exact condition that selects it (Spanish text where ñ must be preserved). The "Cuándo" line, however, is generic boilerplate ("transform, compare or measure text exactly") that does not really help an agent decide when a slug tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-split-pickDividir texto y tomar una parteARead-onlyIdempotentInspect
Divide un texto por un delimitador (texto literal, salto de línea o tabulador) y devuelve todas las partes, la primera, la última o la n-ésima, con recorte y descarte de vacías opcionales. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: conservar o quitar líneas enteras que contienen una subcadena (lines-filter). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Splits text on a delimiter (literal text, or newline / tab) and returns all parts, the first, the last or the n-th (1-based; negative counts from the end), optionally trimming parts and dropping empty ones. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: keeping or dropping whole lines that contain a substring (lines-filter). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Position for pick "nth" (1-based; -1 is the last) (integer; optional; min -100000; max 100000). | |
| pick | No | Which part(s) (optional; one of: all, first, last, nth; default "all"). | all |
| text | Yes | Text (string; required). | |
| trim | No | Trim whitespace around parts (boolean; optional; default true). | |
| delimiter | No | Delimiter; "\n"/"newline" and "\t"/"tab" are special (string; optional; default ","; at least 1 chars; up to 100 chars). | , |
| max_parts | No | Stop after this many parts (integer; optional; default 10000; min 1; max 100000). | |
| remove_empty | No | Drop empty parts (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| index | No | |
| parts | No | |
| value | No | any JSON value |
| truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, and the description reinforces those while adding genuinely new operational context: per-call latency (1 s), result size (1 MB) and input size. That added context is real value beyond structured fields. One caveat: the stated '64 KB' input limit conflicts with the schema's text maxLength of 1,048,576 characters, which could mislead on payload size.
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 core operation, then when/not-for, then side effects and limits — a sensible order with no filler. It is somewhat long because the same content is given in Spanish and English, but every clause carries information (the English copy is also duplicated inside inputSchema.description).
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 stateless 7-parameter string tool with an output schema already covering return shape, the description supplies everything else an agent needs: scope, exclusions, determinism, absence of side effects, and hard time/size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already fully documented and the baseline is 3. The description restates the delimiter specials (newline/tab) and the 1-based/negative n semantics that the schema also covers, but never mentions max_parts (default 10000), which is the one parameter whose effect on output volume matters most.
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 and resource ('divide un texto por un delimitador') plus the exact return modes (all / first / last / n-th) and the optional trim and remove-empty behaviors. It explicitly contrasts itself with the closest sibling, lines-filter, so an agent can distinguish the two 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?
Provides an explicit 'Cuándo' section and a precise 'No para' exclusion naming lines-filter as the alternative, which is the main disambiguation risk in this family. The positive condition ('transformar, comparar o medir un texto con exactitud y no por aproximación') is a little abstract, so the trigger is clearer by exclusion than by inclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-truncateRecortar textoARead-onlyIdempotentInspect
Acorta texto a un máximo de caracteres (grafemas) o palabras, con puntos suspensivos. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: ajustar texto a un ancho máximo de línea respetando saltos existentes (text-wrap). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Shortens text to a maximum number of graphemes or words, optionally at a word boundary, appending an ellipsis that counts toward the limit. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: wrapping text to a maximum line width (text-wrap). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| max | Yes | Maximum length (integer; required; min 1; max 100000). | |
| text | Yes | Input text (string; required). | |
| unit | No | Unit (optional; one of: graphemes, words; default "graphemes"). | graphemes |
| ellipsis | No | Suffix when truncated (string; optional; default "…"; up to 10 chars). | … |
| word_boundary | No | Cut at word boundary (graphemes mode) (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so restating 'read-only, no network, no stored state' is partly redundant. The added value is the concrete operating envelope (64 KB JSON input, 1 s per call, 1 MB result) and the determinism guarantee, which annotations do not express. Minor tension: the 64 KB input cap is stricter than the schema's 262144-char text maxLength, which an agent may notice.
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?
Each language version is front-loaded and wastes nothing: purpose, when, when-not, side effects, limits. The cost is that the entire block is duplicated in Spanish and English, roughly doubling length for an agent that only needs one.
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. With purpose, routing exclusion, determinism, side-effect profile and hard limits all present, nothing an agent needs to invoke this 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 earns more by specifying that the ellipsis counts toward the limit and that word-boundary cutting applies to grapheme mode — semantics an agent would otherwise have to guess from the schema. It does not cover the ellipsis max length or the 100000 cap on max, which remain schema-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 and resource (shortens text) plus the exact mechanism: maximum graphemes or words, optional word boundary, ellipsis counted toward the limit. It also names the sibling it is not (text-wrap), so an agent can route between the two 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?
Explicit 'When:' clause (exact transform/compare/measure rather than approximation) and an explicit 'No para:' exclusion that names the alternative tool text-wrap and the condition that selects it. Both sides of the decision are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text-wrapAjustar líneas de textoARead-onlyIdempotentInspect
Ajusta texto a un ancho máximo de línea respetando saltos existentes. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: acortar un texto a una longitud máxima (text-truncate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Wraps text to a maximum line width (in graphemes) at spaces, keeping existing line breaks; words longer than the width are split only if break_long_words is true. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: shortening text to a maximum length (text-truncate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text (string; required). | |
| width | No | Line width (integer; optional; default 80; min 1; max 1000). | |
| break_long_words | No | Split words longer than width (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description still adds real value: determinism, no network, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). These operational constraints are not derivable from 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?
Front-loaded with the core action, then when/not-for/effects/limits in a scannable order. The full Spanish and English duplication is redundant for a single agent, costing some length, though each version is individually 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?
Covers purpose, exclusions, side effects, determinism, and hard limits, and an output schema exists so return values need no explanation. 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; the description goes further by explaining that width is measured in graphemes and that over-width words are split only when break_long_words is true. That adds behavioral meaning beyond the schema's terse field 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 and resource ('Ajusta texto a un ancho máximo de línea') plus the key mechanism (graphemes, at spaces, preserving existing line breaks). It explicitly names the sibling it is not (text-truncate), so an agent can distinguish it 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?
Gives an explicit 'Cuándo' condition (exact transform/compare/measure rather than approximation) and an explicit 'No para' exclusion pointing to text-truncate. The alternative and the condition that selects it are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time-nowFecha y hora actual en una zona horariaARead-onlyInspect
Devuelve el instante actual (o uno dado, para pruebas) en una zona horaria IANA: ISO 8601 con desfase, UTC, Unix, desfase, horario de verano, fecha y hora local, día de la semana y textos en español e inglés. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: convertir una fecha/hora de una zona horaria IANA a otra, considerando horario de verano (timezone-shift). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: según el reloj salvo que se dé at. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Returns the current instant (or a given one, for tests) in an IANA time zone: ISO 8601 with offset, UTC, Unix seconds and milliseconds, offset, daylight saving, local date and time, ISO weekday and texts in Spanish and English. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Instant to use instead of the clock: ISO 8601 with Z/offset, or naive local time in `timezone` (for tests and reproducible output) (string; optional; up to 40 chars). | |
| timezone | No | IANA time zone, e.g. America/Bogota (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso | No | |
| utc | No | |
| date | No | |
| time | No | |
| unix | No | |
| offset | No | |
| source | No | |
| text_en | No | |
| text_es | No | |
| unix_ms | No | |
| timezone | No | |
| weekday_en | No | |
| weekday_es | No | |
| weekday_iso | No | |
| dst_in_effect | No | |
| offset_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations: the non-determinism rule ("según el reloj salvo que se dé at") tells the agent how to get reproducible output, and the stated limits (64 KB input, 1 s per call, 1 MB result) are not in any structured field. The "sin red / sin estado guardado / solo lectura" line largely restates readOnlyHint and openWorldHint, so not everything is net-new.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraints, limits, and exclusion are front-loaded, which is good. But the content is effectively duplicated in Spanish and English, and the trailing artifact "[EN completo / full EN: inputSchema.description]" is a placeholder that consumes space without conveying 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, return values need no explanation, and the annotations already carry the safety profile. The description still covers the pieces an agent needs to call it correctly: default timezone, the deterministic override, the DST/exactness use case, and the sibling exclusion.
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 only echoes the schema-level idea that a value for `at` can be supplied "para pruebas"; it adds no format, default, or precedence detail (e.g. naive local time interpreted in `timezone`) that the schema does not already carry.
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+resource ("Devuelve el instante actual ... en una zona horaria IANA") and enumerates the exact fields returned. It also names the sibling it is not (timezone-shift), so an agent can separate it from the other timezone tools 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?
Explicit "Cuándo" condition (dates/time zones/calendars that must be exact: offsets, DST, month ends, leap years) and an explicit "No para" exclusion that routes conversion work to timezone-shift. Both when-to-use and when-not-to-use are given, with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timestamp-convertTimestamp Unix ↔ ISOARead-onlyIdempotentInspect
Convierte un timestamp Unix a ISO 8601 (detecta s, ms, µs o ns) o una fecha ISO a Unix. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: analizar una fecha/hora ISO 8601 o RFC 2822 en sus partes (datetime-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a Unix timestamp to ISO 8601 (auto-detecting seconds, milliseconds, microseconds or nanoseconds by magnitude, or explicit unit), or an ISO date-time to Unix seconds and milliseconds. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: parsing an ISO 8601 or RFC 2822 date-time into its parts (datetime-parse). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit of numeric input (optional; one of: auto, s, ms, us, ns; default "auto"). | auto |
| value | Yes | Unix number/numeric string, or ISO 8601 string (number or string; required; up to 40 chars). | |
| timezone | No | Zone for local output (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso | No | |
| unix | No | |
| local | No | |
| unix_ms | No | |
| detected_unit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, no network and idempotency, but the description still adds hard value: auto-detection of s/ms/µs/ns by magnitude, and concrete limits (64 KB JSON input, 1 s per call, 1 MB output). It repeats determinism/no-state, which overlaps idempotentHint and openWorldHint=false, but the size/time ceilings are information the annotations 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?
Content is front-loaded and well labeled (Cuándo / No para / Efectos / Límites), but the entire body appears twice, in Spanish and English, with the English block truncated mid-sentence ('[EN completo / full EN: inputSchema.description]'), doubling length without added 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 stateless conversion tool with an output schema and full annotation coverage, the description supplies everything an agent needs: input direction, unit handling, timezone note, exactness rationale, exclusion to the parser sibling, and operational limits.
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; the description earns the extra point by explaining how the 'auto' unit works (magnitude-based detection across s/ms/µs/ns), which the enum alone does not tell the agent. It does not explain the timezone parameter's effect on output beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States concrete verbs and resources: converting a Unix timestamp to ISO 8601 (with unit auto-detection) or an ISO date-time to Unix seconds/ms. It also names the exact sibling it is not (datetime-parse), so the agent can distinguish it 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?
Explicit 'Cuándo' clause gives the triggering condition (exact date/timezone/calendar results: offsets, DST, month ends, leap years) and 'No para' excludes parsing ISO/RFC 2822 into parts, naming datetime-parse as the alternative. When-to-use, when-not-to-use and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezone-infoDatos de zona horariaARead-onlyIdempotentInspect
Informa el desfase UTC de una zona horaria en un instante, si aplica horario de verano y sus nombres. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: listar las zonas horarias IANA soportadas (timezone-list). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Reports a time zone's UTC offset and local time at an instant, its January and July offsets, whether DST is in effect, and the short and long zone names. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the supported IANA time zones (timezone-list). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | Instant (default 2026-01-01T00:00:00Z) (string; optional; up to 40 chars). | |
| timezone | Yes | IANA zone (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| local | No | |
| offset | No | |
| timezone | No | |
| long_name | No | |
| short_name | No | |
| july_offset | No | |
| observes_dst | No | |
| dst_in_effect | No | |
| january_offset | No | |
| offset_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, idempotentHint and openWorldHint=false, so the description doesn't need to restate safety basics. It still adds value the annotations cannot express: no network access, no stored state, determinism guarantee, and hard operational limits (64 KB input, 1 s per call, 1 MB result). Minor redundancy with openWorldHint but the limits are genuinely additive.
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?
Well structured and front-loaded: purpose first, then When / Not for / Side effects / Deterministic / Limits as scannable labelled clauses. It loses a point because the Spanish and English blocks convey the same content, roughly doubling length, plus a truncated pointer clause ('[EN completo / full EN: inputSchema.description]') that adds no 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 prose, and everything else an agent needs is present: purpose, trigger conditions, the excluded sibling, side effects, determinism and resource limits. Nothing required to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry their own descriptions including the 'at' default of 2026-01-01T00:00:00Z, so the baseline is 3. The description clarifies conceptually that offsets/names are computed *at* that instant, but adds no syntax hints (acceptable IANA formats beyond the example, ISO-8601 shape for 'at') 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?
Names a specific resource (a time zone at a given instant) and enumerates exactly what is reported: UTC offset, local time, January/July offsets, DST flag, short and long names. It also explicitly rules out the nearest sibling, timezone-list, so the agent never confuses the lookup tool with the data tool.
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 concrete 'When' trigger (a date, time-zone or calendar result that must be exact: offsets, DST, month ends, leap years) and a concrete 'Not for' exclusion naming the alternative tool (timezone-list). Both the positive and negative routing conditions are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezone-listLista de zonas horarias IANAARead-onlyIdempotentInspect
Lista las zonas horarias IANA soportadas, con filtro opcional. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: convertir una fecha/hora de una zona horaria IANA a otra, considerando horario de verano (timezone-shift). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists the IANA time zone identifiers supported by this runtime, optionally filtered by a case-insensitive substring (e.g. America, Bogota). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: converting a wall-clock date-time from one IANA time zone to another (timezone-shift). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Substring filter (string; optional; default ""; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| timezones | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false and openWorldHint=false; the description goes beyond them by stating no network access, no stored state, determinism of output, and concrete limits (64 KB input, 1 s per call, 1 MB result). These are operational facts an agent cannot get from 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?
Well front-loaded with labeled sections (When / Not for / Side effects / Deterministic / Limits) and a one-line summary. It loses a point for the Spanish-then-English duplication and the trailing pointer to inputSchema.description, which restates content already present in 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?
For a single optional-parameter, read-only list tool with an output schema (so return shape need not be described), the definition covers purpose, routing, side effects, determinism and size/time limits — nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds two things the schema omits: the filter is case-insensitive and illustrative values (America, Bogota) that clarify it matches IANA identifiers rather than arbitrary text. It does not clarify whether matching applies to the full path or any segment.
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 ("lista las zonas horarias IANA soportadas") plus the exact scope of the optional filtering. The sibling landscape is dense with timezone tools (timezone-shift, timezone-info, timezone-overlap) and the description names the one it is not.
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?
Explicit "Cuándo" trigger (when a date/timezone/calendar result must be exact: offsets, DST, month ends, leap years) and explicit "No para" exclusion naming timezone-shift as the alternative for conversions. Nothing is left to inference about when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezone-overlapHorario laboral común entre zonasARead-onlyIdempotentInspect
Encuentra, para una fecha y varias zonas horarias con su horario laboral, la franja en que todos coinciden. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: listar las zonas horarias IANA soportadas (timezone-list). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Finds, for a date and a list of time zones with local working hours, the UTC window when everyone is within working hours, shown in each zone's local time. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the supported IANA time zones (timezone-list). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date YYYY-MM-DD (string; required; up to 10 chars; format date). | |
| zones | Yes | Participants (array of object; required; at least 1 items; up to 20 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| local | No | |
| minutes | No | |
| overlap | No | |
| utc_end | No | |
| utc_start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, yet the description still adds real value: determinism guarantee, no network access, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not say what happens when no common window exists, which is the one behavioral 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?
Purpose is front-loaded and the labeled sections (Cuándo / No para / Efectos / Determinista / Límites) make it scannable. The cost is full duplication in Spanish and English within the same description, which roughly doubles length without adding 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, return values need not be described, and annotations plus the description cover safety, limits and routing. The only missing piece an agent would want is edge-case behavior (no overlap, DST transition day, start after end), which the description leaves silent.
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 date, timezone, start and end are already documented with formats, defaults and patterns. The description adds conceptual framing (each zone carries its own working hours, result shown in each zone's local time) but no per-parameter 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 and resource: finds the UTC window where all listed time zones are simultaneously within their local working hours, for a given date. It explicitly distinguishes itself from timezone-list, so an agent can route correctly 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?
Has an explicit 'When:' clause (any date/time-zone/calendar result that must be exact: offsets, DST, month ends, leap years) and an explicit 'No para:' clause naming the sibling timezone-list for the excluded case. Both the positive and negative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezone-shiftConvertir hora entre zonasARead-onlyIdempotentInspect
Convierte una fecha/hora de una zona horaria IANA a otra, considerando horario de verano. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que ser exacto (desfases, horario de verano, fines de mes, bisiestos). No para: listar las zonas horarias IANA soportadas (timezone-list). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a wall-clock date-time from one IANA time zone to another (DST-aware via Intl), or an absolute instant (with Z/offset) to a target zone. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the supported IANA time zones (timezone-list). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| datetime | Yes | Date-time; naive values are read in from_timezone (string; required; up to 40 chars). | |
| to_timezone | Yes | Target IANA zone (string; required; up to 64 chars). | |
| from_timezone | No | Source zone (string; optional; default "UTC"; up to 64 chars). | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| utc | No | |
| source | No | |
| target | No | |
| offset_difference_hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real context beyond the annotations: deterministic output, an explicit statement that naive times are interpreted in from_timezone while Z/offset inputs are converted to the target zone, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does repeat the read-only/no-network/idempotent traits that readOnlyHint, openWorldHint and idempotentHint already declare, which is why it stops 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?
Well front-loaded and labelled (When / Not for / Side effects / Deterministic / Limits), and each English sentence earns its place. However, the full Spanish and English texts are near-verbatim duplicates, roughly doubling length without adding 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 three-parameter, read-only conversion tool with full schema coverage, an output schema and complete annotations, nothing an agent needs is missing: scope, alternative, DST handling, input interpretation rules and operational limits are all present.
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 adds semantics the schema does not: that an input carrying Z or an offset is treated as an absolute instant and only converted to to_timezone, rather than being read in from_timezone. That is the one genuinely ambiguous behaviour for a 3-zone tool and it is resolved here.
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: converts a wall-clock date-time (or absolute instant) between IANA zones, DST-aware via Intl. It explicitly contrasts itself with the closest sibling (timezone-list) so an agent can route between them 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?
An explicit "When:" clause names the exact conditions (offsets, DST, month ends, leap years) and "Not for:" names the sibling alternative (timezone-list) to use instead. No inference is required to decide when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token-estimateEstimar tokens de LLMARead-onlyIdempotentInspect
Estima heurísticamente cuántos tokens de LLM usa un texto, con un rango de ±25 %. El conteo real depende del tokenizador de cada modelo. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: estimar el costo de llamadas a un LLM a partir de tokens (llm-cost-estimate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Heuristically estimates how many LLM tokens a text uses (Latin text ~4 chars/token, CJK ~1 char/token, code and punctuation denser) with a ±25% range. Real counts depend on each model's tokenizer. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required). | |
| context_window | No | Optional context window to compare against (integer; optional; min 1; max 100000000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| low | No | |
| fits | No | |
| high | No | |
| words | No | |
| characters | No | |
| estimated_tokens | No | |
| percent_of_window | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, but the description still adds real information beyond them: the ±25% accuracy band, the tokenization heuristics, and hard limits (64 KB input, 1 s per call, 1 MB result). One flaw: the stated 64 KB input limit conflicts with the schema's maxLength of 1,048,576 characters, which could mislead an agent about accepted input size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled structure (When / Not for / Side effects / Deterministic / Limits) is front-loaded and scannable, but the entry wastes space on duplicated Spanish and English text and ends with a leftover placeholder artifact '[EN completo / full EN: inputSchema.description]'. That noise costs it a level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description supplies everything else an agent needs: purpose, routing to the sibling, determinism, and resource limits. The only residual gap is the input-size figure that does not match the schema constraint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns an extra point by explaining that Latin text runs ~4 chars/token while CJK is ~1 char/token and code/punctuation is denser – semantics about the input that the schema does not carry. The optional context_window parameter is not discussed in the prose, but the schema documents it adequately.
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 and resource (heuristically estimate LLM token count for a text) and adds the accuracy envelope (±25%) plus the char-per-token heuristics. It explicitly distinguishes itself from llm-cost-estimate, so an agent can pick between the two 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 'When:' clause enumerates concrete agent-loop scenarios (tokens, costs, retries, chunking, ranking, JSON clean-up) and the 'Not for:' clause names the alternative tool llm-cost-estimate along with the condition that selects it. This is exactly the when/when-not/alternative structure the rubric rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token-units-convertMonto de token ↔ unidades baseARead-onlyIdempotentInspect
Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: estimar el costo de llamadas a un LLM a partir de tokens (llm-cost-estimate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a token amount between decimal and integer base units exactly (BigInt), e.g. USDC (6 decimals) 1.5 ↔ 1500000, ETH (18) or any decimals 0-36, as used in x402 payment requirements. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Decimal amount (to base units) (string; optional; up to 80 chars). | |
| decimals | No | Token decimals (USDC = 6) (integer; optional; default 6; min 0; max 36). | |
| base_units | No | Integer base units (to decimal) (string; optional; pattern ^\d{1,80}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | No | |
| decimals | No | |
| base_units | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the 'no side effects / deterministic' sentences largely restate them. The description does add genuinely new operational context, though: 64 KB input limit, 1 s per call, 1 MB result cap, and BigInt exactness — limits that annotations cannot express.
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?
Well organized with labeled clauses (Cuándo / No para / Efectos / Límites), but the full Spanish text followed by a near-verbatim full English text (and the same EN text again in inputSchema.description) triples the same content. The useful content could be half the length 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?
Output schema exists and annotations are rich, so return values and safety need no explanation; the description covers purpose, the alternative, limits and determinism. It is only incomplete on direction selection between amount and base_units and on error behavior for invalid/mismatched input (e.g. decimals exceeding the amount's precision).
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 each parameter already carries a description, so the schema does the heavy lifting. The description's 1.5 ↔ 1500000 example adds directional intuition, but it never explains the key ambiguity: amount (to base units) and base_units (to decimal) are mutually exclusive directions and all three params are optional, so which one drives the operation is still unstated.
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 concrete examples: converts token amounts between decimal and integer base units exactly (BigInt), USDC 6 decimals 1.5 ↔ 1500000, ETH 18, any decimals 0-36, in x402 context. This also disambiguates 'token' from LLM tokens, which is the main confusion risk among the siblings.
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?
Explicitly structured as 'Cuándo' (exact, repeatable bookkeeping steps) and 'No para' (estimating LLM call cost), naming the alternative tool llm-cost-estimate. The when/when-not split is exactly what an agent needs to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool-definition-convertConvertir definiciones de herramientasARead-onlyIdempotentInspect
Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: traducir la descripción completa de un agente o API entre A2A, MCP, OpenAPI y x402 (onda-traducir). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts a tool definition (name, description, JSON Schema parameters) between MCP (inputSchema), OpenAI function-calling (function.parameters) and Anthropic tool-use (input_schema) shapes, validating the name. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target format (required; one of: mcp, openai, anthropic). | |
| tool | Yes | Tool definition in any of the three formats (object; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No | |
| warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, but the description adds value beyond them: hard limits (64 KB input, 1 s per call, 1 MB result), no network, no stored state, determinism, and that the name is validated. It does not say what happens when validation fails or the limits are exceeded, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then When/Not-for/Side effects/Determinism/Limits in a scannable order. Slightly heavy because the Spanish and English text largely duplicate each other, but the content is dense and each line carries signal.
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 2-parameter conversion tool with an output schema (so return values needn't be described) and full annotation coverage, the description covers purpose, routing, safety, determinism and resource limits. Nothing an agent needs before 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 100% and both parameters are documented, so the baseline is 3. The description adds meaning on top by clarifying what 'tool' actually contains (name, description, JSON Schema parameters) and that 'to' selects among the three protocol shapes, which helps the agent construct the nested object correctly.
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 a tool definition) and enumerates the three exact target shapes with their field names (MCP inputSchema, OpenAI function.parameters, Anthropic input_schema), plus the extra behavior of validating the name. It also explicitly separates itself from onda-traducir, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'When:' list of triggering situations (agent description, tool list, OpenAPI document, receipt needing reading/conversion/checking) and an explicit 'No para:' exclusion naming the sibling onda-traducir and the reason (whole agent/API description across A2A/MCP/OpenAPI/x402). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toon-decodeConvertir TOON a JSONARead-onlyIdempotentInspect
Decodifica un texto TOON (especificación 4.4) a JSON; el modo estricto comprueba longitudes declaradas, anchos de fila, sangría y claves duplicadas. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: codificar un valor JSON como TOON (toon-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes TOON text (Token-Oriented Object Notation, spec 4.4) into JSON: objects by indentation, inline, list and tabular arrays, keyed tables, quoted strings and comments; strict mode checks declared lengths, widths, indentation and duplicate keys. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: encoding a JSON value as TOON (toon-encode). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| toon | Yes | TOON document (string; required). | |
| indent | No | Spaces per indentation level (integer; optional; default 2; min 1; max 8). | |
| strict | No | Strict mode (spec default); false applies only the five recoveries of spec §14.4 (boolean; optional; default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false and closed-world, and the description reinforces this with side-effect, determinism and limit statements (1 s per call, 1 MB result) plus what strict mode actually validates. That is real added context, but the limits sentence says "entrada JSON de hasta 64 KB" while the tool consumes TOON and the schema allows 262144 characters — an internal inconsistency that could mislead about size 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?
The content is well front-loaded (what it does, then when/not-for, then effects and limits), but the Spanish block and the English block repeat the same information almost verbatim, roughly doubling length without adding decision-relevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description still supplies the operational envelope (determinism, time and size limits) and the strict-mode contract, which is enough to call it correctly. The only gap is the contradictory 64 KB figure against the schema's 262144-character maxLength.
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 earns a bump by explaining what strict mode checks (declared lengths, widths, indentation, duplicate keys) and that non-strict applies only the five spec §14.4 recoveries. The indent parameter's semantics are left entirely 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 and resource ("Decodifica un texto TOON ... a JSON") plus the spec version and the constructs handled (indentation objects, inline/list/tabular arrays, keyed tables, quoted strings, comments). It explicitly distinguishes itself from the sibling toon-encode, so an agent can route between the pair 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?
Provides an explicit "Cuándo" trigger (structured data that must be transformed, compared or checked exactly) and an explicit "No para" exclusion naming the alternative toon-encode for the reverse direction. Both the positive and negative cases are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toon-encodeConvertir JSON a TOONARead-onlyIdempotentInspect
Codifica un valor JSON como TOON (Token-Oriented Object Notation, especificación 4.4): sangría en vez de llaves, longitudes declaradas y filas tabulares; suele gastar menos tokens que JSON. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: decodificar un texto TOON (toon-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Encodes a JSON value as TOON (Token-Oriented Object Notation, spec 4.4): indentation instead of braces, declared array lengths, tabular rows for uniform objects and minimal quoting, which usually needs fewer LLM tokens than JSON. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: decoding TOON text (toon-decode). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Any JSON value (any JSON value; required). | |
| indent | No | Spaces per indentation level (integer; optional; default 2; min 1; max 8). | |
| delimiter | No | Document delimiter (optional; one of: comma, tab, pipe; default "comma"). | comma |
Output Schema
| Name | Required | Description |
|---|---|---|
| toon | No | |
| chars | No | |
| json_chars | No | |
| saved_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, and the description goes beyond them with operational limits the agent cannot infer elsewhere: 64 KB input cap, 1 s per call, 1 MB result cap, plus an explicit determinism guarantee. These are exactly the constraints that affect caller behaviour and are not encoded in any structured field.
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 purpose, then the decision rules, then the guards — a well-ordered structure where each sentence carries information. It loses a point because the same content is restated in full in both the description and inputSchema.description, and the Spanish/English parallel text adds bulk without adding semantics.
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 unnecessary; the description instead covers the things the schema cannot — size/time limits, determinism, absence of side effects and the sibling boundary. For a three-parameter pure function this is fully sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (each of value, indent and delimiter carries type, default, bounds or enum plus a description), so the schema does the heavy lifting and baseline 3 applies. The description's mention of indentation, declared lengths and minimal quoting gives loose conceptual context for indent and delimiter, but no additional syntax or formatting guidance 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?
Names a specific verb+resource ('Codifica un valor JSON como TOON') and immediately characterizes the output format (indentation, declared array lengths, tabular rows, minimal quoting) and its benefit (fewer tokens than JSON). It also explicitly distinguishes itself from its closest sibling, toon-decode, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Cuándo' clause enumerating the applicable input shapes (JSON, CSV, YAML, XML, arrays) and an explicit 'No para' clause pointing at toon-decode. That is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ulid-decodeDecodificar ULIDARead-onlyIdempotentInspect
Valida un ULID y extrae su marca de tiempo y la parte aleatoria. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: validar un UUID e informar versión, variante y la marca de tiempo en v1, v6 y v7 (uuid-inspect). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a ULID and extracts its timestamp (ms and ISO 8601) and the hex of its 80-bit random part. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: validating a UUID string and reporting version, variant, and the embedded timestamp for v1, v6 and v7 (uuid-inspect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| ulid | Yes | ULID (string; required; up to 40 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | |
| timestamp | No | |
| random_hex | No | |
| timestamp_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly, idempotent, closed-world) by adding no-network, no-stored-state, determinism, and concrete operational limits: 64 KB input, 1 s per call, 1 MB result. That is exactly the extra context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (when / not-for / side effects / determinism / limits) are strongly front-loaded and easy to scan. The full Spanish + English duplication doubles the length, which is a real cost, though it is presumably deliberate for a bilingual toolset.
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 decoder with an output schema present, nothing needed to invoke it correctly is missing: scope, exclusions, side effects, determinism and resource limits are all stated.
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% with a single required 'ulid' string, so the schema already documents the parameter fully. The description adds output meaning (what gets extracted) rather than parameter meaning, 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+resource (validate a ULID, extract its timestamp and random part) and even names the exact decoded outputs (ms, ISO 8601, hex of the 80-bit random part). It is clearly separable from uuid-inspect, which it names, and from the identifier-family siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Cuándo' / 'No para' sections and names uuid-inspect as the contrasting alternative with the exact conditions that select it. The one flaw is the 'when' clause mentioning that an identifier 'has to be generated in this format', which points at ulid-generate, not this decode tool, and no alternative is named for that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ulid-generateGenerar ULIDARead-onlyInspect
Genera ULID: 26 caracteres Crockford Base32, marca de tiempo de 48 bits y 80 bits aleatorios; ordenables. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: validar un ULID y extraer su marca de tiempo y la parte aleatoria (ulid-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio y según el reloj salvo que se den seed y timestamp_ms. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates ULIDs: 26-char Crockford Base32, 48-bit millisecond timestamp plus 80 random bits, sortable. Reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: validating a ULID and extracting its timestamp (ulid-decode). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed. With a seed the output is reproducible; without one, cryptographically random bytes are used (string; optional; up to 256 chars). | |
| count | No | How many to generate (integer; optional; default 1; min 1; max 100). | |
| timestamp_ms | No | Unix time in milliseconds to embed (default: now) (integer; optional; min 0; max 281474976710655). |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| ulids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=false, destructiveHint=false. The description still adds non-redundant context: no network, no stored state, non-deterministic unless both seed and timestamp_ms are given, and limits (input 64 KB, 1s per call, 1 MB result). The nondeterminism/reproducibility nuance is genuinely useful, though it partially restates idempotentHint=false.
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 format definition, then a structured When/Not for/Side effects/Non-determinism/Limits sequence. Dense but every clause is functional; the duplicated ES/EN block and the trailing pointer to inputSchema.description add some 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?
Has an output schema, so return values needn't be explained, and annotations cover the safety profile. Coverage of scope, alternatives, determinism and size limits is thorough; minor deduction for the language duplication and slight overlap between the ES/EN paragraphs.
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 each parameter carries a full description including defaults and bounds, so the schema does the heavy lifting. The description echoes the seed/timestamp_ms reproducibility rule but adds no syntax or interaction 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+resource (generates ULIDs), spells out the format (26-char Crockford Base32, 48-bit timestamp + 80 random bits, sortable), and explicitly distinguishes from ulid-decode. The agent can identify the tool and its output shape 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?
Provides explicit 'When:' (generating an identifier in this format or reading embedded fields) and 'Not for:' routing to ulid-decode for validation/extraction. This is the exact when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unicode-escapeEscapar UnicodeARead-onlyIdempotentInspect
Escapa caracteres no ASCII como \uXXXX, \u{X} o U+XXXX. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: convertir escapes \uXXXX, \u{X}, \xXX y U+XXXX en caracteres (unicode-unescape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Escapes non-ASCII characters as \uXXXX (JSON/JS, UTF-16 surrogates), \u{X} (ES6), or U+XXXX notation. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting \uXXXX (unicode-unescape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Escape ASCII too (boolean; optional; default false). | |
| text | Yes | Text (string; required). | |
| style | No | Escape style (optional; one of: json, es6, codepoint; default "json"). | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| escaped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the read-only/no-network restatement adds little. The genuinely additive content is the operational envelope: 64 KB input cap, 1 s per call, 1 MB result, plus an explicit determinism guarantee — none of which the annotations 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?
The content is front-loaded and well-sectioned (When / Not for / Side effects / Determinism / Limits), but it is written twice, once in Spanish and once in English, roughly doubling length for identical information. Half the text is pure duplication.
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, a 100%-documented schema and an output schema present, everything an agent needs is covered: direction of conversion, the escape notations, the alternative tool, limits, determinism and side-effect profile. Nothing material is missing for a stateless transformation.
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. The description earns an extra point by mapping each notation family to a concrete use case (JSON/JS surrogates vs ES6 vs codepoint), which gives the style enum meaning beyond 'json | es6 | codepoint'. It says nothing about the `all` flag, but the schema covers it fully.
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 — escaping non-ASCII characters — and enumerates the three output notations (\uXXXX for JSON/JS with UTF-16 surrogates, \u{X} for ES6, U+XXXX codepoints). It explicitly distinguishes itself from the sibling unicode-unescape, so an agent can choose 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?
Provides an explicit 'When' clause (exact conversion of bytes/text to this encoding, no guessing) and an explicit 'Not for' clause naming unicode-unescape as the alternative. The only blemish is that the 'When' text says 'to or from this encoding', which briefly blurs the one-directional scope that the exclusion then repairs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unicode-normalizeNormalizar UnicodeARead-onlyIdempotentInspect
Aplica normalización Unicode NFC, NFD, NFKC o NFKD. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: quitar tildes y diacríticos (remove-accents). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Applies Unicode normalization form NFC, NFD, NFKC or NFKD and reports whether the text changed. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: stripping combining diacritical marks (remove-accents). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| form | No | Form (optional; one of: NFC, NFD, NFKC, NFKD; default "NFC"). | NFC |
| text | Yes | Input text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| changed | No | |
| code_points | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true and destructiveHint=false, so the 'no side effects / deterministic' lines are largely redundant. However, the description adds genuinely new operational context: the 64 KB input cap, 1 s per-call budget and 1 MB result cap, plus the fact that the response reports whether text changed. Minor inconsistency: it says 64 KB input while the schema allows 262144 characters.
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?
Well structured and front-loaded, with labeled sections (When / Not for / Side effects / Deterministic / Limits). But the entire content is duplicated in Spanish and English, roughly doubling length without adding information for a given reader.
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 tool is a simple two-parameter read-only operation. With alternatives, limits, determinism and side effects all covered, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum plus default are already documented in the schema, so baseline 3 applies. The description names the four forms but adds no semantics about what each form does (canonical vs compatibility, composed vs decomposed) that would help an agent pick one.
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 ('Applies Unicode normalization form NFC, NFD, NFKC or NFKD') and adds the observable outcome ('reports whether the text changed'). It also explicitly differentiates from the nearest sibling, remove-accents, so the agent can choose 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?
Uses explicit 'When:' and 'Not for:' sections, naming the excluded case (stripping combining diacritical marks) and the sibling tool that handles it. The positive condition (exact transform/compare/measure rather than approximation) is concrete enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unicode-unescapeDesescapar UnicodeARead-onlyIdempotentInspect
Convierte escapes \uXXXX, \u{X}, \xXX y U+XXXX en caracteres. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: escapar caracteres no ASCII como \uXXXX, \u{X} o U+XXXX (unicode-escape). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts \uXXXX (including surrogate pairs), \u{X}, \xXX and U+XXXX escapes in text back to characters. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: escaping non-ASCII characters as \uXXXX (unicode-escape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Escaped text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description nonetheless adds genuinely new context: explicit limits (64 KB input, 1 s per call, 1 MB result) and determinism, which the annotations do not encode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The ESC/EN duplication roughly doubles length for the same content, and 'Determinista: la misma entrada da la misma salida' restates the idempotentHint annotation. Content is front-loaded and organized, but a meaningful share of the text does not earn 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?
For a single-parameter, read-only transform with an output schema and full annotations, the description covers purpose, alternative, side effects and operational limits — nothing an agent needs in order to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'text' parameter, so the schema does the heavy lifting. The description adds value by noting surrogate-pair handling and that the input is 'escaped text', clarifying expected content beyond the schema's terse 'Escaped text (string; required).'
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 (converts/desescapa) and enumerates the exact resource forms it handles (\uXXXX with surrogate pairs, \u{X}, \xXX, U+XXXX) plus the direction of the transform. The agent can distinguish it from unicode-escape purely from the description.
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?
Explicitly names the alternative ('No para: escapar caracteres no ASCII ... (unicode-escape)'), which is a clear routing signal. However, the positive 'When' clause ('convertir bytes o texto a esta codificación, o desde ella') is muddled and implies bidirectional conversion, which the tool does not perform — an agent could misread it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit-price-compareComparar precios por unidadARead-onlyIdempotentInspect
Ordena ofertas por precio por unidad (kg, litro o unidad), convirtiendo g/kg/lb/oz y ml/l/fl_oz. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: aplicar descuentos porcentuales o fijos a un precio (discount-calculate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Ranks product offers by price per unit (per kg, per liter or per item), converting g/kg/lb/oz and ml/l/fl_oz, to find the best value. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: applying percentage or fixed discounts to a price (discount-calculate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| offers | Yes | Offers (array of object; required; at least 1 items; up to 500 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| best | No | |
| ranking | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful details beyond annotations: input/output size limits, a 1-second per-call limit, and determinism. It does not, however, explain rounding or tie-breaking behavior, which could matter for 'exact' financial math.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and uses clear labels for usage, exclusions, side effects, and limits. It is somewhat verbose due to bilingual repetition (Spanish and English say the same thing), but the structure is logical and every section carries useful 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 the presence of an output schema and comprehensive annotations, the description provides the key missing context: usage conditions, an explicit alternative, side-effect confirmation, limits, and determinism. It leaves a small gap around sorting direction and tie-breaking, but overall it is complete enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the offers array and its properties. The description adds only marginal meaning, repeating unit types already in the enum and not explaining how the offers are ranked or how price-per-unit is computed. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Ranks') and resource ('product offers by price per unit'), including the conversion logic for different units. It explicitly distinguishes itself from the discount-calculate sibling in the 'Not for' clause, so an agent can tell them apart without checking 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?
It provides a 'When' condition and a 'Not for' clause with a named alternative, which is strong. However, the 'When' description ('a money, tax or financial-math result has to be exact and reproducible') is somewhat generic and not specifically tailored to unit-price comparison, so an agent might not immediately see that the primary use case is ranking offers by unit price.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
university-email-domain¿El correo es de una universidad?ARead-onlyIdempotentInspect
Comprueba si el dominio de un correo (o un dominio suelto), o uno de sus dominios padre, figura en una lista pública de dominios universitarios y nombra las universidades; solo revisa el dominio, no el buzón ni la persona. Cuándo: hay que contrastar un correo o un dominio presentado como académico con una lista pública de dominios universitarios. No para: buscar en una lista pública de unas 10.000 universidades por palabras del nombre (university-search). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks whether the domain of an email address (or a bare domain) or one of its parent domains appears in a public list of university web domains and names the matching universities; checks the domain only, not the mailbox or the person. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| email_or_domain | Yes | Email address (ana@unal.edu.co) or domain (mit.edu) (string; required; at least 3 chars; up to 320 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| match | No | |
| domain | No | |
| listed | No | |
| source | No | |
| input_type | No | |
| universities | No | |
| matched_domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds concrete traits beyond the annotations: no network access, no stored state, deterministic output, and hard limits (64 KB JSON input, 1 s per call, 1 MB result). It also clarifies a real behavioral scope — only the domain is inspected, never the mailbox or the person. Some lines merely restate readOnlyHint/idempotentHint, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior, then organized under labeled clauses (Cuándo, No para, Efectos secundarios, Determinista, Límites), so it is easy to scan. It is somewhat long and the Spanish and English renderings duplicate content, which costs a point.
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 lookup with an output schema, everything an agent needs is covered: input semantics, matching behavior including parent domains, negative scope versus the sibling, safety profile, determinism, and size/time limits. Return values are left to the output schema, as appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter already has an example, so the baseline is 3. The description still adds meaning by explaining that bare domains are accepted and that parent domains of the submitted domain are also resolved against the list, which changes how an agent should interpret subdomain input.
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 (check whether an email/domain or one of its parent domains is in a public university domain list) and adds what it returns (names the matching universities). It also draws a sharp boundary against the most confusable sibling, university-search, so the tool is identifiable 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?
Explicit 'Cuándo' clause defines the trigger (an email or domain presented as academic needs verification against the public list) and the 'No para' clause names the alternative tool and its distinguishing condition (searching ~10,000 universities by name words). When-to-use, when-not, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
university-searchBuscar universidad por nombre o paísARead-onlyIdempotentInspect
Busca en una lista pública de unas 10.000 universidades por palabras del nombre (sin importar tildes, deben coincidir todas) y/o por país, y devuelve nombre, país, dominios web y páginas, con el total de coincidencias. Cuándo: hay que encontrar una universidad por nombre o país con sus dominios web. No para: comprobar si el dominio de un correo (university-email-domain). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Searches a public list of about 10,000 universities by name words (accent-insensitive, all words must match) and/or country, returning name, country, web domains and web pages, with the total number of matches. When: a university has to be found by name or country with its official web domains. Not for: checking whether the domain of an email address (university-email-domain). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Words of the university name (nacional colombia, andes, MIT) (string; optional; at least 1 chars; up to 120 chars). | |
| limit | No | Max results (integer; optional; default 10; min 1; max 50). | |
| country | No | Country: ISO 3166-1 code or name in English or Spanish (string; optional; at least 1 chars; up to 80 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| total | No | |
| source | No | |
| results | No | |
| truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds material context beyond them: no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). It also discloses the matching behavior (accent-insensitive, conjunctive word matching), which is not encoded in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded (what it does first, then When/Not for/effects/limits) and every clause carries signal. It loses a point for being a duplicated ES/EN block that restates the same content verbatim, making it longer than strictly needed.
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 there is no need to explain return values, yet the description still names the returned fields and total count. Combined with the limits, determinism, and exclusion guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the matching semantics of 'name' (accent-insensitive, all words must match) and the accepted forms of 'country' (ISO code or name in English or Spanish), which go beyond bare type/length constraints. Limit/pagination behavior is 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 and resource ('Searches a public list of about 10,000 universities'), names the matching semantics (accent-insensitive, all words must match), the filter dimensions (name and/or country), and the returned fields plus total matches. It also names the sibling it is not (university-email-domain), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When:' clause gives the positive selection condition (find a university by name or country with its official web domains) and the 'Not for:' clause explicitly routes the email-domain case to university-email-domain. Both the trigger and the exclusion are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-buildConstruir URLARead-onlyIdempotentInspect
Construye una URL desde una base, segmentos de ruta y parámetros de consulta. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar una URL absoluta (url-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Builds a URL from a base, optional path segments (each percent-encoded) and query parameters (arrays repeat the key), with an optional fragment. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing an absolute URL with the WHATWG URL parser into scheme, host, port (url-parse). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base URL (string; required; up to 8192 chars). | |
| query | No | Query parameters (object; optional; default {}). | |
| fragment | No | Fragment (string; optional; up to 1000 chars). | |
| path_segments | No | Path segments to append (array of string; optional; default []; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and closed-world, but the description adds concrete operational limits absent from the structured data: 64 KB JSON input, 1 s per call, 1 MB result, plus an explicit determinism guarantee. No contradiction with annotations, though 'sin red / sin estado' partly restates readOnlyHint and openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is duplicated wholesale in Spanish and English, and the English copy is truncated into a self-reference ('[EN completo / full EN: inputSchema.description]'). Half of each version is an irrelevant task enumeration (headers, tokens, IP ranges, HTML documents) that does not pertain to URL construction, so much of the length does not earn 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 four parameters are covered by schema, an output schema exists so return values need no explanation, and the description supplies limits, determinism and one exclusion. The only substantive gap is sibling routing against url-resolve and query-build, which are the nearest alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, and the description earns extra by explaining encoding semantics the schema does not: each path segment is percent-encoded, and array-valued query parameters repeat the key. That is real behavioral meaning beyond the property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource with its inputs ('Construye una URL desde una base, segmentos de ruta y parámetros de consulta'), which clearly separates it from url-parse. However, the 'Cuándo' clause then claims relevance to HTTP headers, tokens, IP ranges, HTML/Markdown documents and agent-readiness files — none of which a URL builder handles — muddying what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an explicit exclusion ('No para: analizar una URL absoluta (url-parse)'), which is good routing. But the closest siblings, url-resolve (relative resolution) and query-build (query-string construction), are never named, and the positive 'when' guidance is largely irrelevant boilerplate rather than a condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-decodeDecodificar URL (porcentaje)ARead-onlyIdempotentInspect
Decodifica texto con codificación porcentual; en modo formulario + es espacio. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: codificar texto para URL (url-encode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes percent-encoded text; in form mode + is treated as a space. Fails on malformed sequences instead of guessing. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: percent-encoding text for a URL (url-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Decoding rules (optional; one of: component, form; default "component"). | component |
| text | Yes | Encoded text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| decoded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, no-network; the description goes further by disclosing failure semantics on malformed sequences ('no adivinar' / 'Fails... instead of guessing'), determinism, and concrete limits (64 KB input, 1 s per call, 1 MB output). Those operational constraints are not derivable from 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?
Front-loaded with purpose, then when/not-for, then side effects, then limits — a clean order with no filler sentences. The only inefficiency is the full ES/EN duplication, which roughly doubles length for an agent reading both halves.
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; the description instead covers the things the schema cannot: error behavior, determinism, size/time limits, and the alternative tool. Nothing needed to invoke it safely 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 adds real meaning for the enum: in 'form' mode a literal '+' is treated as a space, which the schema only names as an enum value. The 'text' parameter itself needs no extra explanation given the schema's example.
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 ('Decodifica texto con codificación porcentual' / 'Decodes percent-encoded text') and immediately names the sibling it is not ('No para: codificar texto para URL (url-encode)'). An agent can distinguish it from url-encode, url-normalize, and url-parse 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?
Explicit 'When:' clause defining the conversion task and an explicit 'Not for:' clause routing to url-encode. This is the when/when-not/alternative triad the rubric reserves 5 for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-encodeCodificar URL (porcentaje)ARead-onlyIdempotentInspect
Codifica texto para URL: modo componente, formulario (espacio como +) o ruta (conserva /). Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: decodificar texto con codificación porcentual (url-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Percent-encodes text for a URL: component mode (like encodeURIComponent), form mode (space as +, application/x-www-form-urlencoded) or path mode (keeps /). When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decoding percent-encoded text (url-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Encoding rules (optional; one of: component, form, path; default "component"). | component |
| text | Yes | Text to encode (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| encoded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real disclosure beyond the annotations: no side effects, no network, no stored state, determinism, and concrete limits (64 KB input, 1 s, 1 MB result). Minor internal noise: saying it converts text 'to or from this encoding' blurs the very decode boundary established later, and the 64 KB input cap reads oddly against the schema's 1 MB maxLength.
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 operation and modes, then tightly labelled sentences for when/not-for/side effects/limits, so an agent can scan it. The full Spanish/English duplication roughly doubles length for no added information, which is the main inefficiency.
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 everything needed to call it correctly: mode semantics, the decode alternative, safety profile, determinism, and size/time limits. An output schema exists, so return-value explanation is not required, and nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning to the mode enum by mapping component/form/path to recognizable encoding standards and behaviours (space as +, '/' preserved). The text parameter is only echoed, not enriched.
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 the specific operation (percent-encoding text for a URL) and breaks it into three named modes with concrete semantics (encodeURIComponent-like, space as +, keeps /). It also explicitly names the sibling it is not, url-decode, so an agent can distinguish the pair 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?
'When:' gives the triggering condition (need exact conversion to/from this encoding without guessing) and 'No para:'/'Not for:' names the excluded case plus the alternative tool url-decode. That is explicit 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.
url-normalizeNormalizar URLARead-onlyIdempotentInspect
Normaliza una URL para comparar o deduplicar: minúsculas, sin puerto por defecto, sin parámetros de seguimiento, etc. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: construir una URL desde una base, segmentos de ruta y parámetros de consulta (url-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Normalizes a URL for comparison or deduplication: lowercase scheme/host, drop default port, resolve dot segments, optionally sort query, drop tracking parameters (utm_*, gclid, fbclid…), fragment and trailing slash. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL (string; required; up to 8192 chars). | |
| remove_www | No | Strip leading www (boolean; optional; default false). | |
| sort_query | No | Sort query parameters (boolean; optional; default true). | |
| remove_fragment | No | Remove #fragment (boolean; optional; default true). | |
| remove_tracking | No | Remove utm_* and click IDs (boolean; optional; default true). | |
| remove_trailing_slash | No | Remove trailing slash from path (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| removed_params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, but the description still adds real value: no network access, no stored state, deterministic output, and hard limits (64 KB input, 1 s per call, 1 MB result). Only the output schema's own richness limits further credit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is duplicated in full in Spanish and English, and then points to 'inputSchema.description' for a third copy, so the same content appears three times in one call path. The generic 'Cuándo' enumeration and the limits block also occupy space disproportionate to a single-URL transform, though the first sentence is well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations plus a complete schema and an output schema, the description covers the remaining unknowns an agent needs: side effects, determinism, resource limits, and the non-recommended sibling. Return-value explanation is correctly omitted.
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 one of the 6 parameters is documented with type and default in the schema. The description's prose ('sort query', 'drop tracking parameters (utm_*, gclid, fbclid…)', 'fragment and trailing slash') restates those flags without adding format or interaction detail, so 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 first sentence states a specific verb (normalize) and resource (URL) plus the goal (comparison/deduplication), and enumerates the concrete transformations. It names the sibling it is not for (url-build), but the later 'Cuándo' clause also says it is for 'construir ... una URL', which muddies the very distinction it just drew.
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?
Explicit dual structure: 'Cuándo' for when and 'No para: ... (url-build)' for the alternative, which is exactly what an agent needs to route correctly. However, the 'Cuándo' list (HTTP headers, tokens, versions, IP ranges, HTML/Markdown, agent files) is boilerplate that does not actually apply to URL normalization and weakens the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-parseAnalizar URLARead-onlyIdempotentInspect
Analiza una URL absoluta (WHATWG) en esquema, host, puerto, ruta, parámetros y fragmento. Nunca devuelve contraseñas. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: construir una URL desde una base, segmentos de ruta y parámetros de consulta (url-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses an absolute URL with the WHATWG URL parser into scheme, host, port (with default), path, query parameters (repeated keys as arrays), fragment and origin. Passwords are never echoed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL (string; required; up to 8192 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| href | No | |
| path | No | |
| port | No | |
| query | No | |
| origin | No | |
| scheme | No | |
| fragment | No | |
| hostname | No | |
| username | No | |
| default_port | No | |
| has_password | No | |
| path_segments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which already declare read-only, idempotent, non-destructive) by disclosing concrete behavioral traits: no network access, no stored state, deterministic output, passwords never echoed, repeated query keys returned as arrays, and hard limits (64 KB input, 1 s per call, 1 MB result). These are exactly the operational constraints an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the 'Cuándo / No para / Efectos secundarios / Determinista / Límites' structure is easy to scan. But the content is duplicated in Spanish and English, the English text is largely repeated from inputSchema.description, and the 'when' list is padded with loosely related examples, inflating length without adding selection value.
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 fields need no prose explanation, and limits, determinism and side effects are all stated. The one gap is error behavior: it never says what happens when the URL is not absolute, malformed, or exceeds 8192 characters, which matters for a single-input parser.
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?
Only one parameter and schema coverage is 100%, with maxLength, an example, and a description in the schema, so the baseline is 3. The prose restates the same facts ('absolute URL') and adds no syntax or edge-case detail (e.g., what happens to relative or malformed input) 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: parses an absolute URL with the WHATWG parser and enumerates the outputs (scheme, host, port with default, path, query params as arrays, fragment, origin). It explicitly names the sibling it is not (url-build), so an agent can separate parse from construct 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?
Provides an explicit 'Cuándo' section and an explicit 'No para: construir una URL desde una base ... (url-build)' exclusion naming the alternative. The trigger list is diluted, however: claiming the tool applies to 'un token, una versión, un rango de IP, un documento HTML' is questionable for a URL parser and could mislead an agent into calling it on non-URL input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-resolveResolver URL relativaARead-onlyIdempotentInspect
Resuelve una referencia relativa contra una URL base. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: construir una URL desde una base, segmentos de ruta y parámetros de consulta (url-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Resolves a relative reference (../x, /y, ?q, //host/z) against a base URL per the WHATWG URL standard. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a URL from a base, optional path segments (url-build). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Base URL (string; required; up to 8192 chars). | |
| reference | Yes | Relative or absolute reference (string; required; up to 8192 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent and closed-world, so the safety profile is covered; the description still adds real value by stating no network access, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). The only gap is that it doesn't say what the resolved output looks like, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded definition is good, but the text is duplicated wholesale in Spanish and English and ends with a dangling pointer ('[EN completo / full EN: inputSchema.description]'), which is clutter. The generic 'Cuándo' enumeration also occupies space without earning it.
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, rich annotations, and fully documented parameters, the description supplies everything needed to invoke the tool correctly: the resolution model, the exclusion, the absence of side effects, and hard limits. Only the over-broad 'when' list risks sending the agent here for tasks the tool does not do.
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 both parameters are documented with examples and length bounds, so the schema carries the load and a 3 is the baseline. The description contributes only the WHATWG standard reference and the reference-form examples (../x, /y, ?q, //host/z), which are modest additions over what the schema already shows.
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 — resolving a relative reference against a base URL — and names the standard (WHATWG URL). It explicitly contrasts with the sibling url-build, so an agent can distinguish the two 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 'No para' clause names the alternative (url-build) and the condition that selects it, which is exactly the routing signal an agent needs. The 'Cuándo' list, however, is boilerplate that sweeps in unrelated artifacts (IP ranges, tokens, HTML/Markdown documents, agent-readiness files), diluting rather than sharpening the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
url-risk-heuristicsSeñales de phishing en una URLARead-onlyIdempotentInspect
Señala indicios de phishing en una URL sin conexión: punycode y homógrafos, host IP, «@» en la autoridad, acortadores, TLD con alto índice de phishing, muchos subdominios. Son heurísticas, no un veredicto. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar una URL absoluta (url-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Flags phishing signals in a URL offline: punycode and mixed-script homographs, IP or obfuscated-IP hosts, "@" in the authority, link shorteners, TLDs with high phishing scores (Interisle 2025), many subdomains and lure words. Heuristic signals, not a verdict. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to check (string; required; up to 4096 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| host | No | |
| note | No | |
| flags | No | |
| level | No | |
| score | No | |
| sources | No | |
| verdict | No | |
| heuristic | No | |
| unicode_host | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, so the bar is lower; the description still adds real value with "sin conexión" (no network), "sin estado guardado", determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). The caveat "Son heurísticas, no un veredicto" correctly warns that output is probabilistic rather than a security decision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded Spanish sentence is dense and useful, but the bilingual duplication (EN block repeats the same content) and the copy-pasted "Cuándo" enumeration of unrelated artifact types pad the description without adding information for this tool.
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 explanation is rightly omitted, and the "not a verdict" caveat is a valuable completeness touch. Still, the misleading usage clause leaves the agent unsure whether this tool consumes headers/documents, and there is no indication of what kind of signal categories or severity framing the result carries.
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 a single parameter at 100% schema description coverage, the schema already documents the required `url` string with a 4096-char bound and an example. The description adds no further semantics about the input (e.g. whether scheme is required, how relative URLs are handled), so 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+resource ("Señala indicios de phishing en una URL") and enumerates the exact signals detected (punycode/homógrafos, host IP, «@», acortadores, TLD, subdominios, lure words), which is far more concrete than the title. However, the purpose is slightly blurred by the generic "Cuándo" list that describes parsing HTTP headers, tokens, IP ranges and agent files — tasks this tool cannot perform.
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 name an alternative and an exclusion ("No para: analizar una URL absoluta (url-parse)"), which is genuinely useful routing. But the "Cuándo" clause is boilerplate shared with other server tools and does not describe this tool's real trigger condition (suspicious link triage / pre-click vetting), so an agent gets a partially misleading usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user-agent-parseAnalizar User-AgentARead-onlyIdempotentInspect
Analiza heurísticamente un User-Agent: navegador, motor, sistema operativo, tipo de dispositivo y bots conocidos. Puede ser falsificado. Cuándo: hay que leer, construir o revisar con exactitud una URL, una cabecera HTTP, un token, una versión, un rango de IP, un documento HTML o Markdown o un archivo para agentes. No para: analizar una cabecera Accept-Language y elegir el mejor idioma (accept-language-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Heuristically parses a User-Agent string into browser and version, engine, OS and version, device class (desktop/mobile/tablet/bot) and known crawlers/AI bots. User-Agents can be spoofed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| user_agent | Yes | User-Agent header (string; required; up to 2048 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| os | No | |
| bot | No | |
| device | No | |
| engine | No | |
| browser | No | |
| os_version | No | |
| browser_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-open-world, idempotent and non-destructive, so the description's 'sin red, sin estado guardado' is largely restatement. It earns credit for going beyond them: 'heurísticamente' plus 'Puede ser falsificado' warns the result is best-effort and spoofable, and the concrete limits (64 KB input, 1 s per call, 1 MB result) are operationally useful facts an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core purpose is front-loaded, which is good, but the text is duplicated wholesale in Spanish and English and padded with a boilerplate sentence listing unrelated artefact types (tokens, IP ranges, HTML files) that do not describe this tool. Roughly half the content is redundancy or noise rather than 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?
With only one required parameter and an output schema present, the description need not explain return values, and it does supply the missing operational context: determinism, spoofing caveat, time/size limits and an explicit sibling exclusion. It falls short only because the misleading 'Cuándo' list and the bilingual duplication add ambiguity rather than completeness.
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 single parameter is fully covered by the schema (type, required, maxLength 2048, an example UA, and its own description), so the schema does the heavy lifting. The description adds no per-parameter detail such as accepted input forms or the interaction between the 2048-char field cap and the 64 KB payload cap.
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 ('Analiza heurísticamente un User-Agent') and enumerates the exact extracted fields: browser+version, engine, OS, device class and known bots. That is enough for an agent to tell it apart from neighbours like accept-language-parse or http-headers-parse 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?
Provides an explicit negative routing rule: 'No para: analizar una cabecera Accept-Language ... (accept-language-parse)', which names the closest sibling and the condition that selects it. The positive 'Cuándo' clause, however, is generic boilerplate ('una URL, una cabecera HTTP, un token, ... un documento HTML o Markdown') that could wrongly suggest the tool parses URLs or documents, so the guidance is clear on exclusion but noisy on inclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
utf8-inspectInspeccionar UTF-8 y puntos de códigoARead-onlyIdempotentInspect
Lista cada carácter con su punto de código, bytes UTF-8 y unidades UTF-16, y totales. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: detectar caracteres invisibles (text-invisible-scan). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lists each character of a string with its Unicode code point, UTF-8 bytes and UTF-16 units, plus totals (bytes, code points, graphemes). Max 2,000 code points. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: finding zero-width, bidi-control, Unicode tag and other invisible characters (text-invisible-scan). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text (string; required; up to 2000 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chars | No | |
| graphemes | No | |
| utf8_bytes | No | |
| code_points | No | |
| utf16_units | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description goes further by disclosing hard limits (64 KB input, 1 s per call, 1 MB result), determinism, and the 2,000 code point cap, which are not in the annotations. It stops short of describing error behavior, keeping it just below the top.
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?
Well front-loaded: what it returns first, then when/when-not, side effects, determinism, limits. The bilingual ES/EN duplication roughly doubles length, which is justified for a bilingual catalog but is verbosity an agent must skip past.
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, yet the description still summarizes the key return values (bytes, code points, graphemes, totals). Combined with limits, exclusions and determinism, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage, the baseline is 3. The description adds a meaningful semantic constraint not fully conveyed by the schema: the 'Max 2,000 code points' limit, which clarifies the unit of the maxLength bound.
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 and resource: lists each character with its code point, UTF-8 bytes, UTF-16 units and totals. It also names the sibling it is not (text-invisible-scan), so an agent can distinguish it from the invisible-character tools 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 'When' clause gives a positive trigger (exact conversion to/from the encoding without guessing) and the 'Not for' clause names text-invisible-scan by name. Both the inclusion and exclusion conditions are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
utm-from-latlonLatitud/longitud a UTMARead-onlyIdempotentInspect
Convierte latitud/longitud WGS84 a coordenadas UTM (zona, banda, este y norte). Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: convertir coordenadas UTM (utm-to-latlon). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts WGS84 latitude/longitude to UTM zone, latitude band, hemisphere, easting and northing (Krüger series, sub-millimetre in-zone), including the Norway/Svalbard zone exceptions. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: converting UTM zone, hemisphere (utm-to-latlon). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (number; required; min -90; max 90). | |
| lon | Yes | Longitude in decimal degrees (number; required; min -180; max 180). | |
| zone | No | Force a zone 1-60 (integer; optional; min 1; max 60). |
Output Schema
| Name | Required | Description |
|---|---|---|
| band | No | |
| text | No | |
| zone | No | |
| easting | No | |
| northing | No | |
| hemisphere | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, and the description still adds substantive context: no network, no stored state, determinism, hard limits (64 KB input, 1 s per call, 1 MB result), and sub-millimetre in-zone accuracy with the Norway/Svalbard zone exceptions called out. That is more than the annotations provide and is exactly the kind of behavioral detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English block is dense, front-loaded (purpose first, then when/not-for, then effects and limits) and every clause carries information. The cost is that the entire text is duplicated verbatim in Spanish, so roughly half the characters add nothing for a single-language reader.
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 unnecessary, and the description still covers accuracy, edge-case zone rules, determinism and resource limits. The only meaningful omission is the `zone` input override, which the description mentions only as an output concept.
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 lat and lon are fully documented by the schema and the description correctly implies their meaning. However, the optional `zone` override — the one non-obvious parameter — is never mentioned in the description, so no value is added beyond structured data. 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 and resource (convert WGS84 lat/lon to UTM zone, band, hemisphere, easting, northing) and even names the projection method and the Norway/Svalbard exceptions. The negative clause explicitly distinguishes it from the sibling utm-to-latlon, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains explicit "When:" (computing coordinates, distances, bearings, areas from given points) and "Not for:" clauses that name the alternative tool utm-to-latlon. This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
utm-to-latlonUTM a latitud/longitudARead-onlyIdempotentInspect
Convierte coordenadas UTM (zona, hemisferio o banda, este, norte) a latitud/longitud WGS84. Cuándo: hay que calcular coordenadas, distancias, rumbos o áreas a partir de puntos dados. No para: convertir latitud/longitud WGS84 a coordenadas UTM (utm-from-latlon). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Converts UTM zone, hemisphere (or latitude band letter), easting and northing to WGS84 latitude/longitude. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: converting WGS84 latitude/longitude to UTM zone, latitude band, hemisphere, easting and northing (utm-from-latlon). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| zone | Yes | Zone 1-60 (integer; required; min 1; max 60). | |
| easting | Yes | Easting (m) (number; required; min 100000; max 900000). | |
| northing | Yes | Northing (m) (number; required; min 0; max 10000000). | |
| hemisphere | Yes | N, S, or a band letter C-X (string; required; pattern ^[NnSsC-HJ-NP-Xc-hj-np-x]$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | No | |
| lon | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds value beyond that by stating determinism and concrete operational limits (64 KB input, 1 s per call, 1 MB result), which annotations cannot express. Minor overlap on 'no state saved' with the read-only hints keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled segments (Cuándo / No para / Efectos / Determinista / Límites) make it scannable and the purpose is front-loaded. The full bilingual duplication roughly doubles the length, which costs a point but is a deliberate, consistently structured pattern.
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 description covers side effects, determinism, and resource limits. Nothing essential for correct invocation is missing, though edge behaviors (e.g., out-of-zone easting validation errors) are left entirely to the schema bounds.
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 zone, easting, northing, and hemisphere including the band-letter pattern. The description's mention of 'hemisferio o banda' restates what the schema's pattern encodes, adding no new format or interpretation guidance. 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 and resource pair: convert UTM (zone, hemisphere or band, easting, northing) to WGS84 lat/lon. It also names the inverse sibling utm-from-latlon, so an agent can distinguish the two 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 'Cuándo' line gives the triggering context (computing coordinates, distances, bearings, areas from given points) and 'No para' explicitly routes to utm-from-latlon for the opposite direction. When-to-use, when-not, and the alternative are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuid-inspectInspeccionar o validar UUIDARead-onlyIdempotentInspect
Valida un UUID e informa versión, variante y la marca de tiempo en v1, v6 y v7. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: validar un ULID y extraer su marca de tiempo y la parte aleatoria (ulid-decode). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a UUID string and reports version, variant, and the embedded timestamp for v1, v6 and v7. Accepts braces, urn:uuid: prefix and missing hyphens. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: validating a ULID and extracting its timestamp (ulid-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | UUID (string; required; up to 64 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | No | |
| valid | No | |
| variant | No | |
| version | No | |
| timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and closed-world, yet the description still adds real value: no network, no stored state, determinism, and concrete limits (64 KB input, 1 s per call, 1 MB result). The accepted-format leniency (braces, urn:uuid: prefix, missing hyphens) is behavioral detail unavailable anywhere else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is labeled and front-loaded with the core action, and every labeled block carries distinct information. The parallel Spanish/English duplication doubles length, which is defensible for locale coverage but is still 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 one parameter, an output schema, and full annotations, the description covers purpose, alternative routing, determinism, and operational limits. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'uuid' parameter, so the schema carries the formal contract. The description still contributes format acceptance rules that an agent cannot infer from the schema, though it does not say what happens on malformed input.
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 ('valida un UUID e informa versión, variante y la marca de tiempo') and scopes it precisely to v1/v6/v7 timestamp extraction. Sibling tools like uuid-v4, uuid-v7 and ulid-decode are clearly differentiated by capability rather than name overlap.
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?
Uses explicit 'Cuándo' / 'No para' framing and names the excluded alternative (ulid-decode) with its reason. Minor blemish: the 'when' clause says 'an identifier has to be generated in this format', which nudges toward a generation use case this tool does not serve, while uuid-v4/uuid-v7 siblings do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuid-v3UUID v3 (por nombre, MD5)ARead-onlyIdempotentInspect
Deriva el UUID versión 3 de un espacio de nombres y un nombre (MD5). Para sistemas nuevos se recomienda v5. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: derivar el UUID versión 5 de un espacio de nombres y un nombre (uuid-v5). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Derives the RFC 9562 version-3 UUID of a namespace and a name, using MD5. RFC 9562 recommends v5 over v3. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: deriving the RFC 9562 version-5 UUID of a namespace (uuid-v5). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name (string; required). | |
| namespace | Yes | dns | url | oid | x500 | UUID (string; required; up to 36 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the baseline is lower, and the description still adds real information: no network access, no stored state, determinism of the input-output mapping, and concrete limits (64 KB input, 1 s per call, 1 MB result). It stops short of describing the output shape or how malformed namespaces are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English block is front-loaded and tight, leading with the derivation and then the 'When' and 'Not for' routing. The parallel Spanish block doubles the length, which is reasonable for a bilingual server but means the text is longer than strictly necessary.
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 two-parameter, deterministic derivation tool with no side effects, the description covers what the tool computes, when to choose it, the alternative, and the operating limits. Because the input schema documents the parameters and an output schema exists, the description does not need to explain the result format.
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 required parameters, and the description adds little beyond restating that a namespace and a name are hashed. It does not explain the fixed-namespace shortcuts (dns, url, oid, x500) or how a raw UUID namespace should be formatted, which would have been the genuinely useful addition.
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: derives the RFC 9562 version-3 UUID of a namespace and name using MD5. It explicitly names the sibling it is not (uuid-v5) and clarifies that the tool also decodes the fields embedded in the identifier, so an agent can distinguish it from its siblings without inspecting 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?
Uses explicit 'When' and 'Not for' clauses: use it when an identifier in this format must be generated or decoded, and not for deriving a v5 UUID (uuid-v5). It also gives a migration recommendation (RFC 9562 prefers v5) that steers an agent toward the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuid-v4Generar UUID v4ARead-onlyInspect
Genera UUID versión 4 (RFC 9562) aleatorios. Con semilla, la salida es reproducible. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: generar UUID versión 7 ordenados por tiempo (uuid-v7). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio salvo que se dé seed. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates random RFC 9562 version-4 UUIDs (122 random bits). A seed gives reproducible output for tests. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating time-ordered version-7 UUIDs (uuid-v7). Side effects: none (read-only, no network access, no stored state). Not deterministic: random unless seed is given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed. With a seed the output is reproducible; without one, cryptographically random bytes are used (string; optional; up to 256 chars). | |
| count | No | How many to generate (integer; optional; default 1; min 1; max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| uuids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the 'no side effects' sentence mostly restates structured data. The description does add genuinely new behavioral context: non-determinism unless a seed is supplied (consistent with idempotentHint=false) and concrete limits (64 KB input, 1 s per call, 1 MB result).
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?
Content is front-loaded and organized under explicit labels (When / Not for / Side effects / Limits), which makes it easy to scan. It is, however, fully duplicated in Spanish and English, roughly doubling length without adding 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 and limits, determinism, and the sibling alternative are all covered, so an agent has what it needs to call it correctly. The only soft spot is the phrase about 'reading embedded fields,' which overlaps the separate uuid-inspect tool and slightly blurs scope.
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 both parameters are already fully documented in the schema. The description reinforces the seed's reproducibility effect but says nothing about count, so it adds only marginal value over the structured fields — 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 a specific verb and resource — 'Generates random RFC 9562 version-4 UUIDs (122 random bits)' — and explicitly frames the comparison against uuid-v7. An agent can distinguish it from the uuid-v3/v5/v7/inspect siblings 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?
It gives an explicit 'When:' (generate an identifier in this format or read its embedded fields) and an explicit 'Not for:' that names the alternative tool (uuid-v7, time-ordered). The condition that selects the sibling is stated outright, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuid-v5UUID v5 (por nombre, SHA-1)ARead-onlyIdempotentInspect
Deriva el UUID versión 5 de un espacio de nombres y un nombre (SHA-1); las mismas entradas dan siempre el mismo UUID. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: derivar el UUID versión 3 de un espacio de nombres y un nombre (uuid-v3). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Derives the RFC 9562 version-5 UUID of a namespace (dns, url, oid, x500 or any UUID) and a name, using SHA-1; the same inputs always give the same UUID. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: deriving the RFC 9562 version-3 UUID of a namespace and a name, using MD5 (uuid-v3). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name (string; required). | |
| namespace | Yes | dns | url | oid | x500 | UUID (string; required; up to 36 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld=false and destructive=false, and the description restates those plus adds genuinely new operational limits (64 KB JSON input, 1 s per call, 1 MB result). The restatement of determinism/no-network is redundant with the annotations, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and resource, then cleanly labeled When / Not for / Side effects / Deterministic / Limits. The cost is full bilingual duplication of the same content, which roughly doubles length without adding 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 explained, and the description covers scope, alternatives, determinism, side effects and hard limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description's namespace enumeration (dns, url, oid, x500, any UUID) largely repeats the schema's own description. Baseline 3 is appropriate; it adds no new syntax or normalization 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: derive the RFC 9562 version-5 UUID of a namespace plus name using SHA-1, and also that it decodes embedded fields. It names the exact sibling it differs from (uuid-v3, MD5) so the agent can disambiguate 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?
Explicit 'When' clause (generate this identifier format or read its embedded fields) and an explicit 'Not for' clause routing to uuid-v3. Both the positive condition and the exclusion are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uuid-v7Generar UUID v7 (ordenado por tiempo)ARead-onlyInspect
Genera UUID versión 7 (RFC 9562), ordenables por tiempo: marca de 48 bits en ms más bits aleatorios. Cuándo: hay que generar un identificador en este formato o leer los campos que lleva dentro. No para: generar UUID versión 4 (uuid-v4). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). No determinista: aleatorio y según el reloj salvo que se den seed y timestamp_ms. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Generates RFC 9562 version-7 UUIDs: 48-bit Unix millisecond timestamp plus random bits, so they sort by creation time. Output is reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating random RFC 9562 version-4 UUIDs (uuid-v4). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional seed. With a seed the output is reproducible; without one, cryptographically random bytes are used (string; optional; up to 256 chars). | |
| count | No | How many to generate (integer; optional; default 1; min 1; max 100). | |
| timestamp_ms | No | Unix time in milliseconds to embed (default: now) (integer; optional; min 0; max 281474976710655). |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | |
| uuids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive flags, and the description goes well beyond them: it discloses non-determinism and the exact condition for reproducibility (both seed and timestamp_ms), confirms no network or stored state, and states operational limits (64 KB input, 1 s per call, 1 MB result).
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?
Content is front-loaded and the When/Not-for/Effects/Limits structure is easy to scan, but the text is published twice (Spanish block plus a near-duplicate English block) and ends with a stray artifact '[EN completo / full EN: inputSchema.description]' that adds no 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, return values need not be described; annotations carry the safety profile and the description covers determinism, limits, and usage boundaries. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema alone would justify a 3. The description adds real value by clarifying that reproducibility requires both seed and timestamp_ms together, which the per-parameter schema text only states for seed individually.
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 ('Genera UUID versión 7 (RFC 9562)') and adds the defining property (time-sortable: 48-bit ms timestamp + random bits). An agent can distinguish it from uuid-v4 and uuid-v5 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?
Explicit 'Cuándo' and 'No para: generar UUID versión 4 (uuid-v4)', naming an alternative and the condition that selects it. However, 'leer los campos que lleva dentro' overlaps with the uuid-inspect sibling, which is not addressed, leaving a decoding ambiguity unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vat-calculateCalcular IVA o impuesto de ventasARead-onlyIdempotentInspect
Suma o extrae un impuesto (IVA/VAT) a cualquier tasa, redondeando a las unidades menores de la moneda. Cuándo: un cálculo de dinero, impuestos o matemática financiera tiene que ser exacto y reproducible (redondeo, centavos, tasas). No para: calcular el IVA colombiano (co-iva). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Adds tax to a net amount or extracts it from a gross (tax-inclusive) amount at any rate, rounding to the currency's minor units. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: adding or extracting Colombian IVA at the general 19%, reduced 5% or 0% (co-iva). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount (number; required; min 0; max 1000000000000000). | |
| currency | No | ISO 4217 currency code (string; optional; default "USD"; pattern ^[A-Za-z]{3}$). | USD |
| rate_percent | Yes | Tax rate % (number; required; min 0; max 100). | |
| amount_includes_tax | No | Amount is gross (tax included) (boolean; optional; default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| net | No | |
| tax | No | |
| gross | No | |
| currency | No | |
| rate_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value beyond them: no network access, no stored state, determinism guarantee, and concrete limits (64 KB input, 1 s per call, 1 MB result). It does not describe the output shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled sections (When / Not for / Side effects / Deterministic / Limits) that are easy to scan. The full Spanish/English duplication roughly doubles length, which is a cost, but no individual 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 4-parameter, read-only calculation tool with full schema coverage, rich annotations and an output schema, nothing an agent needs to invoke it correctly is missing. Limits, determinism and the sibling exclusion are all present.
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. The description nonetheless adds meaning the schema does not: rounding to the currency's minor units ties the currency parameter to observable behavior, and 'adds tax to a net amount or extracts it from a gross (tax-inclusive) amount' explains what amount_includes_tax actually toggles.
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 (adds/extracts) and resource (tax/VAT at any rate) plus the rounding behavior to minor units. It explicitly names the sibling it is not (co-iva) and why, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'When:' condition (exact, reproducible money/tax/financial math) and an explicit 'Not for:' exclusion routing to co-iva for Colombian IVA at 19%/5%/0%. Both the positive and negative selection criteria are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector-similaritySimilitud entre vectoresARead-onlyIdempotentInspect
Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: ordenar hasta 2.000 vectores por similitud coseno con un vector consulta y devolver los k mejores (vector-top-k). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Computes the cosine similarity, dot product, Euclidean and Manhattan distance between two numeric vectors of equal length (≤ 8,192 dims), plus their L2 norms. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: ranking up to 2,000 candidate vectors by cosine similarity (vector-top-k). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Vector a (array of number; required; at least 1 items; up to 8192 items). | |
| b | Yes | Vector b (array of number; required; at least 1 items; up to 8192 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| dot | No | |
| cosine | No | |
| norm_a | No | |
| norm_b | No | |
| euclidean | No | |
| manhattan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description reinforces this while adding genuinely new facts: determinism, a 64 KB input cap, 1 s per-call latency, a 1 MB result cap, and the 8,192-dimension limit. The 'side effects: none' sentence partly restates the annotations, which is why this stops 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?
The critical information (what it computes, when to use, when not to, limits) is front-loaded and each clause is informative. It is somewhat dense and the full Spanish text plus an English restatement and a repeated EN block in the schema description create duplication that slightly dilutes scannability.
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; the description still covers semantics, routing, determinism, limits and the equal-length constraint. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry descriptions, examples and min/max items, so the baseline of 3 is exceeded. The description adds a cross-parameter constraint not expressible in the schema: the two vectors must be of equal length, which is essential to invoking the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States concrete operations (cosine similarity, dot product, Euclidean and Manhattan distance) on a specific resource (two numeric vectors), plus the L2 norms. It explicitly contrasts itself with the sibling vector-top-k, so an agent can distinguish the two 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?
Uses an explicit 'When:' clause naming the appropriate scenarios (tokens, costs, retries, chunking, ranking, JSON clean-up) and an explicit 'Not for:' clause pointing to vector-top-k for top-k ranking. The routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector-top-kVectores más cercanos (top-k)ARead-onlyIdempotentInspect
Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repetible para un paso auxiliar (tokens, costos, reintentos, fragmentos, ranking, limpieza de JSON). No para: comparar dos vectores numéricos por coseno, producto punto o distancia euclidiana o Manhattan (vector-similarity). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Ranks up to 2,000 candidate vectors by cosine similarity (or negative Euclidean distance) to a query vector and returns the top k with indices and scores; total size capped at 2M numbers. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | k (integer; optional; default 5; min 1; max 2000). | |
| query | Yes | Query vector (array of number; required; at least 1 items; up to 8192 items). | |
| metric | No | Metric (optional; one of: cosine, euclidean; default "cosine"). | cosine |
| vectors | Yes | Candidate vectors (array of array; required; at least 1 items; up to 2000 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: determinism guarantee, size/time limits (64 KB input, 1 s per call, 1 MB result, 2M numbers), and the fact that it returns indices with scores. The read-only/no-network/no-state claims duplicate what readOnlyHint and openWorldHint already declare, so part of the text is redundant.
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?
Information is front-loaded and labeled clearly (Cuándo / No para / Efectos / Límites), which aids scanning. But the Spanish text is followed by a full English duplicate of the same content plus a cross-reference to the schema description, roughly doubling length without adding 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 annotations covering the safety profile, a complete schema, and an output schema, the description covers everything needed to call it correctly. The only gap is the unresolved tension between the Euclidean metric parameter and the Euclidean exclusion in the guidance.
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 with bounds, defaults, and enum. The description only restates the 2,000-vector and 2M-number caps and the top-k semantics, adding little new parameter-level 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?
States a specific verb and resource (rank up to 2,000 vectors by cosine similarity to a query vector, return top k with indices and scores) plus the exact scope limit. It explicitly names the sibling vector-similarity as the tool it is not, so an agent can separate the two 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?
Provides an explicit When block (exact, repeatable bookkeeping steps) and a Not-for block pointing at vector-similarity. However, the exclusion list includes 'distancia euclidiana' while the tool's own metric enum supports euclidean, which introduces mild ambiguity about when pairwise Euclidean comparison is or isn't appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verhoeffDígito de control VerhoeffARead-onlyIdempotentInspect
Valida un número con el dígito de control Verhoeff (el último dígito). Solo valida. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un número con el dígito de control Damm (damm). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a digit string with the Verhoeff dihedral-group checksum (catches all single errors and adjacent transpositions; used by India's Aadhaar); the last digit is the check digit. Validation only. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a digit string with the Damm quasigroup checksum (damm). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Digits including the final check digit (string; required; pattern ^\d{2,100}$). |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so the description's 'no side effects / deterministic' lines are largely redundant. However, it adds genuinely new operational context: the error-detection characteristics (all single errors and adjacent transpositions), the explicit 'validation only' framing, and concrete limits (64 KB input, 1 s per call, 1 MB result).
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 purpose, then a tight When/Not-for/Side-effects/Deterministic/Limits structure that is easy to scan. Points deducted because the full ES and EN blocks are near-duplicates, and the trailing '[EN completo / full EN: inputSchema.description]' pointer is redundant 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 boolean validator with a rich annotation set and an output schema, nothing material is missing: it covers what is validated, what the input must contain, when to use it, the alternative, and execution limits. Return-value shape is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the schema already carries the pattern and examples, so the baseline is 3. The description earns one more by clarifying the semantics that the pattern cannot express: the final digit IS the check digit, i.e. the input must include it rather than the bare payload.
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 (valida/validates) and resource (a digit string with the Verhoeff dihedral-group checksum), and explicitly notes the last digit is the check digit. It also names the sibling it is not (damm) and gives a concrete real-world anchor (Aadhaar), so an agent can distinguish it from the dozens of other checksum validators 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?
Provides an explicit 'Cuándo/When' clause (verify an identifier's format and check digit offline before use) and an explicit 'No para/Not for' clause pointing to the damm sibling. Both the positive trigger and the exclusion are spelled out rather than inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vin-validateValidar VIN de vehículoARead-onlyIdempotentInspect
Valida un VIN de 17 caracteres: caracteres, dígito de control (posición 9, Norteamérica), WMI, año y región. Cuándo: hay que verificar sin conexión el formato y el dígito de control de un identificador antes de usarlo. No para: validar un IMEI de 15 dígitos (imei-validate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Validates a 17-character VIN: allowed characters (no I, O, Q), the North American check digit (position 9), and decodes WMI, model year code and region. Non-North-American VINs may not use the check digit. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a 15-digit mobile device IMEI with its Luhn check digit and splitting it into TAC (imei-validate). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| vin | Yes | VIN (string; required; up to 20 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| vds | No | |
| vis | No | |
| wmi | No | |
| region | No | |
| valid_format | No | |
| check_digit_valid | No | |
| expected_check_digit | No | |
| model_year_candidates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered; the description nevertheless adds unique operational constraints: no network access, no stored state, and concrete limits (64 KB input, 1 s per call, 1 MB result). The determinism sentence largely restates idempotentHint, which keeps it out of the top score.
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 verb and what is validated, then labeled sections (Cuándo / No para / Efectos / Límites) that are easy to scan. It loses a point for the full ES/EN duplication, which repeats the same content twice inside one description (and a third time in inputSchema.description).
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 one-parameter validator with an output schema, everything the agent needs is present: what is validated, the non-North-American check-digit caveat, the alternative tool, side effects, and size/time limits. Return value details are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single parameter, so baseline would be 3; the description earns more because it clarifies the actual contract where the schema is loose — the schema allows up to 20 chars, while the description states the VIN must be 17 characters and excludes I/O/Q. That resolves a real ambiguity the schema alone leaves open.
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 (valida) and resource (VIN de 17 caracteres) and enumerates exactly what is checked/decoded: allowed characters, check digit at position 9, WMI, model year, region. It also names the sibling it is not (imei-validate), so an agent can separate it from the many other *-validate tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Cuándo' clause (verify format and check digit offline before use) and an explicit 'No para' clause routing the agent to imei-validate for 15-digit IMEIs. Both the use case and the exclusion are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word-frequencyFrecuencia de palabrasARead-onlyIdempotentInspect
Cuenta la frecuencia de palabras, con opción de excluir palabras vacías en inglés o español. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. No para: contar la frecuencia de cada carácter (char-frequency). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Counts word frequencies using Unicode word segmentation, case-folded, with optional minimum word length and English/Spanish stopword removal. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting how often each grapheme appears, sorted by frequency then by first appearance (char-frequency). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Top N (integer; optional; default 20; min 1; max 1000). | |
| text | Yes | Text (string; required). | |
| stopwords | No | Stopword list to exclude (optional; one of: none, en, es; default "none"). | none |
| min_length | No | Minimum word length (integer; optional; default 1; min 1; max 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
| top | No | |
| distinct | No | |
| total_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description adds genuinely new traits: no network, no stored state, determinism, and hard limits (64 KB input, 1 s per call, 1 MB result). One flaw: the stated 64 KB JSON limit sits uneasily against the schema's 1 MB text maxLength, which could mislead an agent sizing its input.
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?
Each language block is dense and front-loaded (purpose → when → not-for → effects → limits), but the entire content is duplicated verbatim in Spanish and English, roughly doubling length for no informational gain to a single-language reader.
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?
Return values are covered by the existing output schema, so the description only needs purpose, routing, and limits – all present, including determinism and no-side-effect guarantees. The only shortfall is the unresolved 64 KB vs 1 MB input-size inconsistency, which matters for a tool with a required bulk text 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 coverage is 100%, so baseline is 3, but the description adds semantics the schema does not: case-folding, Unicode segmentation rules, and that stopword lists are specifically English or Spanish. It does not explain 'top' ranking behavior (sorted by frequency, ties by first appearance) in the word-frequency section, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (counts word frequencies) plus the distinguishing mechanics: Unicode word segmentation, case-folding, optional min length, English/Spanish stopword removal. It explicitly names the sibling it is NOT (char-frequency), so an agent can separate the two 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?
Provides an explicit 'Cuándo'/'When' clause (exact measurement rather than approximation) and an explicit 'No para' pointing at char-frequency. The positive condition is somewhat abstract ('transform, compare or measure exactly'), so the routing value comes mostly from the exclusion rather than a concrete trigger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402-cost-estimateEstimar costo de llamadas x402ARead-onlyIdempotentInspect
Estima el costo de un lote de llamadas pagadas por uso (p. ej. x402 a USD 0,001) en USD y unidades base de USDC, y cuántas llamadas cubre un presupuesto. Cuándo: hay que leer, convertir o revisar una descripción de agente, una lista de herramientas, un documento OpenAPI o un recibo según el formato de su protocolo. No para: estimar el costo de llamadas a un LLM a partir de tokens (llm-cost-estimate). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Estimates the cost of a batch of pay-per-call API requests (e.g. x402 at $0.001/call) in USD and USDC base units, after a free allowance, and how many calls a budget buys. Exact decimal math. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | Number of calls (integer; required; min 0; max 1000000000000). | |
| budget_usd | No | Budget in USD (string; optional; pattern ^\d+(\.\d{1,6})?$). | |
| free_calls | No | Free calls before charging (integer; optional; default 0; min 0; max 1000000000000). | |
| price_per_call_usd | No | Price per call in USD (string; optional; default "0.001"; pattern ^\d+(\.\d{1,6})?$). | 0.001 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost_usd | No | |
| billable_calls | No | |
| calls_within_budget | No | |
| cost_usdc_base_units | No | |
| price_per_call_base_units | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false. The description still adds real value: 'Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado)', determinism ('la misma entrada da la misma salida') and concrete limits (64 KB input, 1 s, 1 MB result) that no annotation carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is labeled and front-loaded (purpose, when, not-for, side effects, limits), but the Spanish block is duplicated by a deferred 'full EN: inputSchema.description' pointer, and the 'Límites: 64 KB JSON / 1 s' boilerplate plus the off-topic 'Cuándo' sentence cost space without earning it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the core contract is covered. The remaining gap is that the when-to-use sentence points at document/receipt parsing rather than at cost/budget scenarios, and the English text lives only behind a pointer into inputSchema.description, so the definition is adequate but not self-sufficient.
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 documented in the schema and baseline is 3. The description adds modest semantics — 'after a free allowance' explains free_calls and 'Exact decimal math' justifies the string-typed price/budget fields — but nothing about the budget_usd/calls interaction that the schema does not already imply.
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 opening sentence names a specific verb and resource: estimate the cost of a batch of pay-per-call requests, reported in USD and USDC base units, including budget coverage. It also names the sibling it is not (llm-cost-estimate). The following 'Cuándo' clause is about reading/converting OpenAPI docs and receipts, which is unrelated to cost estimation and dilutes an otherwise clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The explicit exclusion 'No para: estimar el costo de llamadas a un LLM a partir de tokens (llm-cost-estimate)' is a genuine routing signal. However, the positive 'Cuándo' guidance describes parsing a document or receipt, which does not match what the tool does, so the when-to-use half is misleading rather than helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402-payment-decodeDecodificar cabecera de pago x402ARead-onlyIdempotentInspect
Decodifica un valor X-PAYMENT / PAYMENT-SIGNATURE de x402 (JSON en base64, v1 o v2) y revisa su estructura: esquema, red, campos EIP-3009 y formato de firma; opcionalmente lo compara con los PaymentRequirements. Firma no verificada. Cuándo: hay que leer y revisar una cabecera de pago x402 recibida por un vendedor, o armada por un cliente, antes de enviarla a un facilitador. No para: revisar los PaymentRequirements de una respuesta 402 de x402 (x402-requirements-lint). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decodes an x402 X-PAYMENT / PAYMENT-SIGNATURE value (base64 JSON, v1 or v2) and checks its structure: scheme, network, EIP-3009 authorization fields and signature format; optionally compares it with the PaymentRequirements. Signature not verified. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| header | Yes | X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header value: base64 JSON string, or the decoded object (string or object; required; up to 16448 chars). | |
| requirements | No | Optional PaymentRequirements to compare against: one accepts[] entry, the accepts array or the whole 402 body (object or array; optional; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| shape | No | |
| valid | No | |
| errors | No | |
| scheme | No | |
| decoded | No | |
| network | No | |
| warnings | No | |
| signature | No | |
| x402_version | No | |
| authorization | No | |
| network_caip2 | No | |
| requirement_checks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/no-network, but the description adds genuinely new context: the signature is NOT verified (a critical caveat that prevents misuse), the operation is deterministic, and hard limits are given (64 KB input, 1 s per call, 1 MB result). These are exactly the operational constraints annotations cannot express.
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 core action, then cleanly segmented with labeled clauses (Cuándo / No para / Efectos / Determinista / Límites). The bilingual duplication and the pointer to the EN text in inputSchema.description add some bulk, but each labeled clause carries distinct 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 description is not required; the description still covers scope, exclusions, side effects, determinism and resource limits. Nothing an agent needs in order to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `header` and `requirements` fully documented in the schema, so the baseline is 3. The description mentions the optional PaymentRequirements comparison but adds no format or interpretation detail beyond what the parameter descriptions already state.
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: decodes an x402 X-PAYMENT / PAYMENT-SIGNATURE value (base64 JSON, v1 or v2) and checks scheme, network, EIP-3009 fields and signature format. It explicitly names the sibling it is not (x402-requirements-lint), so an agent can distinguish it 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?
Provides an explicit 'Cuándo' (a payment header received by a seller or built by a client, before it goes to a facilitator) and an explicit 'No para' routing to x402-requirements-lint for 402-response requirements. Both the use case and the exclusion are named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402-payment-response-verifyRevisar respuesta de liquidación x402ARead-onlyIdempotentInspect
Comprueba una liquidación X-PAYMENT-RESPONSE / PAYMENT-RESPONSE de x402 frente a los PaymentRequirements dados (y opcionalmente el pago): éxito, formato del hash, red, pagador, payTo y monto. Solo consistencia de los datos dados, no lo registrado en la cadena. Cuándo: hay que cotejar una respuesta de liquidación x402 con lo ofrecido y pagado antes de entregar o registrar. No para: decodificar una cabecera de pago x402 y revisar su estructura (x402-payment-decode); ni revisar el vínculo de entrega de un recibo pagado de Burs-IA (SKU x402 de pago aparte de Burs-IA verify-x402-delivery-receipt, por llamada en USDC en Base). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks an x402 X-PAYMENT-RESPONSE / PAYMENT-RESPONSE settlement value against given PaymentRequirements (and optionally the payment… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| payment | No | Optional X-PAYMENT / PAYMENT-SIGNATURE value or decoded payload the client sent, to check payer, payTo and amount (string or object; optional; up to 16448 chars). | |
| response | Yes | X-PAYMENT-RESPONSE (v1) or PAYMENT-RESPONSE (v2) value: base64 JSON string or the decoded object (string or object; required; up to 16448 chars). | |
| requirements | Yes | The PaymentRequirements the seller offered: one accepts[] entry, the accepts array or the whole 402 body (object or array; required; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| payer | No | |
| checks | No | |
| errors | No | |
| network | No | |
| settled | No | |
| warnings | No | |
| consistent | No | |
| transaction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds critical behavioral context, such as stating that it checks 'data consistency only' and 'not on-chain' truth. It also provides essential operational limits (64 KB input, 1s latency, 1 MB result) and safety guarantees (read-only, deterministic).
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?
Despite being highly technical, the definition is structured logically using bulleted constraints for scope (When/Not for). Every sentence is essential, making it dense but maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the specialized nature and complexity of payment responses, the description is exceptionally complete. It clarifies limitations (data-only), required inputs, and operational boundaries, leaving no ambiguity for the AI agent.
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%. The description adds significant semantic value by detailing what specific fields are checked (hash format, network, payer, payTo, amount) and clarifying that the check is limited to the provided data, ensuring the agent knows the depth of the verification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states its purpose: to check an X-PAYMENT-RESPONSE/PAYMENT-RESPONSE against PaymentRequirements. It distinguishes itself effectively from sibling tools like x402-payment-decode by specifying that it verifies data consistency, not structural 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 tool provides perfect usage guidelines, including both 'When' and 'Not for' sections. It explicitly tells the agent when to use this tool (matching response vs. requirements) and when to use alternatives (decoding a header or checking delivery status).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402-replay-checkRevisar repetición y vencimiento x402ARead-onlyIdempotentInspect
Comprueba un pago x402 (cabecera, payload o autorización EIP-3009) frente a una hora dada y una lista de nonces ya vistos: nonce repetido, aún no válido, vencido o por vencer, y validBefore más lejos de ahora que maxTimeoutSeconds. Cuándo: un vendedor debe decidir si una autorización de pago x402 sigue vigente, con su registro de nonces aceptados. No para: decodificar una cabecera de pago x402 y revisar su estructura (x402-payment-decode); ni comparar dos recibos de entrega pagada de Burs-IA en busca de una liquidación duplicada (SKU x402 de pago aparte de Burs-IA verify-x402-replay, por llamada en USDC en Base). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Checks an x402 payment (header value, payload or EIP-3009 authorization) against a given time and a supplied list of seen nonces: replayed… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| now | Yes | Reference time: unix seconds (integer) or ISO 8601 date-time; no clock is read (integer or string; required; up to 40 chars). | |
| payment | Yes | X-PAYMENT / PAYMENT-SIGNATURE value (base64 JSON), the decoded payload, or an authorization object {from, nonce, validAfter, validBefore} (string or object; required; up to 16448 chars). | |
| seen_nonces | No | Nonces already accepted, as "0x…" or "from:0x…" (EIP-3009 nonces are unique per payer) (array of string; optional; default []). | |
| max_timeout_seconds | No | The seller's maxTimeoutSeconds; a validBefore further than this from now is reported (integer; optional; min 1; max 31536000). | |
| min_remaining_seconds | No | Seconds that must remain before validBefore for settlement to fit (integer; optional; default 6; min 0; max 86400). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| now | No | |
| from | No | |
| note | No | |
| nonce | No | |
| errors | No | |
| issues | No | |
| status | No | |
| warnings | No | |
| valid_after | No | |
| valid_before | No | |
| window_seconds | No | |
| seconds_remaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, idempotentHint and destructiveHint=false, so 'sin efectos secundarios / determinista' largely restates structured data. What the description genuinely adds beyond annotations is the operational envelope: 64 KB JSON input, 1 s per call, 1 MB result cap — concrete limits an agent must plan around that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Spanish body is front-loaded and dense: purpose, verdict list, when, not-for, side effects, limits — each sentence carries information. Minor waste from the bilingual duplication and the meta-artifact '… [EN completo / full EN: inputSchema.description]', which points at text already present rather than adding anything.
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 5 parameters, two required, 100% schema coverage, and an output schema available, the description supplies everything an agent needs before calling: accepted input shapes, the decision it answers, sibling routing, and hard size/time limits. Return-value explanation is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds meaning by tying the checks to specific parameters — maxTimeoutSeconds is explained as the bound against which validBefore is compared, and the freshness verdict implies min_remaining_seconds. It does not restate the accepted payment encodings or nonce format, which the schema already covers well.
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 — checking an x402 payment (header value, payload, or EIP-3009 authorization) against a reference time and a nonce list — and enumerates the exact verdicts produced (replayed, not yet valid, expired, near expiry, validBefore beyond maxTimeoutSeconds). It also names the sibling it is not (x402-payment-decode) so an agent can discriminate 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?
Explicit 'Cuándo' clause defines the decision context (a seller deciding whether an x402 authorization is still fresh, using its own accepted-nonce record), and an explicit 'No para' clause routes two alternatives: x402-payment-decode for structural decoding and verify-x402-replay for Burs-IA receipt comparison. When-to-use, when-not, and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402-requirements-lintRevisar requisitos de pago x402ARead-onlyIdempotentInspect
Revisa un cuerpo 402 de x402, un valor PAYMENT-REQUIRED, accepts[] o un PaymentRequirements (v1 o v2): campos obligatorios, redes CAIP-2, asset y payTo, montos atómicos, maxTimeoutSeconds, URL, mimeType, outputSchema y extensión Bazaar. Cuándo: hay que revisar una respuesta 402 o unos PaymentRequirements según el formato x402 antes de publicar o pagar. No para: decodificar una cabecera de pago x402 y revisar su estructura (x402-payment-decode); ni consultar en vivo la URL de un vendedor y revisar el 402 que devuelve (SKU x402 de pago aparte de Burs-IA verify-x402-seller, por llamada en USDC en Base). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Lints an x402 402 body, PAYMENT-REQUIRED value, accepts[] or one PaymentRequirements (v1 or v2): required fields, CAIP-2 networks, asset and payTo… [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| requirements | Yes | 402 body object, base64 PAYMENT-REQUIRED header value or JSON text, accepts[] array, or one PaymentRequirements object (object or array or string; required; up to 16448 chars; up to 100 items). |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | |
| valid | No | |
| errors | No | |
| entries | No | |
| summary | No | |
| warnings | No | |
| x402_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, no-network, idempotent, non-destructive. The description reinforces these but adds genuinely new context: concrete limits (64 KB input, 1 s per call, 1 MB result) and an explicit determinism guarantee. This is valuable beyond annotations, though some phrases (solo lectura, sin red) restate what openWorldHint=false already conveys.
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?
Well front-loaded: purpose, then when, then not-for, then effects/limits, all clearly delimited. The main inefficiency is the duplicated ES and EN text, which repeats the same content and inflates length without adding new 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 single-parameter, read-only lint tool with an output schema, this is complete: it covers what is validated, when to use it, what to avoid, side effects, determinism and hard limits. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single 'requirements' parameter's accepted shapes. The description adds a bit beyond the schema by specifying v1 vs v2 PaymentRequirements and the fields validated within them, giving the agent useful semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lints/reviews) and precise resource: an x402 402 body, PAYMENT-REQUIRED value, accepts[] or PaymentRequirements (v1/v2), then enumerates the exact fields checked. This is unambiguous and clearly distinct from decoding or fetching siblings.
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?
Explicit 'Cuándo' section says to use it before publishing or paying, and the 'No para' section names two alternatives (x402-payment-decode for header decoding, verify-x402-seller for live URL fetching) with the condition that selects each. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xml-parseXML a JSONARead-onlyIdempotentInspect
Convierte XML a JSON (atributos @nombre, texto #text, hijos repetidos como arreglos). Rechaza DTD y entidades. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir un subconjunto seguro de YAML a JSON (yaml-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses XML into JSON: attributes as @name, text as #text (or a plain string for text-only elements), repeated children as arrays. DTDs and custom entities are rejected (no XXE or entity expansion). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing a safe YAML subset (yaml-parse). Side effects: none (read-only, no network access, no stored state). [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | XML text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the provided annotations, the description specifies critical operational behaviors: rejection of DTD/entities (security context), deterministic nature, and hard constraints on input/output size and execution time. These add significant value beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While verbose, the description is perfectly structured and highly efficient; every sentence serves a distinct, valuable function for an AI agent making a decision.
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 single parameter and the complexity of the conversion process, the description is complete. It covers transformation rules, error handling/limits, and identity (deterministic) sufficiently to require no external lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, which sets a high baseline for parameter definition. While the description confirms the input is 'XML text (string; required)', it does not add complex semantic meaning that wasn't already covered by the schema or the surrounding text, justifying the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly and specifically states the function as 'Parses XML into JSON' and details the structural mapping rules (attributes as @name, children as arrays). It successfully differentiates itself by explicitly stating it is not a YAML parser.
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 a detailed 'When' and 'Not for' section. It contrasts itself against a specific sibling tool (yaml-parse) and defines the exact context (structured data transformation) in which it should be utilized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yaml-buildJSON a YAMLARead-onlyIdempotentInspect
Serializa un valor JSON como YAML en bloque, con comillas cuando hace falta. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: convertir un subconjunto seguro de YAML a JSON (yaml-parse). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Serializes a JSON value as block-style YAML, quoting strings that would otherwise be read as numbers, booleans, null or YAML syntax. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing a safe YAML subset (yaml-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Any JSON value (any JSON value; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| yaml | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description partly restates these. It does add value beyond them: the quote-when-ambiguous rule, determinism, and concrete operational limits (64 KB input, 1 s per call, 1 MB output) that the annotations cannot express.
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?
Each language block is tight, front-loads the verb and uses labeled clauses (When / Not for / Side effects / Limits) that scan well. The full Spanish+English duplication doubles length, though that appears to be a deliberate localization convention 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 return values needn't be explained; within that, the description covers input type, transformation semantics, determinism, side effects, limits and sibling routing. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage and an inline example, so the schema carries parameter meaning. The description adds nothing about the 'value' parameter specifically (e.g., no note on how nested arrays/objects are rendered), which is the expected baseline for fully-covered schemas.
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+resource: serialize a JSON value as block-style YAML, and even specifies block style and the quoting rule. It explicitly distinguishes itself from yaml-parse, so an agent can route between them 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?
Has explicit 'When' (transform/compare/check exact structured data) and 'Not for' (parsing a safe YAML subset → yaml-parse) clauses, naming the alternative tool directly. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yaml-parseYAML a JSONARead-onlyIdempotentInspect
Convierte un subconjunto seguro de YAML a JSON; rechaza anclas, alias, etiquetas y varios documentos. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, XML, arreglos). No para: serializar un valor JSON como YAML (yaml-build). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Parses a safe YAML subset (block maps and sequences, plain/quoted scalars, flow [..] {..}, | and > blocks, comments) to JSON. Anchors, aliases, tags, merge keys and multi-documents are rejected. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: serializing a JSON value as YAML (yaml-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| yaml | Yes | YAML text (string; required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | No | any JSON value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond annotations: rejects anchors, aliases, tags, merge keys and multi-documents, is deterministic, and declares hard limits (1 s per call, 1 MB result). Annotations already cover readOnly/idempotent/no-network, so this is well above the bar, but the phrase 'entrada JSON de hasta 64 KB' is an error — the input is YAML and the schema permits up to 1 MB, which could mislead on size 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?
The content is front-loaded and each clause is informative, but the entire description is duplicated in Spanish and English, and the tail sentence '[EN completo / full EN: inputSchema.description]' points at text it already repeated. Roughly half the text is redundant.
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; the description covers accepted input, rejected constructs, side effects, determinism, and limits — everything needed to invoke a single-parameter parser correctly. Only the mistranslated size limit is a blemish.
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% with an example, so baseline is 3; the description goes further by enumerating the accepted YAML subset (block maps/sequences, flow collections, | and > blocks, comments), which tells the agent what input will actually succeed. No syntax details for quoting edge cases, keeping it below 5.
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 ('Convierte un subconjunto seguro de YAML a JSON') and enumerates exactly which YAML constructs are supported and which are rejected. It names the sibling yaml-build as the inverse operation, so an agent can distinguish the two 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?
Explicit 'Cuándo:' clause lists the triggering scenarios (transform, compare, or check structured data exactly) and 'No para:' names the alternative tool (yaml-build) for the opposite direction. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zlib-compressComprimir (gzip, deflate, brotli)ARead-onlyIdempotentInspect
Comprime texto o bytes con gzip (RFC 1952), zlib/deflate (RFC 1950/1951) o Brotli (RFC 7932) y devuelve base64, tamaños y razón, para comparar formatos. Los bytes pueden variar entre versiones de zlib; la descompresión sigue siendo compatible. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: descomprimir datos base64 en gzip, zlib/deflate, deflate sin cabecera o Brotli (zlib-decompress). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Compresses text or bytes with gzip (RFC 1952), zlib/deflate (RFC 1950/1951) or Brotli (RFC 7932) and returns base64 plus sizes and ratio, to compare formats. Output bytes may differ between zlib versions; decompression stays compatible. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data to compress (string; required). | |
| level | No | Level (0-9 for gzip/deflate, 0-11 for brotli) (integer; optional; min 0; max 11). | |
| format | No | Format (optional; one of: gzip, deflate, deflate-raw, brotli; default "gzip"). | gzip |
| input_encoding | No | Encoding of data (optional; one of: utf8, base64, hex; default "utf8"). | utf8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ratio | No | |
| base64 | No | |
| format | No | |
| input_bytes | No | |
| output_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world and non-destructive, yet the description still adds real context: resource limits (64 KB JSON input, 1 s per call, 1 MB result) and the caveat that output bytes may differ across zlib versions while decompression remains compatible. Some phrases ("sin red, sin estado guardado") merely restate the annotations, and the "Determinista" claim sits slightly at odds with the version-variance note, keeping this 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?
Well front-loaded: purpose first, then when/when-not, side effects and limits in labelled clauses. The only inefficiency is the duplicated full Spanish and English rendering of the same content, which inflates length without adding 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 4-parameter, output-schema-bearing compression tool, everything an agent needs is present: scope, the sibling to avoid, safety profile, resource limits and the version-compatibility caveat. Return values are covered by the output schema, so no explanation of the response shape is required.
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 both enums (format, input_encoding) are documented with defaults in the schema, so the baseline is 3. The description mentions text/bytes and format names but adds nothing about the `level` parameter or how `input_encoding` should be paired with `data`, so it does not enrich parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (compress), the exact resource (text or bytes) and enumerates the supported codings with their RFCs (gzip RFC 1952, zlib/deflate RFC 1950/1951, Brotli RFC 7932), plus what it returns (base64, sizes, ratio). It also names the complementary sibling zlib-decompress, so an agent can separate the two without inspecting 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?
Explicit routing is given in both directions: "Cuándo: hay que convertir bytes o texto a esta codificación... sin adivinar" and "No para: descomprimir datos base64 en gzip, zlib/deflate, deflate sin cabecera o Brotli (zlib-decompress)". The exclusion names the exact alternative tool and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zlib-decompressDescomprimir (gzip, deflate, brotli)ARead-onlyIdempotentInspect
Descomprime datos base64 en gzip, zlib/deflate, deflate sin cabecera o Brotli (detecta gzip y zlib). La salida se limita a 1 MB, así que las «bombas» de compresión fallan de forma segura. Devuelve texto UTF-8 si es válido, si no base64. Cuándo: hay que convertir bytes o texto a esta codificación, o desde ella, con exactitud y sin adivinar. No para: comprimir texto o bytes con gzip (zlib-compress). Efectos secundarios: ninguno (solo lectura, sin red, sin estado guardado). Determinista: la misma entrada da la misma salida. Límites: entrada JSON de hasta 64 KB, 1 s por llamada, resultado de hasta 1 MB.
EN: Decompresses base64 data in gzip, zlib/deflate, raw deflate or Brotli (auto-detects gzip and zlib headers). Output is capped at 1 MB, so compression bombs fail safely. Returns UTF-8 text when valid, else base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. [EN completo / full EN: inputSchema.description]
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Compressed data (base64) (string; required). | |
| format | No | Format (auto detects gzip/zlib headers) (optional; one of: auto, gzip, deflate, deflate-raw, brotli; default "auto"). | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | |
| format | No | |
| output_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, yet the description adds real value beyond them: 1 MB output cap, safe failure on compression bombs, UTF-8 vs base64 return selection, determinism, and hard limits (64 KB input, 1 s per call). That is exactly the operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded and organized into labeled sections, but the full Spanish text plus a duplicated English rendering doubles the length, and the trailing '[EN completo / full EN: inputSchema.description]' is a dangling pointer rather than useful text. Several claims (read-only, deterministic, limits) are restated across sections.
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 covers formats, auto-detection, return encoding, size caps and rate limits. For a two-parameter, read-only utility, 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%, with both `data` and `format` documented and an enum for the five format values, so the baseline is 3. The description's note that `auto` detects gzip/zlib headers largely restates the schema's own wording and adds no new syntax or edge-case guidance (e.g. how ambiguous raw deflate is handled).
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 — decompressing base64 data — and enumerates the supported codecs (gzip, zlib/deflate, raw deflate, Brotli) with auto-detection. It explicitly names the sibling it is not (zlib-compress), so an agent can separate it from the compress counterpart 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?
There is an explicit 'Cuándo' block and a 'No para: comprimir ... (zlib-compress)' exclusion naming the alternative tool. The when-to-use sentence is a bit muddled ('to or from this encoding' applies to both directions, but this tool only decodes), which slightly weakens the routing signal.
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.
465 tool updates
- Changed
aba-routing-validate1 field changed- added
Input schema / properties / routing / examplesAdded value: +[ + "021000021" +]
- Changed
accept-language-parse1 field changed- added
Input schema / properties / header / examplesAdded value: +[ + "es-CO,es;q=0.9,en;q=0.8" +]
- Changed
age-calculate2 fields changed- added
Input schema / properties / as_of / examplesAdded value: +[ + "2026-10-31" +] - added
Input schema / properties / birth_date / examplesAdded value: +[ + "1990-05-15" +]
- Changed
agent-card-validate1 field changed- added
Input schema / properties / card / examplesAdded value: +[ + { + "name": "x", + "skills": [], + "url": "http://x.co" + } +]
- Changed
ar-cbu-validate1 field changed- added
Input schema / properties / cbu / examplesAdded value: +[ + "2850590940090418135201" +]
- Changed
ar-cuit-validate1 field changed- added
Input schema / properties / cuit / examplesAdded value: +[ + "33-69345023-9" +]
- Changed
array-chunk2 fields changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5 + ] +] - added
Input schema / properties / size / examplesAdded value: +[ + 2 +]
- Changed
array-count-by1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + "a", + "b", + "a", + "c", + "a", + "b" + ] +]
- Changed
array-dedupe1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + 1, + 2, + 1, + { + "a": 1 + }, + { + "a": 1 + } + ] +]
- Changed
array-filter-aggregate1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "a": { + "b": 5 + } + }, + { + "a": { + "b": 7 + } + }, + { + "a": {} + } + ] +]
- Changed
array-flatten1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + 1, + [ + 2, + [ + 3, + [ + 4 + ] + ] + ] + ] +]
- Changed
array-group-by2 fields changed- added
Input schema / properties / by / examplesAdded value: +[ + "t" +] - added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "t": "a", + "v": 1 + }, + { + "t": "b", + "v": 2 + }, + { + "t": "a", + "v": 3 + }, + { + "v": 4 + } + ] +]
- Changed
array-pluck2 fields changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "u": { + "id": 1 + } + }, + { + "u": { + "id": 2 + } + }, + {} + ] +] - added
Input schema / properties / key / examplesAdded value: +[ + "u.id" +]
- Changed
array-set-ops3 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + [ + 1, + 2, + 3 + ] +] - added
Input schema / properties / b / examplesAdded value: +[ + [ + 2, + 3, + 4 + ] +] - added
Input schema / properties / operation / examplesAdded value: +[ + "intersection" +]
- Changed
array-shuffle1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5 + ] +]
- Changed
array-sort1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "a": 2, + "n": "b" + }, + { + "a": 2, + "n": "a" + }, + { + "a": 1, + "n": "c" + } + ] +]
- Changed
ascii85-decode1 field changed- added
Input schema / properties / ascii85 / examplesAdded value: +[ + "9jqo^" +]
- Changed
ascii85-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "Man " +]
- Changed
base32-decode1 field changed- added
Input schema / properties / base32 / examplesAdded value: +[ + "MZXW6YTBOI======" +]
- Changed
base32-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "foobar" +]
- Changed
base58-decode1 field changed- added
Input schema / properties / base58 / examplesAdded value: +[ + "StV1DL6CwTryKyV" +]
- Changed
base58-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "hello world" +]
- Changed
base58check-decode1 field changed- added
Input schema / properties / base58check / examplesAdded value: +[ + "16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM" +]
- Changed
base58check-encode1 field changed- added
Input schema / properties / payload_hex / examplesAdded value: +[ + "00010966776006953d5567439e5e39f86a0d273bee" +]
- Changed
base64-decode1 field changed- added
Input schema / properties / base64 / examplesAdded value: +[ + "aGVsbG8=" +]
- Changed
base64-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "hello" +]
- Changed
base64url-decode1 field changed- added
Input schema / properties / base64url / examplesAdded value: +[ + "Pz8-" +]
- Changed
base64url-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "??>" +]
- Changed
basic-auth-header2 fields changed- added
Input schema / properties / password / examplesAdded value: +[ + "open sesame" +] - added
Input schema / properties / username / examplesAdded value: +[ + "Aladdin" +]
- Changed
bech32-decode1 field changed- added
Input schema / properties / bech32 / examplesAdded value: +[ + "A12UEL5L" +]
- Changed
bech32-encode2 fields changed- added
Input schema / properties / data_hex / examplesAdded value: +[ + "" +] - added
Input schema / properties / hrp / examplesAdded value: +[ + "a" +]
- Changed
bigint-calc3 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "99999999999999999999" +] - added
Input schema / properties / b / examplesAdded value: +[ + "1" +] - added
Input schema / properties / operation / examplesAdded value: +[ + "add" +]
- Changed
bill-split2 fields changed- added
Input schema / properties / people / examplesAdded value: +[ + 3 +] - added
Input schema / properties / total / examplesAdded value: +[ + 100 +]
- Changed
binary-decode1 field changed- added
Input schema / properties / binary / examplesAdded value: +[ + "01001000 01101001" +]
- Changed
binary-encode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hi" +]
- Changed
bitcoin-address-validate1 field changed- added
Input schema / properties / address / examplesAdded value: +[ + "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2" +]
- Changed
bm25-rank2 fields changed- added
Input schema / properties / documents / examplesAdded value: +[ + [ + "Lista de festivos en Colombia 2026", + "Recetas de cocina", + "Calendario de Colombia" + ] +] - added
Input schema / properties / query / examplesAdded value: +[ + "festivos Colombia" +]
- Changed
br-cnpj-validate1 field changed- added
Input schema / properties / cnpj / examplesAdded value: +[ + "11.222.333/0001-81" +]
- Changed
br-cpf-validate1 field changed- added
Input schema / properties / cpf / examplesAdded value: +[ + "529.982.247-25" +]
- Changed
business-days-add2 fields changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-10-30" +] - added
Input schema / properties / days / examplesAdded value: +[ + 1 +]
- Changed
business-days-between2 fields changed- added
Input schema / properties / end / examplesAdded value: +[ + "2026-11-09" +] - added
Input schema / properties / start / examplesAdded value: +[ + "2026-11-02" +]
- Changed
cache-control-parse1 field changed- added
Input schema / properties / header / examplesAdded value: +[ + "public, max-age=3600, stale-while-revalidate=60" +]
- Changed
calendar-month2 fields changed- added
Input schema / properties / month / examplesAdded value: +[ + 2 +] - added
Input schema / properties / year / examplesAdded value: +[ + 2026 +]
- Changed
card-brand-detect1 field changed- added
Input schema / properties / number / examplesAdded value: +[ + "4111 1111 1111 1111" +]
- Changed
case-camel1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "hello world foo" +]
- Changed
case-constant1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "maxRetryCount" +]
- Changed
case-detect1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "userId" +]
- Changed
case-dot1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "helloWorld" +]
- Changed
case-kebab1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "helloWorld Foo_bar" +]
- Changed
case-pascal1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "hello world foo" +]
- Changed
case-sentence1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "HELLO WORLD. how ARE you?" +]
- Changed
case-snake1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "helloWorld Foo-bar" +]
- Changed
case-swap1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hello World" +]
- Changed
case-title1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "the lord of the rings" +]
- Changed
case-train1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "content type" +]
- Changed
char-frequency1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "hello" +]
- Changed
checksum-adler321 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "Wikipedia" +]
- Changed
checksum-crc161 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "123456789" +]
- Changed
checksum-crc321 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "123456789" +]
- Changed
checksum-crc32c1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "123456789" +]
- Changed
checksum-fnv1a321 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
checksum-fnv1a641 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
checksum-murmur3-321 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
checksum-xxh321 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
cidr-contains2 fields changed- added
Input schema / properties / cidrs / examplesAdded value: +[ + [ + "192.168.0.0/16", + "10.0.0.0/8" + ] +] - added
Input schema / properties / ip / examplesAdded value: +[ + "10.1.2.3" +]
- Changed
cidr-info1 field changed- added
Input schema / properties / cidr / examplesAdded value: +[ + "192.168.1.77/26" +]
- Changed
cidr-split2 fields changed- added
Input schema / properties / cidr / examplesAdded value: +[ + "10.0.0.0/24" +] - added
Input schema / properties / new_prefix / examplesAdded value: +[ + 26 +]
- Changed
cipher-rot131 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hello, World!" +]
- Changed
city-distance2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "Bogotá" +] - added
Input schema / properties / to / examplesAdded value: +[ + "Medellín" +]
- Changed
city-local-time1 field changed- added
Input schema / properties / city / examplesAdded value: +[ + "Bogotá" +]
- Changed
city-lookup1 field changed- added
Input schema / properties / name / examplesAdded value: +[ + "Medellín" +]
- Changed
cl-rut1 field changed- added
Input schema / properties / rut / examplesAdded value: +[ + "12.345.678-5" +]
- Changed
co-amount-in-words1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 1200000 +]
- Changed
co-business-days-add2 fields changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-10-30" +] - added
Input schema / properties / days / examplesAdded value: +[ + 1 +]
- Changed
co-business-days-between2 fields changed- added
Input schema / properties / end / examplesAdded value: +[ + "2026-11-30" +] - added
Input schema / properties / start / examplesAdded value: +[ + "2026-11-01" +]
- Changed
co-cedula-format1 field changed- added
Input schema / properties / cedula / examplesAdded value: +[ + "CC 1.020.304.050" +]
- Changed
co-cop-format1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 1234567.89 +]
- Changed
co-cop-parse1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "$ 1.234.567,50" +]
- Changed
co-gmf1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 1000000 +]
- Changed
co-holidays1 field changed- added
Input schema / properties / year / examplesAdded value: +[ + 2026 +]
- Changed
co-is-holiday1 field changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-11-16" +]
- Changed
co-iva1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 100000 +]
- Changed
co-liquidacion-laboral3 fields changed- added
Input schema / properties / end_date / examplesAdded value: +[ + "2026-10-31" +] - added
Input schema / properties / monthly_salary / examplesAdded value: +[ + 2000000 +] - added
Input schema / properties / start_date / examplesAdded value: +[ + "2025-03-01" +]
- Changed
co-nit1 field changed- added
Input schema / properties / nit / examplesAdded value: +[ + "800197268" +]
- Changed
co-phone-validate1 field changed- added
Input schema / properties / phone / examplesAdded value: +[ + "+57 300 123 4567" +]
- Changed
co-plate-validate1 field changed- added
Input schema / properties / plate / examplesAdded value: +[ + "abc 123" +]
- Changed
co-retencion-salarios1 field changed- added
Input schema / properties / monthly_labor_income / examplesAdded value: +[ + 10000000 +]
- Changed
code-blocks-extract1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Run:\n```bash\nnpm test\n```\nand\n```js\nconsole.log(1)\nconsole.log(2)\n```" +]
- Changed
color-adjust1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#3366cc" +]
- Changed
color-blindness-simulate1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#ff0000" +]
- Changed
color-contrast2 fields changed- added
Input schema / properties / background / examplesAdded value: +[ + "#fff" +] - added
Input schema / properties / foreground / examplesAdded value: +[ + "#000" +]
- Changed
color-contrast-fix2 fields changed- added
Input schema / properties / background / examplesAdded value: +[ + "#ffffff" +] - added
Input schema / properties / foreground / examplesAdded value: +[ + "#777777" +]
- Changed
color-convert1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#ff8800" +]
- Changed
color-delta-e2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "#ff0000" +] - added
Input schema / properties / b / examplesAdded value: +[ + "#fe0000" +]
- Changed
color-luminance1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#ffcc00" +]
- Changed
color-mix2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "#ff0000" +] - added
Input schema / properties / b / examplesAdded value: +[ + "#0000ff" +]
- Changed
color-name-nearest1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#ff6348" +]
- Changed
color-palette2 fields changed- added
Input schema / properties / color / examplesAdded value: +[ + "#3366cc" +] - added
Input schema / properties / scheme / examplesAdded value: +[ + "complementary" +]
- Changed
color-scale1 field changed- added
Input schema / properties / color / examplesAdded value: +[ + "#000000" +]
- Changed
color-temperature1 field changed- added
Input schema / properties / kelvin / examplesAdded value: +[ + 6600 +]
- Changed
combinatorics2 fields changed- added
Input schema / properties / n / examplesAdded value: +[ + 5 +] - added
Input schema / properties / r / examplesAdded value: +[ + 2 +]
- Changed
content-type-parse1 field changed- added
Input schema / properties / header / examplesAdded value: +[ + "Text/HTML; Charset=\"UTF-8\"" +]
- Changed
convert-acceleration2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "g" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-angle2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "deg" +] - added
Input schema / properties / value / examplesAdded value: +[ + 180 +]
- Changed
convert-area2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "acre" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-cooking3 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "cup" +] - added
Input schema / properties / to / examplesAdded value: +[ + "g" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-data-rate2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "Mbit/s" +] - added
Input schema / properties / value / examplesAdded value: +[ + 100 +]
- Changed
convert-data-size2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "GiB" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-density2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "g/cm3" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-energy2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "kWh" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-flow-rate2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "l/s" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-force2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "kgf" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-frequency2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "rpm" +] - added
Input schema / properties / value / examplesAdded value: +[ + 3000 +]
- Changed
convert-fuel-economy2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "mpg" +] - added
Input schema / properties / value / examplesAdded value: +[ + 30 +]
- Changed
convert-length2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "mi" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-mass2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "lb" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-power2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "hp" +] - added
Input schema / properties / value / examplesAdded value: +[ + 100 +]
- Changed
convert-pressure2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "atm" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
convert-speed2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "km/h" +] - added
Input schema / properties / value / examplesAdded value: +[ + 100 +]
- Changed
convert-temperature2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "C" +] - added
Input schema / properties / value / examplesAdded value: +[ + 100 +]
- Changed
convert-time2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "min" +] - added
Input schema / properties / value / examplesAdded value: +[ + 90 +]
- Changed
convert-torque2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "N·m" +] - added
Input schema / properties / value / examplesAdded value: +[ + 100 +]
- Changed
convert-volume2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "gal" +] - added
Input schema / properties / value / examplesAdded value: +[ + 1 +]
- Changed
cookie-parse1 field changed- added
Input schema / properties / cookie / examplesAdded value: +[ + "sid=abc123; theme=dark; name=Ana%20Mar%C3%ADa" +]
- Changed
coordinates-to-decimal2 fields changed- added
Input schema / properties / latitude / examplesAdded value: +[ + "4°42'39.6\"N" +] - added
Input schema / properties / longitude / examplesAdded value: +[ + "74°04'19.6\"W" +]
- Changed
coordinates-to-dms2 fields changed- added
Input schema / properties / lat / examplesAdded value: +[ + 4.711 +] - added
Input schema / properties / lon / examplesAdded value: +[ + -74.0721 +]
- Changed
count-occurrences2 fields changed- added
Input schema / properties / substring / examplesAdded value: +[ + "ana" +] - added
Input schema / properties / text / examplesAdded value: +[ + "banana" +]
- Changed
country-info1 field changed- added
Input schema / properties / country / examplesAdded value: +[ + "CO" +]
- Changed
country-population1 field changed- added
Input schema / properties / country / examplesAdded value: +[ + "Colombia" +]
- Changed
crockford32-decode1 field changed- added
Input schema / properties / crockford32 / examplesAdded value: +[ + "csqpyrk1e8" +]
- Changed
crockford32-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "foobar" +]
- Changed
cron-explain1 field changed- added
Input schema / properties / expression / examplesAdded value: +[ + "30 9 * * 1-5" +]
- Changed
cron-next-runs2 fields changed- added
Input schema / properties / after / examplesAdded value: +[ + "2026-10-30T10:00:00-05:00" +] - added
Input schema / properties / expression / examplesAdded value: +[ + "30 9 * * 1-5" +]
- Changed
csp-parse1 field changed- added
Input schema / properties / policy / examplesAdded value: +[ + "default-src 'self'; script-src 'self' 'nonce-abc'; object-src 'none'; base-uri 'self'" +]
- Changed
csv-build1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + [ + { + "age": 30, + "name": "Ana" + }, + { + "name": "Pérez, Juan", + "tags": [ + "a" + ] + } + ] +]
- Changed
csv-parse1 field changed- added
Input schema / properties / csv / examplesAdded value: +[ + "name,age\nAna,30\n\"Pérez, Juan\",\"4\"\"2\"" +]
- Changed
currency-format1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 1234.5 +]
- Changed
currency-info1 field changed- added
Input schema / properties / currency / examplesAdded value: +[ + "cop" +]
- Changed
cusip-validate1 field changed- added
Input schema / properties / cusip / examplesAdded value: +[ + "037833100" +]
- Changed
damerau-levenshtein2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "ca" +] - added
Input schema / properties / b / examplesAdded value: +[ + "ac" +]
- Changed
damm1 field changed- added
Input schema / properties / number / examplesAdded value: +[ + "5724" +]
- Changed
data-uri-build1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "hi" +]
- Changed
data-uri-parse1 field changed- added
Input schema / properties / uri / examplesAdded value: +[ + "data:,Hello%2C%20World" +]
- Changed
date-add1 field changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2026-01-31" +]
- Changed
date-between2 fields changed- added
Input schema / properties / end / examplesAdded value: +[ + "2026-10-31" +] - added
Input schema / properties / start / examplesAdded value: +[ + "2024-02-29" +]
- Changed
date-range2 fields changed- added
Input schema / properties / end / examplesAdded value: +[ + "2026-05-01" +] - added
Input schema / properties / start / examplesAdded value: +[ + "2026-01-31" +]
- Changed
date-relative2 fields changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2026-11-03T12:00:00Z" +] - added
Input schema / properties / reference / examplesAdded value: +[ + "2026-10-31T12:00:00Z" +]
- Changed
datetime-format1 field changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2026-10-31T14:05:09Z" +]
- Changed
datetime-parse1 field changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2026-10-31T12:00:00Z" +]
- Changed
decimal-to-fraction1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + 3.14159 +]
- Changed
dedupe-similar1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + "Envío gratis a Bogotá", + "envio gratis a bogota!", + "Pago contra entrega", + "Envío gratis a Medellín" + ] +]
- Changed
dice-similarity2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "night" +] - added
Input schema / properties / b / examplesAdded value: +[ + "nacht" +]
- Changed
diff-lines2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "a\nb\nc" +] - added
Input schema / properties / b / examplesAdded value: +[ + "a\nB\nc" +]
- Changed
discount-calculate2 fields changed- added
Input schema / properties / discounts / examplesAdded value: +[ + [ + { + "percent": 20 + }, + { + "percent": 10 + } + ] +] - added
Input schema / properties / price / examplesAdded value: +[ + 100 +]
- Changed
domain-syntax-validate1 field changed- added
Input schema / properties / domain / examplesAdded value: +[ + "api.burs-ia.com" +]
- Changed
dot-check1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "digraph pedido {\n rankdir=LR;\n crear -> pagar -> enviar [label=\"ok\", color=green];\n pagar -> cancelar;\n}" +]
- Changed
dotenv-parse1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "# cfg\nexport PORT=8080\nNAME=\"Burs IA\\n\"\nRAW='a#b'\nX=1 # note\nbad line" +]
- Changed
duration-format1 field changed- added
Input schema / properties / seconds / examplesAdded value: +[ + 93784 +]
- Changed
duration-parse1 field changed- added
Input schema / properties / duration / examplesAdded value: +[ + "P1DT2H30M" +]
- Changed
easter-sunday1 field changed- added
Input schema / properties / year / examplesAdded value: +[ + 2026 +]
- Changed
ec-id-validate1 field changed- added
Input schema / properties / id / examplesAdded value: +[ + "1713175071" +]
- Changed
email-syntax-validate1 field changed- added
Input schema / properties / email / examplesAdded value: +[ + "Ana.Maria+facturas@Burs-IA.COM" +]
- Changed
emvco-qr-parse1 field changed- added
Input schema / properties / payload / examplesAdded value: +[ + "000201520400005303170" +]
- Changed
es-compare2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "José Pérez" +] - added
Input schema / properties / b / examplesAdded value: +[ + "jose perez" +]
- Changed
es-date-parse1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "La reunión es el martes tres de marzo de 2026 a las 10." +]
- Changed
es-dni-nie-validate1 field changed- added
Input schema / properties / id / examplesAdded value: +[ + "12345678Z" +]
- Changed
es-name-case1 field changed- added
Input schema / properties / name / examplesAdded value: +[ + "MARÍA DE LOS ÁNGELES GÓMEZ-RESTREPO" +]
- Changed
es-number-parse1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "tres mil cuatrocientos veintiuno" +]
- Changed
es-number-to-words1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 1234567 +]
- Changed
es-ordinal1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 23 +]
- Changed
es-sentence-split1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "¿Vienes mañana? El Sr. Pérez llega a las 3.30. ¡Qué bien!" +]
- Changed
es-slug1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Feliz Año Nuevo en Bogotá" +]
- Changed
es-stress1 field changed- added
Input schema / properties / word / examplesAdded value: +[ + "canción" +]
- Changed
es-syllabify1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "murciélago" +]
- Changed
evm-address-checksum1 field changed- added
Input schema / properties / address / examplesAdded value: +[ + "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed" +]
- Changed
expression-evaluate1 field changed- added
Input schema / properties / expression / examplesAdded value: +[ + "2 + 3 * (4 - 1) ^ 2" +]
- Changed
extract-emails1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Write to Ana@Example.COM or soporte@burs-ia.com." +]
- Changed
extract-emojis1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "ok 👍🏽 family 👨👩👧 🇨🇴" +]
- Changed
extract-hashtags1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hola #Bogotá y #IA_2026 #1" +]
- Changed
extract-mentions1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "cc @ana and @bob.dev, not x@y.com" +]
- Changed
extract-numbers1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Paid $1,234.50 on 3 items, -2.5e3 delta" +]
- Changed
extract-urls1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "See https://example.com/a?b=1, and (www.burs-ia.com)." +]
- Changed
factorial1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 20 +]
- Changed
fibonacci1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 90 +]
- Changed
file-type-detect1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" +]
- Changed
fin-bond2 fields changed- added
Input schema / properties / coupon_rate / examplesAdded value: +[ + 5 +] - added
Input schema / properties / years / examplesAdded value: +[ + 2 +]
- Changed
fin-break-even3 fields changed- added
Input schema / properties / fixed_costs / examplesAdded value: +[ + 10000 +] - added
Input schema / properties / price / examplesAdded value: +[ + 50 +] - added
Input schema / properties / variable_cost / examplesAdded value: +[ + 30 +]
- Changed
fin-cagr3 fields changed- added
Input schema / properties / end_value / examplesAdded value: +[ + 200 +] - added
Input schema / properties / start_value / examplesAdded value: +[ + 100 +] - added
Input schema / properties / years / examplesAdded value: +[ + 5 +]
- Changed
fin-compound-interest3 fields changed- added
Input schema / properties / annual_rate / examplesAdded value: +[ + 0.05 +] - added
Input schema / properties / principal / examplesAdded value: +[ + 1000 +] - added
Input schema / properties / years / examplesAdded value: +[ + 10 +]
- Changed
fin-irr1 field changed- added
Input schema / properties / cash_flows / examplesAdded value: +[ + [ + -1000, + 300, + 400, + 500 + ] +]
- Changed
fin-loan-amortization3 fields changed- added
Input schema / properties / annual_rate / examplesAdded value: +[ + 0.12 +] - added
Input schema / properties / periods / examplesAdded value: +[ + 3 +] - added
Input schema / properties / principal / examplesAdded value: +[ + 1000 +]
- Changed
fin-loan-payment3 fields changed- added
Input schema / properties / annual_rate / examplesAdded value: +[ + 0.06 +] - added
Input schema / properties / periods / examplesAdded value: +[ + 360 +] - added
Input schema / properties / principal / examplesAdded value: +[ + 200000 +]
- Changed
fin-loan-prepayment5 fields changed- added
Input schema / properties / annual_rate / examplesAdded value: +[ + 0.12 +] - added
Input schema / properties / payments_made / examplesAdded value: +[ + 24 +] - added
Input schema / properties / periods / examplesAdded value: +[ + 120 +] - added
Input schema / properties / prepayment / examplesAdded value: +[ + 10000000 +] - added
Input schema / properties / principal / examplesAdded value: +[ + 100000000 +]
- Changed
fin-npv2 fields changed- added
Input schema / properties / cash_flows / examplesAdded value: +[ + [ + -1000, + 300, + 400, + 500 + ] +] - added
Input schema / properties / rate / examplesAdded value: +[ + 0.1 +]
- Changed
fin-option-price5 fields changed- added
Input schema / properties / rate / examplesAdded value: +[ + 5 +] - added
Input schema / properties / spot / examplesAdded value: +[ + 100 +] - added
Input schema / properties / strike / examplesAdded value: +[ + 100 +] - added
Input schema / properties / volatility / examplesAdded value: +[ + 20 +] - added
Input schema / properties / years / examplesAdded value: +[ + 1 +]
- Changed
fin-risk-ratios1 field changed- added
Input schema / properties / returns / examplesAdded value: +[ + [ + 0.1, + -0.05, + 0.02, + -0.1, + 0.08 + ] +]
- Changed
fin-roi2 fields changed- added
Input schema / properties / cost / examplesAdded value: +[ + 1000 +] - added
Input schema / properties / final_value / examplesAdded value: +[ + 1500 +]
- Changed
fin-simple-interest3 fields changed- added
Input schema / properties / annual_rate / examplesAdded value: +[ + 0.05 +] - added
Input schema / properties / principal / examplesAdded value: +[ + 1000 +] - added
Input schema / properties / time / examplesAdded value: +[ + 3 +]
- Changed
fin-tvm1 field changed- added
Input schema / properties / solve_for / examplesAdded value: +[ + "pmt" +]
- Changed
fin-xirr1 field changed- added
Input schema / properties / flows / examplesAdded value: +[ + [ + { + "amount": -1000, + "date": "2025-01-01" + }, + { + "amount": 1100, + "date": "2026-01-01" + } + ] +]
- Changed
fiscal-period1 field changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-10-31" +]
- Changed
fraction-arithmetic3 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "1/2" +] - added
Input schema / properties / b / examplesAdded value: +[ + "1/3" +] - added
Input schema / properties / operation / examplesAdded value: +[ + "add" +]
- Changed
fraction-simplify1 field changed- added
Input schema / properties / fraction / examplesAdded value: +[ + "6/8" +]
- Changed
geo-bearing2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + { + "lat": 51.5074, + "lon": -0.1278 + } +] - added
Input schema / properties / to / examplesAdded value: +[ + { + "lat": 48.8566, + "lon": 2.3522 + } +]
- Changed
geo-bounding-box2 fields changed- added
Input schema / properties / center / examplesAdded value: +[ + { + "lat": 4.711, + "lon": -74.0721 + } +] - added
Input schema / properties / radius / examplesAdded value: +[ + 10 +]
- Changed
geo-destination3 fields changed- added
Input schema / properties / bearing / examplesAdded value: +[ + 90 +] - added
Input schema / properties / distance / examplesAdded value: +[ + 111.195 +] - added
Input schema / properties / from / examplesAdded value: +[ + { + "lat": 0, + "lon": 0 + } +]
- Changed
geo-haversine2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + { + "lat": 51.5074, + "lon": -0.1278 + } +] - added
Input schema / properties / to / examplesAdded value: +[ + { + "lat": 48.8566, + "lon": 2.3522 + } +]
- Changed
geo-midpoint1 field changed- added
Input schema / properties / points / examplesAdded value: +[ + [ + { + "lat": 51.5074, + "lon": -0.1278 + }, + { + "lat": 48.8566, + "lon": 2.3522 + } + ] +]
- Changed
geo-nearest2 fields changed- added
Input schema / properties / candidates / examplesAdded value: +[ + [ + { + "lat": 6.2442, + "lon": -75.5812 + } + ] +] - added
Input schema / properties / origin / examplesAdded value: +[ + { + "lat": 4.711, + "lon": -74.0721 + } +]
- Changed
geo-path-length1 field changed- added
Input schema / properties / points / examplesAdded value: +[ + [ + { + "lat": 4.711, + "lon": -74.0721 + }, + { + "lat": 6.2442, + "lon": -75.5812 + }, + { + "lat": 4.711, + "lon": -74.0721 + } + ] +]
- Changed
geo-point-in-polygon2 fields changed- added
Input schema / properties / point / examplesAdded value: +[ + { + "lat": 0.5, + "lon": 0.5 + } +] - added
Input schema / properties / polygon / examplesAdded value: +[ + [ + [ + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 1, + 1 + ], + [ + 0, + 1 + ], + [ + 0, + 0 + ] + ] + ] +]
- Changed
geo-polygon-area1 field changed- added
Input schema / properties / ring / examplesAdded value: +[ + [ + [ + 0, + 0 + ], + [ + 0.001, + 0 + ], + [ + 0.001, + 0.001 + ], + [ + 0, + 0.001 + ] + ] +]
- Changed
geo-vincenty2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + { + "lat": -37.95103342, + "lon": 144.42486789 + } +] - added
Input schema / properties / to / examplesAdded value: +[ + { + "lat": -37.65282114, + "lon": 143.92649554 + } +]
- Changed
geohash-decode1 field changed- added
Input schema / properties / geohash / examplesAdded value: +[ + "u4pruydqqvj" +]
- Changed
geohash-encode2 fields changed- added
Input schema / properties / lat / examplesAdded value: +[ + 57.64911 +] - added
Input schema / properties / lon / examplesAdded value: +[ + 10.40744 +]
- Changed
geohash-neighbors1 field changed- added
Input schema / properties / geohash / examplesAdded value: +[ + "u4pruyd" +]
- Changed
geojson-bbox1 field changed- added
Input schema / properties / geojson / examplesAdded value: +[ + { + "coordinates": [ + [ + [ + 0, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 2 + ], + [ + 0, + 2 + ], + [ + 0, + 0 + ] + ] + ], + "type": "Polygon" + } +]
- Changed
gtin-check-digit1 field changed- added
Input schema / properties / body / examplesAdded value: +[ + "770200400350" +]
- Changed
gtin-validate1 field changed- added
Input schema / properties / code / examplesAdded value: +[ + "7702004003508" +]
- Changed
hamming-distance2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "karolin" +] - added
Input schema / properties / b / examplesAdded value: +[ + "kathrin" +]
- Changed
hash-blake2b5121 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-blake2s2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-keccak2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
hash-md51 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-multi1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-ripemd1601 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha11 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha2241 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha3-2241 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha3-2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha3-3841 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha3-5121 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha3841 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha5121 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-sha512-2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hash-shake1281 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
hash-shake2561 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "" +]
- Changed
hash-sm31 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "abc" +]
- Changed
hex-decode1 field changed- added
Input schema / properties / hex / examplesAdded value: +[ + "6869" +]
- Changed
hex-encode1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "hi" +]
- Changed
hmac-md52 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-sha12 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-sha2562 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-sha3-2562 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-sha3842 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-sha5122 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
hmac-verify3 fields changed- added
Input schema / properties / data / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +] - added
Input schema / properties / expected / examplesAdded value: +[ + "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8" +] - added
Input schema / properties / key / examplesAdded value: +[ + "key" +]
- Changed
html-escape1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "<a href=\"x\">Tom & Jerry's</a>" +]
- Changed
html-links-extract1 field changed- added
Input schema / properties / html / examplesAdded value: +[ + "<a href=\"a.html\">A</a><a href=\"a.html\">A otra vez</a>" +]
- Changed
html-meta-extract1 field changed- added
Input schema / properties / html / examplesAdded value: +[ + "<p>no head</p>" +]
- Changed
html-tables-extract1 field changed- added
Input schema / properties / html / examplesAdded value: +[ + "<p>x</p><table><tr><td colspan=\"2\">Total & IVA</td></tr><tr><td>a</td><td>b</td></tr></table>" +]
- Changed
html-to-text1 field changed- added
Input schema / properties / html / examplesAdded value: +[ + "<h1>Hola</h1><p>Uno & <b>dos</b></p><script>x()</script><ul><li>a</li><li>b</li></ul>" +]
- Changed
html-unescape1 field changed- added
Input schema / properties / html / examplesAdded value: +[ + "Tom & Jerry <3 ñandú €€" +]
- Changed
http-date1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + "2026-10-31T12:00:00Z" +]
- Changed
http-headers-parse1 field changed- added
Input schema / properties / raw / examplesAdded value: +[ + "Host: x.co\nbad line" +]
- Changed
http-status1 field changed- added
Input schema / properties / code / examplesAdded value: +[ + 429 +]
- Changed
iban-validate1 field changed- added
Input schema / properties / iban / examplesAdded value: +[ + "DE89 3704 0044 0532 0130 00" +]
- Changed
idempotency-key1 field changed- added
Input schema / properties / url / examplesAdded value: +[ + "https://api.x.co/orders" +]
- Changed
imei-validate1 field changed- added
Input schema / properties / imei / examplesAdded value: +[ + "49-015420-323751-8" +]
- Changed
int-gcd-lcm1 field changed- added
Input schema / properties / numbers / examplesAdded value: +[ + [ + 12, + 18, + 30 + ] +]
- Changed
interest-rate-convert2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + "effective_annual" +] - added
Input schema / properties / rate_percent / examplesAdded value: +[ + 24 +]
- Changed
invoice-total1 field changed- added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "discount_percent": 10, + "quantity": 3, + "tax_percent": 8.25, + "unit_price": 9.99 + } + ] +]
- Changed
ip-parse1 field changed- added
Input schema / properties / ip / examplesAdded value: +[ + "192.168.1.10" +]
- Changed
ip-range-to-cidrs2 fields changed- added
Input schema / properties / end / examplesAdded value: +[ + "192.168.0.255" +] - added
Input schema / properties / start / examplesAdded value: +[ + "192.168.0.0" +]
- Changed
is-prime1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 97 +]
- Changed
isbn-validate1 field changed- added
Input schema / properties / isbn / examplesAdded value: +[ + "978-0-306-40615-7" +]
- Changed
isin-validate1 field changed- added
Input schema / properties / isin / examplesAdded value: +[ + "US0378331005" +]
- Changed
iso-country-lookup1 field changed- added
Input schema / properties / query / examplesAdded value: +[ + "co" +]
- Changed
iso-language-lookup1 field changed- added
Input schema / properties / query / examplesAdded value: +[ + "quechua" +]
- Changed
issn-validate1 field changed- added
Input schema / properties / issn / examplesAdded value: +[ + "0378-5955" +]
- Changed
jaro-winkler2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "MARTHA" +] - added
Input schema / properties / b / examplesAdded value: +[ + "MARHTA" +]
- Changed
json-canonicalize1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "a": [ + 1, + 1e+21, + 0.1 + ], + "b": 2, + "c": "é" + } +]
- Changed
json-describe1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "a": [ + 1, + 2 + ], + "b": { + "c": null + } + } +]
- Changed
json-diff-patch2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + { + "x": 1, + "y": [ + 1, + 2, + 3 + ], + "z": 0 + } +] - added
Input schema / properties / b / examplesAdded value: +[ + { + "w": true, + "x": 2, + "y": [ + 1, + 2 + ] + } +]
- Changed
json-extract1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Sure! Here it is:\n```json\n{\"city\": \"Bogotá\", \"temp\": 14}\n```\nAlso [1,2,3] inline." +]
- Changed
json-flatten-paths1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "a": { + "b": [ + 1, + { + "c": 2 + } + ] + }, + "d": {} + } +]
- Changed
json-merge-patch-apply2 fields changed- added
Input schema / properties / patch / examplesAdded value: +[ + [ + 1 + ] +] - added
Input schema / properties / value / examplesAdded value: +[ + { + "a": 1 + } +]
- Changed
json-merge-patch-create2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + { + "a": 1, + "b": { + "c": 1, + "d": 2 + } + } +] - added
Input schema / properties / b / examplesAdded value: +[ + { + "a": 1, + "b": { + "c": 3 + }, + "e": "x" + } +]
- Changed
json-minify1 field changed- added
Input schema / properties / json / examplesAdded value: +[ + "{ \"a\" : [ 1, 2 ] }" +]
- Changed
json-omit2 fields changed- added
Input schema / properties / keys / examplesAdded value: +[ + [ + "token" + ] +] - added
Input schema / properties / value / examplesAdded value: +[ + { + "a": 1, + "n": { + "token": "y" + }, + "token": "x" + } +]
- Changed
json-parse-check1 field changed- added
Input schema / properties / json / examplesAdded value: +[ + "{\"a\":[1,2]}" +]
- Changed
json-patch-apply2 fields changed- added
Input schema / properties / patch / examplesAdded value: +[ + [ + { + "op": "replace", + "path": "/a", + "value": 2 + }, + { + "op": "add", + "path": "/list/-", + "value": 3 + }, + { + "op": "remove", + "path": "/list/0" + } + ] +] - added
Input schema / properties / value / examplesAdded value: +[ + { + "a": 1, + "list": [ + 1, + 2 + ] + } +]
- Changed
json-path2 fields changed- added
Input schema / properties / path / examplesAdded value: +[ + "$[-2:]" +] - added
Input schema / properties / value / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5 + ] +]
- Changed
json-pick2 fields changed- added
Input schema / properties / paths / examplesAdded value: +[ + [ + "id", + "user.name" + ] +] - added
Input schema / properties / value / examplesAdded value: +[ + { + "extra": true, + "id": 1, + "user": { + "name": "Ana", + "pw": "x" + } + } +]
- Changed
json-pointer-get2 fields changed- added
Input schema / properties / pointer / examplesAdded value: +[ + "/a/b~1c/1" +] - added
Input schema / properties / value / examplesAdded value: +[ + { + "a": { + "b/c": [ + 10, + 20 + ] + } + } +]
- Changed
json-pretty1 field changed- added
Input schema / properties / json / examplesAdded value: +[ + "{\"b\":1,\"a\":[1,2]}" +]
- Changed
json-repair1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "```json\n{name: 'Ana', 'tags': ['a', 'b',], active: True, // ok\n score: NaN}\n```" +]
- Changed
json-schema-from-samples1 field changed- added
Input schema / properties / samples / examplesAdded value: +[ + [ + { + "id": 1, + "name": "a", + "tags": [ + "x" + ] + }, + { + "id": 2.5, + "tags": [] + } + ] +]
- Changed
json-schema-validate1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "age": 30, + "name": "Ana" + } +]
- Changed
json-sort-keys1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "a": { + "c": 2, + "d": 1 + }, + "b": 1 + } +]
- Changed
json-string-escape1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "He said \"hi\"\n" +]
- Changed
json-string-unescape1 field changed- added
Input schema / properties / escaped / examplesAdded value: +[ + "He said \\\"hi\\\"\\n" +]
- Changed
json-to-ndjson1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + { + "a": 1 + }, + [ + 2 + ], + "x" + ] +]
- Changed
json-unflatten1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "a.b.0": 1, + "a.b.1.c": 2, + "d": 3 + } +]
- Changed
jwt-decode1 field changed- added
Input schema / properties / token / examplesAdded value: +[ + "eyJhbGciOiJub25lIn0.eyJleHAiOjE3MDAwMDAwMDB9." +]
- Changed
jwt-sign-hmac2 fields changed- added
Input schema / properties / payload / examplesAdded value: +[ + { + "iat": 1516239022, + "name": "John Doe", + "sub": "1234567890" + } +] - added
Input schema / properties / secret / examplesAdded value: +[ + "your-256-bit-secret" +]
- Changed
jwt-verify-hmac2 fields changed- added
Input schema / properties / secret / examplesAdded value: +[ + "x" +] - added
Input schema / properties / token / examplesAdded value: +[ + "eyJhbGciOiJub25lIn0.eyJhIjoxfQ." +]
- Changed
kdf-hkdf1 field changed- added
Input schema / properties / ikm / examplesAdded value: +[ + "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" +]
- Changed
kdf-pbkdf23 fields changed- added
Input schema / properties / iterations / examplesAdded value: +[ + 1 +] - added
Input schema / properties / password / examplesAdded value: +[ + "password" +] - added
Input schema / properties / salt / examplesAdded value: +[ + "salt" +]
- Changed
ksuid-decode1 field changed- added
Input schema / properties / ksuid / examplesAdded value: +[ + "0ujtsYcgvSTl8PAuAdqWYSMnLOv" +]
- Changed
lei-validate1 field changed- added
Input schema / properties / lei / examplesAdded value: +[ + "5493001KJTIIGC8Y1R12" +]
- Changed
levenshtein-distance2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "kitten" +] - added
Input schema / properties / b / examplesAdded value: +[ + "sitting" +]
- Changed
linear-system-solve2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + [ + [ + 2, + 1 + ], + [ + 1, + 3 + ] + ] +] - added
Input schema / properties / b / examplesAdded value: +[ + [ + 3, + 5 + ] +]
- Changed
lines-dedupe1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a\nb\na\nB" +]
- Changed
lines-filter2 fields changed- added
Input schema / properties / contains / examplesAdded value: +[ + "error" +] - added
Input schema / properties / text / examplesAdded value: +[ + "ERROR a\ninfo b\nerror c" +]
- Changed
lines-number1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a\nb" +]
- Changed
lines-sort1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "item10\nitem2\nItem1" +]
- Changed
link-header-parse1 field changed- added
Input schema / properties / header / examplesAdded value: +[ + "<https://api.x.co/items?page=3>; rel=\"next\", <https://api.x.co/items?page=10>; rel=\"last\"" +]
- Changed
llm-cost-estimate2 fields changed- added
Input schema / properties / price_input_per_mtok / examplesAdded value: +[ + 3 +] - added
Input schema / properties / price_output_per_mtok / examplesAdded value: +[ + 15 +]
- Changed
llms-txt-lint1 field changed- added
Input schema / properties / llms_txt / examplesAdded value: +[ + "Intro text\n## Docs\n- bad item\n" +]
- Changed
longest-common-subsequence2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "ABCBDAB" +] - added
Input schema / properties / b / examplesAdded value: +[ + "BDCABA" +]
- Changed
lookup-table1 field changed- added
Input schema / properties / key / examplesAdded value: +[ + "bogota" +]
- Changed
luhn-validate1 field changed- added
Input schema / properties / number / examplesAdded value: +[ + "4539 1488 0343 6467" +]
- Changed
map-tile1 field changed- added
Input schema / properties / zoom / examplesAdded value: +[ + 10 +]
- Changed
margin-markup2 fields changed- added
Input schema / properties / cost / examplesAdded value: +[ + 60 +] - added
Input schema / properties / price / examplesAdded value: +[ + 100 +]
- Changed
markdown-links-extract1 field changed- added
Input schema / properties / markdown / examplesAdded value: +[ + "See [docs](https://x.co/d) and .\n\n[ref]: ./a.md\n\nRaw https://burs-ia.com." +]
- Changed
markdown-render-html1 field changed- added
Input schema / properties / markdown / examplesAdded value: +[ + "# Hola\n\nTexto **fuerte** y [enlace](https://burs-ia.com).\n\n- a\n- b" +]
- Changed
markdown-table1 field changed- added
Input schema / properties / rows / examplesAdded value: +[ + [ + { + "name": "Ana", + "score": 9.5 + }, + { + "name": "Luis|M", + "score": 8 + } + ] +]
- Changed
markdown-to-chat2 fields changed- added
Input schema / properties / markdown / examplesAdded value: +[ + "# Pedido listo\n**Total:** $120.000 _COP_\n- Ver [factura](https://burs-ia.com/f?id=1)" +] - added
Input schema / properties / target / examplesAdded value: +[ + "whatsapp" +]
- Changed
markdown-to-text1 field changed- added
Input schema / properties / markdown / examplesAdded value: +[ + "# Title\n\n**Bold** and _it_ with [a link](http://x.y) and `code`.\n\n- one\n- two" +]
- Changed
markdown-toc1 field changed- added
Input schema / properties / markdown / examplesAdded value: +[ + "# Guía\n## Instalación\n```\n# not a heading\n```\n## Uso rápido\n### Ejemplo\n## Uso rápido" +]
- Changed
matrix-determinant1 field changed- added
Input schema / properties / matrix / examplesAdded value: +[ + [ + [ + 1, + 2 + ], + [ + 3, + 4 + ] + ] +]
- Changed
matrix-inverse1 field changed- added
Input schema / properties / matrix / examplesAdded value: +[ + [ + [ + 4, + 7 + ], + [ + 2, + 6 + ] + ] +]
- Changed
matrix-multiply2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + [ + [ + 1, + 2 + ], + [ + 3, + 4 + ] + ] +] - added
Input schema / properties / b / examplesAdded value: +[ + [ + [ + 5, + 6 + ], + [ + 7, + 8 + ] + ] +]
- Changed
matrix-transpose1 field changed- added
Input schema / properties / matrix / examplesAdded value: +[ + [ + [ + 1, + 2, + 3 + ], + [ + 4, + 5, + 6 + ] + ] +]
- Changed
mcp-tools-lint1 field changed- added
Input schema / properties / tools / examplesAdded value: +[ + { + "tools": [ + { + "inputSchema": { + "properties": { + "q": { + "type": "string" + } + }, + "required": [ + "x" + ], + "type": "object" + }, + "name": "bad name" + } + ] + } +]
- Changed
mermaid-check1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "flowchart LR\n A[Pedido] --> B{¿Pagado?}\n B -->|sí| C[Enviar]\n subgraph Bodega\n C --> D\n end" +]
- Changed
mime-lookup1 field changed- added
Input schema / properties / query / examplesAdded value: +[ + "report.final.PDF" +]
- Changed
mixed-script-detect1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Pay at pаypal.com" +]
- Changed
modular-arithmetic2 fields changed- added
Input schema / properties / base / examplesAdded value: +[ + 4 +] - added
Input schema / properties / modulus / examplesAdded value: +[ + 497 +]
- Changed
money-allocate1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 100 +]
- Changed
month-info2 fields changed- added
Input schema / properties / month / examplesAdded value: +[ + 2 +] - added
Input schema / properties / year / examplesAdded value: +[ + 2026 +]
- Changed
moon-phase1 field changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2000-01-06T18:14:00Z" +]
- Changed
morse-decode1 field changed- added
Input schema / properties / morse / examplesAdded value: +[ + "... --- ..." +]
- Changed
morse-encode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "SOS" +]
- Changed
mx-amount-in-words1 field changed- added
Input schema / properties / amount / examplesAdded value: +[ + 1200.5 +]
- Changed
mx-clabe-validate1 field changed- added
Input schema / properties / clabe / examplesAdded value: +[ + "032180000118359719" +]
- Changed
mx-curp-validate1 field changed- added
Input schema / properties / curp / examplesAdded value: +[ + "HEGG560427MVZRRL04" +]
- Changed
mx-rfc-validate1 field changed- added
Input schema / properties / rfc / examplesAdded value: +[ + "GODE561231GR8" +]
- Changed
ndjson-to-json1 field changed- added
Input schema / properties / ndjson / examplesAdded value: +[ + "{\"a\":1}\n\n[2]\n\"x\"\n" +]
- Changed
ngrams1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "to be or not to be" +]
- Changed
number-format-locale1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + 1234567.891 +]
- Changed
number-to-words-en1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 1234567 +]
- Changed
objectid-decode1 field changed- added
Input schema / properties / objectid / examplesAdded value: +[ + "507f1f77bcf86cd799439011" +]
- Changed
onda-traducir1 field changed- added
Input schema / properties / input / examplesAdded value: +[ + "https://agente.example/.well-known/agent-card.json" +]
- Changed
openapi-summary1 field changed- added
Input schema / properties / openapi / examplesAdded value: +[ + { + "info": { + "title": "Empty", + "version": "0" + }, + "openapi": "3.0.3", + "paths": {} + } +]
- Changed
payment-fee2 fields changed- added
Input schema / properties / amount / examplesAdded value: +[ + 100 +] - added
Input schema / properties / fee_percent / examplesAdded value: +[ + 2.9 +]
- Changed
pe-ruc-validate1 field changed- added
Input schema / properties / ruc / examplesAdded value: +[ + "20131312955" +]
- Changed
percent-change2 fields changed- added
Input schema / properties / from / examplesAdded value: +[ + 80 +] - added
Input schema / properties / to / examplesAdded value: +[ + 100 +]
- Changed
percent-of2 fields changed- added
Input schema / properties / percent / examplesAdded value: +[ + 19 +] - added
Input schema / properties / value / examplesAdded value: +[ + 100000 +]
- Changed
percent-ratio2 fields changed- added
Input schema / properties / part / examplesAdded value: +[ + 25 +] - added
Input schema / properties / whole / examplesAdded value: +[ + 200 +]
- Changed
phone-e164-validate1 field changed- added
Input schema / properties / phone / examplesAdded value: +[ + "+57 (300) 123-4567" +]
- Changed
phone-parse1 field changed- added
Input schema / properties / number / examplesAdded value: +[ + "+57 300 123 4567" +]
- Changed
plus-code-decode1 field changed- added
Input schema / properties / plus_code / examplesAdded value: +[ + "8FVC2222+22" +]
- Changed
plus-code-encode2 fields changed- added
Input schema / properties / lat / examplesAdded value: +[ + 47.0000625 +] - added
Input schema / properties / lon / examplesAdded value: +[ + 8.0000625 +]
- Changed
polyline-decode1 field changed- added
Input schema / properties / polyline / examplesAdded value: +[ + "_p~iF~ps|U_ulLnnqC_mqNvxq`@" +]
- Changed
polyline-encode1 field changed- added
Input schema / properties / points / examplesAdded value: +[ + [ + { + "lat": 38.5, + "lon": -120.2 + }, + { + "lat": 40.7, + "lon": -120.95 + }, + { + "lat": 43.252, + "lon": -126.453 + } + ] +]
- Changed
price-from-margin3 fields changed- added
Input schema / properties / cost / examplesAdded value: +[ + 60 +] - added
Input schema / properties / percent / examplesAdded value: +[ + 40 +] - added
Input schema / properties / target / examplesAdded value: +[ + "margin" +]
- Changed
prime-factorize1 field changed- added
Input schema / properties / n / examplesAdded value: +[ + 360 +]
- Changed
prompt-template-fill1 field changed- added
Input schema / properties / template / examplesAdded value: +[ + "Hola {{user.name}}, tu plan es {{plan|gratis}}. {{x}}" +]
- Changed
punycode-decode1 field changed- added
Input schema / properties / domain / examplesAdded value: +[ + "xn--mnchen-3ya.de" +]
- Changed
punycode-encode1 field changed- added
Input schema / properties / domain / examplesAdded value: +[ + "münchen.de" +]
- Changed
qr-encode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "HELLO WORLD" +]
- Changed
quadratic-solve3 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + 1 +] - added
Input schema / properties / b / examplesAdded value: +[ + -3 +] - added
Input schema / properties / c / examplesAdded value: +[ + 2 +]
- Changed
query-build1 field changed- added
Input schema / properties / params / examplesAdded value: +[ + { + "empty": null, + "n": 1, + "q": "hola mundo", + "tag": [ + "a", + "b" + ] + } +]
- Changed
query-parse1 field changed- added
Input schema / properties / query / examplesAdded value: +[ + "?a=1&b=hola+mundo&a=2&c=%C3%B1" +]
- Changed
quoted-printable-decode1 field changed- added
Input schema / properties / encoded / examplesAdded value: +[ + "caf=C3=A9 =3D 3=E2=82=AC" +]
- Changed
quoted-printable-encode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "café = 3€" +]
- Changed
radix-convert1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + "255" +]
- Changed
rag-chunk1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Uno dos tres. Cuatro cinco seis. Siete ocho nueve." +]
- Changed
rate-limit-plan2 fields changed- added
Input schema / properties / limit / examplesAdded value: +[ + 60 +] - added
Input schema / properties / window_seconds / examplesAdded value: +[ + 60 +]
- Changed
readability-score1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "The cat sat on the mat. It was happy." +]
- Changed
recibo-verify3 fields changed- added
Input schema / properties / input / examplesAdded value: +[ + { + "data": "hola" + } +] - added
Input schema / properties / output / examplesAdded value: +[ + { + "algorithm": "sha256", + "digest": "b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79", + "encoding": "hex" + } +] - added
Input schema / properties / tool / examplesAdded value: +[ + "hash-sha256" +]
- Changed
regex-escape1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a.b*c" +]
- Changed
regex-replace3 fields changed- added
Input schema / properties / pattern / examplesAdded value: +[ + "(\\w+)@(\\w+)" +] - added
Input schema / properties / replacement / examplesAdded value: +[ + "$2:$1" +] - added
Input schema / properties / text / examplesAdded value: +[ + "ana@x bob@y" +]
- Changed
regex-test2 fields changed- added
Input schema / properties / pattern / examplesAdded value: +[ + "(\\d+)-(\\d+)" +] - added
Input schema / properties / text / examplesAdded value: +[ + "a 10-20 b 3-4" +]
- Changed
remove-accents1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Ñandú, café, pingüino" +]
- Changed
retry-after-parse2 fields changed- added
Input schema / properties / now / examplesAdded value: +[ + "2026-10-31T12:00:00Z" +] - added
Input schema / properties / value / examplesAdded value: +[ + "120" +]
- Changed
robots-ai-crawlers1 field changed- added
Input schema / properties / robots_txt / examplesAdded value: +[ + "User-agent: *\nAllow: /\n\nUser-agent: GPTBot\nUser-agent: CCBot\nDisallow: /" +]
- Changed
robots-txt-check1 field changed- added
Input schema / properties / user_agent / examplesAdded value: +[ + "Googlebot" +]
- Changed
roman-numeral1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + 2026 +]
- Changed
round-number1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + 1.005 +]
- Changed
salary-convert2 fields changed- added
Input schema / properties / amount / examplesAdded value: +[ + 25 +] - added
Input schema / properties / period / examplesAdded value: +[ + "hourly" +]
- Changed
security-txt-validate2 fields changed- added
Input schema / properties / as_of / examplesAdded value: +[ + "2026-10-31T00:00:00Z" +] - added
Input schema / properties / security_txt / examplesAdded value: +[ + "Contact: http://x.co\nExpires: 2020-01-01T00:00:00Z" +]
- Changed
semver-bump2 fields changed- added
Input schema / properties / release / examplesAdded value: +[ + "minor" +] - added
Input schema / properties / version / examplesAdded value: +[ + "1.2.3" +]
- Changed
semver-compare2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + "1.0.0-alpha" +] - added
Input schema / properties / b / examplesAdded value: +[ + "1.0.0" +]
- Changed
semver-parse1 field changed- added
Input schema / properties / version / examplesAdded value: +[ + "v1.2.3-beta.1+build.5" +]
- Changed
semver-satisfies2 fields changed- added
Input schema / properties / range / examplesAdded value: +[ + "^1.2.0" +] - added
Input schema / properties / version / examplesAdded value: +[ + "1.4.2" +]
- Changed
semver-sort1 field changed- added
Input schema / properties / versions / examplesAdded value: +[ + [ + "1.10.0", + "1.2.0", + "1.2.0-rc.1", + "bad", + "2.0.0" + ] +]
- Changed
set-cookie-parse1 field changed- added
Input schema / properties / set_cookie / examplesAdded value: +[ + "sid=abc; Path=/; Max-Age=3600; Secure; HttpOnly; SameSite=lax" +]
- Changed
significant-figures2 fields changed- added
Input schema / properties / digits / examplesAdded value: +[ + 3 +] - added
Input schema / properties / value / examplesAdded value: +[ + 123456 +]
- Changed
sitemap-build1 field changed- added
Input schema / properties / urls / examplesAdded value: +[ + [ + "http://x.co/a" + ] +]
- Changed
snowflake-decode1 field changed- added
Input schema / properties / id / examplesAdded value: +[ + "175928847299117063" +]
- Changed
snowflake-encode1 field changed- added
Input schema / properties / timestamp_ms / examplesAdded value: +[ + 1656432460105 +]
- Changed
solana-address-validate1 field changed- added
Input schema / properties / address / examplesAdded value: +[ + "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" +]
- Changed
soundex1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Robert Rupert" +]
- Changed
sql-readonly-check1 field changed- added
Input schema / properties / sql / examplesAdded value: +[ + "SELECT id, nombre FROM clientes WHERE ciudad = 'Bogotá; DROP TABLE x' -- nota\nORDER BY id" +]
- Changed
stats-correlation2 fields changed- added
Input schema / properties / x / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5 + ] +] - added
Input schema / properties / y / examplesAdded value: +[ + [ + 2, + 4, + 6, + 8, + 10 + ] +]
- Changed
stats-describe1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 2, + 4, + 4, + 4, + 5, + 5, + 7, + 9 + ] +]
- Changed
stats-forecast1 field changed- added
Input schema / properties / series / examplesAdded value: +[ + [ + 10, + 12, + 14, + 16, + 18 + ] +]
- Changed
stats-histogram1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 1, + 2, + 2, + 3, + 9, + 10 + ] +]
- Changed
stats-means1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 1, + 2, + 4 + ] +]
- Changed
stats-moving-average2 fields changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5 + ] +] - added
Input schema / properties / window / examplesAdded value: +[ + 3 +]
- Changed
stats-outliers-iqr1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 100 + ] +]
- Changed
stats-percentile1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ] +]
- Changed
stats-regression2 fields changed- added
Input schema / properties / x / examplesAdded value: +[ + [ + 1, + 2, + 3 + ] +] - added
Input schema / properties / y / examplesAdded value: +[ + [ + 2, + 4, + 6 + ] +]
- Changed
stats-zscore1 field changed- added
Input schema / properties / values / examplesAdded value: +[ + [ + 2, + 4, + 4, + 4, + 5, + 5, + 7, + 9 + ] +]
- Changed
sun-times3 fields changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-10-31" +] - added
Input schema / properties / latitude / examplesAdded value: +[ + 4.711 +] - added
Input schema / properties / longitude / examplesAdded value: +[ + -74.0721 +]
- Changed
swift-bic-validate1 field changed- added
Input schema / properties / bic / examplesAdded value: +[ + "BCOLCOBM" +]
- Changed
template-render1 field changed- added
Input schema / properties / template / examplesAdded value: +[ + "{{#user}}{{name.first}} {{{raw}}}{{/user}} {{! comentario }}{{missing}}" +]
- Changed
text-dedent1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + " a\n b\n c" +]
- Changed
text-indent1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a\n\nb" +]
- Changed
text-invisible-scan1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "hello" +]
- Changed
text-invisible-strip1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "hello" +]
- Changed
text-metrics1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hello world. How are you?\n\nFine!" +]
- Changed
text-normalize-whitespace1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + " a b \r\n\n\n\nc d " +]
- Changed
text-pad2 fields changed- added
Input schema / properties / text / examplesAdded value: +[ + "42" +] - added
Input schema / properties / width / examplesAdded value: +[ + 5 +]
- Changed
text-redact-pii1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Escríbeme a ana@burs-ia.com o al +57 300 123 4567. Tarjeta 4111 1111 1111 1111, key sk-ant-abcdefghijklmnopqrstu." +]
- Changed
text-reverse1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "abc" +]
- Changed
text-slug1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Hello, World! Ça va?" +]
- Changed
text-split-pick1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "Bogotá, Medellín, Cali, ,Barranquilla" +]
- Changed
text-truncate2 fields changed- added
Input schema / properties / max / examplesAdded value: +[ + 15 +] - added
Input schema / properties / text / examplesAdded value: +[ + "The quick brown fox jumps" +]
- Changed
text-wrap1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog" +]
- Changed
timestamp-convert1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + 1700000000 +]
- Changed
timezone-info1 field changed- added
Input schema / properties / timezone / examplesAdded value: +[ + "America/Bogota" +]
- Changed
timezone-overlap2 fields changed- added
Input schema / properties / date / examplesAdded value: +[ + "2026-11-03" +] - added
Input schema / properties / zones / examplesAdded value: +[ + [ + { + "timezone": "America/Bogota" + }, + { + "timezone": "Europe/Madrid" + } + ] +]
- Changed
timezone-shift2 fields changed- added
Input schema / properties / datetime / examplesAdded value: +[ + "2026-10-31T09:00" +] - added
Input schema / properties / to_timezone / examplesAdded value: +[ + "Europe/Madrid" +]
- Changed
token-estimate1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "The quick brown fox jumps over the lazy dog." +]
- Changed
tool-definition-convert2 fields changed- added
Input schema / properties / to / examplesAdded value: +[ + "anthropic" +] - added
Input schema / properties / tool / examplesAdded value: +[ + { + "function": { + "name": "f", + "parameters": { + "type": "object" + } + }, + "type": "function" + } +]
- Changed
toon-decode1 field changed- added
Input schema / properties / toon / examplesAdded value: +[ + "users[2]{id,name}:\n 1,Ada\n 2,Bob\ncount: 2" +]
- Changed
toon-encode1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "tags": [ + "a", + "b" + ], + "users": [ + { + "id": 1, + "name": "Ada", + "role": "admin" + }, + { + "id": 2, + "name": "Bob", + "role": "user" + } + ] + } +]
- Changed
ulid-decode1 field changed- added
Input schema / properties / ulid / examplesAdded value: +[ + "01ARZ3NDEKTSV4RRFFQ69G5FAV" +]
- Changed
unicode-escape1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "ñ😀" +]
- Changed
unicode-normalize1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "é" +]
- Changed
unicode-unescape1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "\\u00f1\\ud83d\\ude00" +]
- Changed
unit-price-compare1 field changed- added
Input schema / properties / offers / examplesAdded value: +[ + [ + { + "name": "A", + "price": 5000, + "quantity": 500, + "unit": "g" + }, + { + "name": "B", + "price": 9000, + "quantity": 1, + "unit": "kg" + } + ] +]
- Changed
university-email-domain1 field changed- added
Input schema / properties / email_or_domain / examplesAdded value: +[ + "ana.perez@unal.edu.co" +]
- Changed
url-build1 field changed- added
Input schema / properties / base / examplesAdded value: +[ + "https://api.example.com/v1/" +]
- Changed
url-decode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a%20b%26c%3Dd%2F%C3%A9" +]
- Changed
url-encode1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "a b&c=d/é" +]
- Changed
url-normalize1 field changed- added
Input schema / properties / url / examplesAdded value: +[ + "HTTPS://WWW.Example.com:443/a/./b/../c?utm_source=x&b=2&a=1#sec" +]
- Changed
url-parse1 field changed- added
Input schema / properties / url / examplesAdded value: +[ + "https://user@Example.COM:8080/a/b%20c?x=1&x=2&y=#top" +]
- Changed
url-resolve2 fields changed- added
Input schema / properties / base / examplesAdded value: +[ + "https://example.com/a/b/c" +] - added
Input schema / properties / reference / examplesAdded value: +[ + "../d?x=1" +]
- Changed
url-risk-heuristics1 field changed- added
Input schema / properties / url / examplesAdded value: +[ + "https://burs-ia.com/puerta" +]
- Changed
user-agent-parse1 field changed- added
Input schema / properties / user_agent / examplesAdded value: +[ + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" +]
- Changed
utf8-inspect1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "é" +]
- Changed
utm-from-latlon2 fields changed- added
Input schema / properties / lat / examplesAdded value: +[ + 48.8584 +] - added
Input schema / properties / lon / examplesAdded value: +[ + 2.2945 +]
- Changed
utm-to-latlon4 fields changed- added
Input schema / properties / easting / examplesAdded value: +[ + 448252 +] - added
Input schema / properties / hemisphere / examplesAdded value: +[ + "U" +] - added
Input schema / properties / northing / examplesAdded value: +[ + 5411954.91 +] - added
Input schema / properties / zone / examplesAdded value: +[ + 31 +]
- Changed
uuid-inspect1 field changed- added
Input schema / properties / uuid / examplesAdded value: +[ + "018bcfe5-6800-767f-bf15-8ce497887fd9" +]
- Changed
uuid-v32 fields changed- added
Input schema / properties / name / examplesAdded value: +[ + "python.org" +] - added
Input schema / properties / namespace / examplesAdded value: +[ + "dns" +]
- Changed
uuid-v52 fields changed- added
Input schema / properties / name / examplesAdded value: +[ + "python.org" +] - added
Input schema / properties / namespace / examplesAdded value: +[ + "dns" +]
- Changed
vat-calculate2 fields changed- added
Input schema / properties / amount / examplesAdded value: +[ + 100 +] - added
Input schema / properties / rate_percent / examplesAdded value: +[ + 21 +]
- Changed
vector-similarity2 fields changed- added
Input schema / properties / a / examplesAdded value: +[ + [ + 1, + 0, + 1 + ] +] - added
Input schema / properties / b / examplesAdded value: +[ + [ + 1, + 1, + 0 + ] +]
- Changed
vector-top-k2 fields changed- added
Input schema / properties / query / examplesAdded value: +[ + [ + 1, + 0 + ] +] - added
Input schema / properties / vectors / examplesAdded value: +[ + [ + [ + 0, + 1 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ] +]
- Changed
verhoeff1 field changed- added
Input schema / properties / number / examplesAdded value: +[ + "2363" +]
- Changed
vin-validate1 field changed- added
Input schema / properties / vin / examplesAdded value: +[ + "1M8GDM9AXKP042788" +]
- Changed
word-frequency1 field changed- added
Input schema / properties / text / examplesAdded value: +[ + "The cat and the hat. The end." +]
- Changed
x402-cost-estimate1 field changed- added
Input schema / properties / calls / examplesAdded value: +[ + 25000 +]
- Changed
x402-replay-check1 field changed- added
Input schema / properties / now / examplesAdded value: +[ + 1740672100 +]
- Changed
xml-parse1 field changed- added
Input schema / properties / xml / examplesAdded value: +[ + "<?xml version=\"1.0\"?><note id=\"7\"><to>Ana</to><to>Bob</to><body>Hi & bye</body><empty/></note>" +]
- Changed
yaml-build1 field changed- added
Input schema / properties / value / examplesAdded value: +[ + { + "name": "Burs-IA", + "nested": { + "x": null + }, + "port": 8080, + "tags": [ + "a", + "true" + ] + } +]
- Changed
yaml-parse1 field changed- added
Input schema / properties / yaml / examplesAdded value: +[ + "name: Burs-IA\nport: 8080\ntags: [a, \"b c\"]\nlist:\n - x\n - k: 1\n j: true\nnote: |\n line1\n line2\n" +]
- Changed
zlib-compress1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "hola hola hola hola hola" +]
- Changed
zlib-decompress1 field changed- added
Input schema / properties / data / examplesAdded value: +[ + "H4sIAAAAAAAAA8vIBACsKpPYAgAAAA==" +]
10 tool updates
- Added
city-distance - Added
city-local-time - Added
city-lookup - Added
co-liquidacion-laboral - Added
co-retencion-salarios - Added
country-info - Added
country-population - Added
fin-loan-prepayment - Added
university-email-domain - Added
university-search
23 tool updates
- Added
array-filter-aggregate - Changed
array-shuffle1 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
- Added
br-pix-brcode - Added
emvco-qr-parse - Added
file-type-detect - Added
html-to-markdown - Added
lookup-table - Added
markdown-to-chat - Changed
nanoid1 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
- Added
password-generate - Added
phone-parse - Added
qr-encode - Added
random-pick - Changed
random-token1 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
- Added
template-render - Added
text-split-pick - Added
time-now - Added
toon-decode - Added
toon-encode - Changed
ulid-generate1 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
- Added
url-risk-heuristics - Changed
uuid-v41 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
- Changed
uuid-v71 field changed- added
Output schema / properties / avisoAdded value: +{ + "type": [ + "null", + "string" + ] +}
216 tool updates
- Changed
accept-language-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an Accept-Language header into languages sorted by q-value and, given supported locales, picks the best match (exact, then by primary language). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
age-calculate1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the exact age in years, months and days on a reference date (required, for determinism), total days lived, and days until the next birthday (Feb 29 birthdays observed on Feb 28 in common years). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing the difference between two dates or date-times (date-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
agent-card-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks an A2A (Agent2Agent) Agent Card JSON for the core fields: name, description, https url, version, capabilities, default input/output modes and skills (id, name, description, tags), plus provider and security hints. Structural check only. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: linting MCP tool definitions (mcp-tools-lint). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
agent-readiness-checklist1 field changed- added
Input schema / descriptionAdded value: +"EN: Scores how ready a site is for AI agents from pasted content (robots.txt, llms.txt, homepage HTML): AI crawler access, llms.txt validity, title/description/canonical/lang, JSON-LD and sitemap. A free basic check, not a full audit. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: checking an llms.txt file against the llmstxt.org format (llms-txt-lint). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ar-cbu-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a 22-digit Argentine CBU/CVU: block 1 (bank 3 + branch 4 + check digit, weights 7139713) and block 2 (account 13 + check digit, weights 3971…). Reports each block. Validation only. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating an Argentine CUIT/CUIL (ar-cuit-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ar-cuit-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates an Argentine CUIT/CUIL (11 digits: type prefix, DNI, mod-11 check digit with weights 5432765432) and identifies the prefix type (person or company). When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a 22-digit Argentine CBU/CVU (ar-cbu-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
backoff-schedule1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes retry delays for exponential, linear or constant backoff with a cap and optional jitter (full, equal or decorrelated; seeded for reproducibility), and the cumulative wait. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: parsing an HTTP Retry-After value (retry-after-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
basic-auth-header1 field changed- added
Input schema / descriptionAdded value: +"EN: Builds an HTTP Basic Authorization header value from a username and password (RFC 7617, UTF-8). Basic auth is only base64, not encryption; it needs HTTPS for confidentiality. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: signing a JWT with an HMAC secret (jwt-sign-hmac). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
bitcoin-address-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Bitcoin address offline: Base58Check P2PKH/P2SH (mainnet/testnet version bytes) or Bech32/Bech32m SegWit (BIP-173/350 witness version and program length rules). Syntax and checksum only. When: an identifier's format and check digit have to be verified offline before it is used. Not for: checking that a string is a syntactically valid Solana public key: Base58 (solana-address-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
bm25-rank1 field changed- added
Input schema / descriptionAdded value: +"EN: Ranks up to 2,000 documents for a query with Okapi BM25 (k1, b tunable) using accent-insensitive Unicode word tokens, e.g. to pick passages for retrieval without embeddings. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: ranking up to 2,000 candidate vectors by cosine similarity (vector-top-k). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
br-cnpj-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Brazilian CNPJ, including the alphanumeric format introduced from July 2026 (letters valued as ASCII − 48), with both mod-11 check digits; formats as 11.222.333/0001-81. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CPF (br-cpf-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
br-cpf-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Brazilian CPF (11 digits, two mod-11 check digits), rejecting repeated-digit numbers, and formats it as 529.982.247-25. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CNPJ (br-cnpj-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
business-days-add1 field changed- added
Input schema / descriptionAdded value: +"EN: Adds (or subtracts) N working days to a date, skipping configurable weekend days and given holidays; useful for due dates and SLAs. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: adding or subtracting N business days (co-business-days-add). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
business-days-between1 field changed- added
Input schema / descriptionAdded value: +"EN: Counts working days between two dates, excluding configurable weekend days and a list of holidays. By default counts days after start up to and including end; inclusive counts both ends. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: counting business days (co-business-days-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cache-control-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a Cache-Control header into directives (max-age, s-maxage, no-store, private, immutable, stale-while-revalidate…) and summarizes cacheability by shared and private caches. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
card-brand-detect1 field changed- added
Input schema / descriptionAdded value: +"EN: Detects a payment card brand from its IIN prefix (Visa, Mastercard, Amex, Diners, Discover, JCB, UnionPay, Maestro, Elo, Hipercard, Mir), checks length and Luhn, and returns only a masked number. Nothing is stored; this does not prove the card exists. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a number with the Luhn mod-10 checksum (luhn-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cidr-contains1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks whether an IP address falls inside any of a list of CIDR blocks (IPv4/IPv6, e.g. an allowlist) and lists which ones match. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting an inclusive start-end IP range (ip-range-to-cidrs). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cidr-info1 field changed- added
Input schema / descriptionAdded value: +"EN: Describes an IPv4 or IPv6 CIDR block: network and broadcast/last address, first and last usable host, netmask, wildcard mask, total and usable address counts. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking whether an IP address falls inside any of a list of CIDR blocks (cidr-contains). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cl-rut1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Chilean RUT/RUN including its mod-11 check digit (0-9 or K) and returns it formatted as 12.345.678-5. Validation only: the check digit must be supplied and is never computed. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Brazilian CPF (br-cpf-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-amount-in-words1 field changed- added
Input schema / descriptionAdded value: +"EN: Writes a peso amount in words in the format used on Colombian cheques, invoices and contracts, e.g. \"UN MILLÓN DOSCIENTOS MIL PESOS M/CTE\", with cents as fraction (50/100) or words. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: spelling an integer up to 10^18 in Spanish words (es-number-to-words). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-business-days-add1 field changed- added
Input schema / descriptionAdded value: +"EN: Adds or subtracts N business days (días hábiles) to a date using Colombian national holidays, e.g. for legal deadlines, invoices or SLA due dates. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding or subtracting business days, skipping weekends and given holidays (business-days-add). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-business-days-between1 field changed- added
Input schema / descriptionAdded value: +"EN: Counts business days (días hábiles) between two dates in Colombia, excluding Sundays, Saturdays (unless saturday_is_business) and national holidays; lists holidays skipped. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: counting working days between two dates, excluding configurable weekend days and a list of holidays (business-days-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-cedula-format1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks the SYNTAX of a Colombian cédula de ciudadanía number (digits only, 3-10 digits, no leading zero) and formats it with dot separators. Cédulas have no check digit, so validity cannot be confirmed offline. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: computing the DIAN verification digit (co-nit). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-cop-format1 field changed- added
Input schema / descriptionAdded value: +"EN: Formats an amount as Colombian pesos the way it is written in Colombia ($ 1.234.567 — dot thousands, comma decimals), with 0 or 2 decimals and an optional COP code. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: formatting an amount in any ISO 4217 currency for a locale via Intl (currency-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-cop-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses money text written in Colombian style (\"$ 1.234.567,50\", \"COP 2.500\", \"1.5 millones\", \"$3 mil\") into a number, handling dot thousands, comma decimals and millones/mil words. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: reading a number written in Spanish words or digits (es-number-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-cufe-verify1 field changed- added
Input schema / descriptionAdded value: +"EN: Recomputes the CUFE of a Colombian electronic sales invoice (SHA-384 of the 15 fields defined by DIAN: number, date, time, amounts, tax codes 01/04/03, total, NITs, technical key, environment) and compares it with a given CUFE; or checks a CUFE/CUDE format only. When: the CUFE of a DIAN e-invoice has to be recomputed from the invoice fields to check that it matches. Not for: computing the SHA-384 digest (hash-sha384). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-dane-department1 field changed- added
Input schema / descriptionAdded value: +"EN: Looks up Colombia's 33 DIVIPOLA department-level codes (32 departments + Bogotá D.C.) by code, name (accent-insensitive) or a 5-digit municipality code prefix, returning the capital and its municipality code. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: looking up ISO 3166-1 alpha-2 countries by code or by name in Spanish or English (iso-country-lookup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-gmf1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes Colombia's financial transactions tax (GMF, \"cuatro por mil\") of 0.4% on a withdrawal or transfer, optionally applying the monthly 350 UVT exemption for one designated account. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding or extracting Colombian IVA at the general 19%, reduced 5% or 0% (co-iva). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-holidays1 field changed- added
Input schema / descriptionAdded value: +"EN: Lists the 18 Colombian national holidays for a year, applying Ley 51 de 1983 (Ley Emiliani) Monday moves and Easter-based dates (Holy Week, Ascension, Corpus Christi, Sacred Heart). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: saying whether a date is a Colombian national holiday (co-is-holiday). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-is-holiday1 field changed- added
Input schema / descriptionAdded value: +"EN: Says whether a date is a Colombian national holiday (with its name), a Sunday or Saturday, and whether it is a business day (Monday-Friday, or Monday-Saturday if saturday_is_business). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: listing the 18 Colombian national holidays for a year, applying Ley 51 de 1983 (co-holidays). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-iva1 field changed- added
Input schema / descriptionAdded value: +"EN: Adds or extracts Colombian IVA at the general 19%, reduced 5% or 0% (exento) rate: from a base before tax or from a total that includes IVA, rounding to whole pesos by default. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: adding tax to a net amount or extracting it from a gross (vat-calculate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-nit1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the DIAN verification digit (DV) of a Colombian NIT business tax ID with DIAN's published mod-11 method, validates a given DV and formats it (900.373.913-4). DV computation is standard practice in invoicing. When: a Colombian NIT has to be checked or formatted with its DIAN verification digit, e.g. before issuing an invoice. Not for: checking the SYNTAX of a Colombian cédula de ciudadanía number (co-cedula-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-phone-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks the SYNTAX of a Colombian phone number (mobile 3XX XXX XXXX; fixed lines in the 2021 10-digit plan 60X XXX XXXX with region; 01 8000 toll-free) and returns E.164. Does not check that the line exists. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: classifying a Colombian license plate by SYNTAX (co-plate-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-plate-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Classifies a Colombian license plate by SYNTAX: car/public service (ABC123), motorcycle (ABC12D, or older ABC12), trailer/semitrailer (R12345 / S12345), diplomatic (CD/CC/OI + 4 digits). Does not check registration in RUNT. When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: checking the SYNTAX of a Colombian phone number (co-phone-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
co-uvt-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts between UVT (Unidad de Valor Tributario) and Colombian pesos for 2024 ($47.065), 2025 ($49.799) or 2026 ($52.374, DIAN Resolución 000238 de 2025). When: a Colombian rule (DIAN, Ley Emiliani holidays, COP amounts, IVA, GMF, UVT) has to be applied exactly, e.g. in invoicing or payment flows. Not for: formatting an amount as Colombian pesos the way it is written in Colombia (co-cop-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
code-blocks-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Extracts fenced code blocks (``` or ~~~) from Markdown or LLM output with their language tags and line counts, optionally filtered by language. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: finding and parsing JSON objects/arrays embedded in free text (json-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
color-contrast1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the WCAG 2.x contrast ratio between foreground and background colors (alpha composited over the background) with AA/AAA pass/fail for normal text, large text and UI components. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: finding the closest color to a foreground (color-contrast-fix). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
color-contrast-fix1 field changed- added
Input schema / descriptionAdded value: +"EN: Finds the closest color to a foreground (changing only OKLCH lightness, keeping hue) that reaches a target WCAG contrast ratio against a background, trying darker and lighter directions. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: computing the WCAG contrast ratio of two colors (color-contrast). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
color-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses any common CSS color (hex 3/4/6/8, rgb(), hsl(), hwb(), oklch(), oklab(), 148 named colors) and returns hex, RGB, HSL, HSV, CMYK (naive), OKLab, OKLCH and CIELAB (D65). Out-of-gamut OKLCH is chroma-reduced into sRGB. When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: generating harmony palettes from a base color by rotating OKLCH hue (color-palette). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
color-delta-e1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the perceptual difference between two colors: CIEDE2000 ΔE (CIELAB D65) and Euclidean OKLab ΔE, with a plain-language interpretation (< 1 imperceptible … > 10 very different). When: color values, contrast or palettes have to be computed exactly, e.g. for accessibility checks. Not for: computing the WCAG contrast ratio of two colors (color-contrast). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
content-type-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a Content-Type / media type header into type, subtype, structured-syntax suffix (+json) and parameters (charset, boundary…), lowercasing names. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Content-Security-Policy header into directives and source lists, and flagging risky settings (csp-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-angle1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts angle between units (rad, deg, grad, turn, arcmin, arcsec, mrad). Without \"to\", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: formatting decimal coordinates as degrees, minutes and seconds (coordinates-to-dms). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-cooking1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts kitchen measures between volume (cup, tbsp, tsp, ml, l, fl_oz, metric cup) and weight (g, kg, oz, lb) for common ingredients using typical densities. Results are approximate. When: a quantity has to be converted between units with exact definitional factors. Not for: converting volume between units (convert-volume). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-data-rate1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts data rate between units (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s). Without \"to\", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting data size between units (convert-data-size). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-data-size1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts data size between units (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit). Without \"to\", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting data rate between units (convert-data-rate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-mass1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts mass between units (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co). Without \"to\", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting density between units (convert-density). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
convert-volume1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts volume between units (l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3). Without \"to\", every unit is returned. Exact definitional factors; results to 12 significant digits. When: a quantity has to be converted between units with exact definitional factors. Not for: converting kitchen measures between volume (convert-cooking). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cookie-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a Cookie request header (name=value; …) into an object, percent-decoding values when valid; first occurrence wins. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Set-Cookie response header into name, value and attributes (set-cookie-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
coordinates-to-decimal1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses latitude/longitude written as DMS (4°38'8\"N), degrees-decimal-minutes (4°38.13'N), decimal with hemisphere letters (N/S/E/W, O for oeste) or signs, into signed decimal degrees. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: formatting decimal coordinates as degrees, minutes and seconds (coordinates-to-dms). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cron-explain1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a 5-field cron expression (minute hour day-of-month month day-of-week; lists, ranges, steps, names, @daily-style macros) and describes it in English and Spanish, with the expanded field values. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the next N (cron-next-runs). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
cron-next-runs1 field changed- added
Input schema / descriptionAdded value: +"EN: Lists the next N (≤ 50) run times of a 5-field cron expression after a given instant, evaluated in an IANA time zone (DST-aware; non-existent local times are skipped). Searches at most 8 years ahead. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: validating a 5-field cron expression (cron-explain). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
csp-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a Content-Security-Policy header into directives and source lists, and flags risky settings (unsafe-inline, unsafe-eval, wildcard sources, missing default-src/object-src/base-uri). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Content-Type / media type header into type, subtype, structured-syntax suffix (content-type-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
csv-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses RFC 4180 CSV (quoted fields, escaped quotes, CRLF, BOM) with a chosen delimiter into an array of objects using the header row, or arrays of strings; optional number/boolean inference. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: converting an array of objects (csv-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
currency-format1 field changed- added
Input schema / descriptionAdded value: +"EN: Formats an amount in any ISO 4217 currency for a locale via Intl (symbol, narrow symbol, code or name), using the currency's standard minor units unless overridden, and accounting style for negatives. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: formatting an amount as Colombian pesos the way it is written in Colombia (co-cop-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
currency-info1 field changed- added
Input schema / descriptionAdded value: +"EN: Returns facts about an ISO 4217 currency from the runtime's CLDR data: display decimals (CLDR may differ from ISO, e.g. COP shows 0), symbol and narrow symbol in a locale, and localized names in English and Spanish. No exchange rates. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: formatting an amount in any ISO 4217 currency for a locale via Intl (currency-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
date-add1 field changed- added
Input schema / descriptionAdded value: +"EN: Adds (or subtracts, with negatives) years, months, weeks, days, hours, minutes and seconds to a date-time. Calendar parts use local wall time in the zone and clamp month ends (Jan 31 + 1 month = Feb 28/29). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: adding or subtracting business days, skipping weekends and given holidays (business-days-add). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
date-between1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the difference between two dates or date-times: calendar breakdown (years, months, days) plus totals in weeks, days, hours, minutes and seconds; sign indicates order. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: counting working days between two dates, excluding configurable weekend days and a list of holidays (business-days-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
date-range1 field changed- added
Input schema / descriptionAdded value: +"EN: Lists dates from start to end (inclusive) stepping by days, weeks or months (month steps clamp to month end), up to 1,000 dates, optionally skipping weekends. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing the difference between two dates or date-times (date-between). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
date-relative1 field changed- added
Input schema / descriptionAdded value: +"EN: Describes the time between an instant and a reference instant as a localized phrase via Intl.RelativeTimeFormat (\"in 3 days\", \"hace 2 horas\"), choosing the largest sensible unit. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: formatting an instant in a time zone and locale, either with Intl styles (datetime-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
datetime-format1 field changed- added
Input schema / descriptionAdded value: +"EN: Formats an instant in a time zone and locale, either with Intl styles (full/long/medium/short) or a pattern (YYYY MM DD HH mm ss SSS MMMM ddd dddd hh A Z; [text] for literals). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: parsing an ISO 8601 or RFC 2822 date-time into its parts (datetime-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
datetime-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an ISO 8601 or RFC 2822 date-time (or YYYY-MM-DD) and returns UTC ISO, Unix seconds/ms, local wall time in a time zone with offset, weekday, day of year, ISO week, quarter and leap-year flag. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: formatting an instant in a time zone and locale, either with Intl styles (datetime-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
dedupe-similar1 field changed- added
Input schema / descriptionAdded value: +"EN: Groups near-duplicate strings (Jaccard similarity of character 3-grams ≥ threshold, accent- and case-insensitive) among up to 2,000 items, keeping the first of each group. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: removing duplicate lines keeping the first occurrence and original order (lines-dedupe). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
diff-lines1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the line-based diff of two texts using longest common subsequence; returns a unified diff with configurable context and counts of added/removed lines. Changed-region product capped at 4M lines². When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing an RFC 6902 JSON Patch that transforms document a into document b (json-diff-patch). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
domain-syntax-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks hostname syntax (RFC 1035/1123 labels, total ≤ 253, label ≤ 63, alphabetic or xn-- TLD), detects IDN/punycode labels and IP literals. Does not query DNS and does not use the Public Suffix List. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking email address SYNTAX only (email-syntax-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
dot-check1 field changed- added
Input schema / descriptionAdded value: +"EN: Sanity-checks Graphviz DOT text without rendering: header ([strict] graph|digraph [id] {), balanced braces/brackets and quotes, -> only in digraphs and -- only in graphs, and attribute lists of key=value. Counts nodes and edges. Not a full parser. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: sanity-checking Mermaid diagram text without rendering it (mermaid-check). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
duration-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an ISO 8601 duration (e.g. P1Y2M3DT4H5M6S, PT90M, P2W) into components and total seconds (years = 365.2425 days and months = 30.436875 days, flagged as approximate). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: formatting a number of seconds as an ISO 8601 duration (duration-format). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
easter-sunday1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes Western (Gregorian computus) and Orthodox Easter Sunday for a year 1583-4099, plus related Western dates: Ash Wednesday, Palm Sunday, Holy Thursday, Good Friday, Ascension, Pentecost, Corpus Christi. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the 18 Colombian national holidays for a year, applying Ley 51 de 1983 (co-holidays). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ec-id-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates an Ecuadorian cédula (10 digits: province 01-24, third digit 0-5, coefficients 2-1-2-1… mod 10) or a natural-person RUC (cédula + establishment 001-999). Company/public RUCs are reported as unsupported. Validation only. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Peruvian RUC (pe-ruc-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
email-syntax-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks email address SYNTAX only (practical RFC 5321/5322 subset: local part ≤ 64, domain ≤ 253, labels, TLD); it cannot tell whether the mailbox exists. Returns normalized form and reasons. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking hostname syntax (domain-syntax-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-date-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Finds and parses a date written in Spanish: \"tres de marzo de 2026\", \"1.º de enero del dos mil veintiséis\", \"15/03/2026\" (day first), and hoy/mañana/ayer relative to a given reference date. Returns ISO 8601 (proleptic Gregorian; 2-digit years are 20xx) and the weekday. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: reading a number written in Spanish words or digits (es-number-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-dni-nie-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter) with the official mod-23 control letter (Ministerio del Interior). Validation only; it never returns the expected letter. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating an Ecuadorian cédula (ec-id-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-name-case1 field changed- added
Input schema / descriptionAdded value: +"EN: Capitalizes personal or place names in Spanish style, keeping particles lowercase (de, del, de la, y, e, los, las, da, van, von) except at the start, and handling hyphens and apostrophes. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: capitalizing words as a title (case-title). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-number-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts Spanish number words or digits to a number: \"tres mil cuatrocientos veintiuno\" → 3421, \"dos coma cinco millones\", \"menos\", long scale (mil millones = 10⁹). \"1.250\"-style digits (one separator + 3 digits) are ambiguous unless decimal_separator is given. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: parsing money text written in Colombian style (co-cop-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-number-to-words1 field changed- added
Input schema / descriptionAdded value: +"EN: Spells an integer up to 10^18 in Spanish words (long scale: millón, mil millones, billón), with masculine/feminine agreement and optional apocope (veintiún, un) for use before a noun. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: writing a Colombian peso amount in words for cheques and invoices (co-amount-in-words). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-ordinal1 field changed- added
Input schema / descriptionAdded value: +"EN: Writes 1-999 as a Spanish ordinal in words (primero, vigésimo tercero, centésimo) with gender and apocope (primer, tercer) options, plus the abbreviation (1.º, 1.ª). When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: spelling an integer up to 10^18 in Spanish words (es-number-to-words). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-sentence-split1 field changed- added
Input schema / descriptionAdded value: +"EN: Splits Spanish text into sentences, aware of ¿…? and ¡…!, ellipses, decimals and thousands (3.5, 1.000), initials (J. R.) and common abbreviations (Sr., Dra., Uds., pág., núm., Cra., EE. UU., S.A.S.). Returns offsets. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: splitting text into overlapping chunks for retrieval (rag-chunk). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-slug1 field changed- added
Input schema / descriptionAdded value: +"EN: Builds a URL slug from Spanish text without collapsing ñ into n (so \"año\" does not become \"ano\"): ñ becomes \"ni\", \"ny\", \"nn\" or is kept; accents are removed and stopwords can be dropped. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: making a URL slug (text-slug). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-stress1 field changed- added
Input schema / descriptionAdded value: +"EN: Analyzes a Spanish word: syllables, stressed syllable (from the written accent or the default rule), class (aguda, llana, esdrújula, sobresdrújula) and whether the written accent follows the RAE rules; with an intended stressed syllable it returns the correct spelling. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: splitting Spanish words into syllables with the RAE orthographic rules (es-syllabify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
es-syllabify1 field changed- added
Input schema / descriptionAdded value: +"EN: Splits Spanish words into syllables with the RAE orthographic rules: diphthongs, triphthongs, hiatus (accented í/ú), inseparable clusters (pl, br, tr…), ch/ll/rr and silent u in que/gui. Prefix-based splits (sub-, des-) may differ. When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: analyzing a Spanish word (es-stress). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
evm-address-checksum1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates an Ethereum/EVM address (Base, Polygon, etc.): 20-byte hex format and EIP-55 mixed-case checksum, and returns the checksummed form. Does not check balances or ownership. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a Bitcoin address offline: Base58Check P2PKH/P2SH (bitcoin-address-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
expression-evaluate1 field changed- added
Input schema / descriptionAdded value: +"EN: Evaluates an arithmetic expression with its own parser (no eval): + − * / % ^ !, parentheses, implicit multiplication, functions (sqrt, sin, ln, log, min, max…), constants pi/e/tau/phi and named variables. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the exact arbitrary-precision integer arithmetic (bigint-calc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-bond1 field changed- added
Input schema / descriptionAdded value: +"EN: Prices a fixed-coupon bond on a coupon date: price from yield or yield to maturity from price (bisection), plus Macaulay and modified duration, convexity and current yield. Rates in percent per year; no accrued interest or day count. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: pricing a European call and put with the Black-Scholes-Merton model (fin-option-price). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-compound-interest1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the future value of a principal with compound interest A = P(1 + r/n)^(n·t), optional regular contributions at period end, and the interest earned. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the simple interest I = P·r·t and the total amount, with time in years, months or days (fin-simple-interest). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-irr1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the internal rate of return of periodic cash flows (Newton-Raphson with bisection fallback); returns null when no sign change exists. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the annualized internal rate of return for cash flows on arbitrary dates (fin-xirr). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-loan-amortization1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the full amortization schedule (payment, interest, principal, balance per period) for a fixed-payment loan, up to 600 rows; the last payment absorbs rounding. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the fixed periodic payment for an amortizing loan: PMT = P·r / (fin-loan-payment). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-npv1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the net present value of cash flows at a discount rate per period, with the first flow at time 0 (not discounted); Excel NPV() instead discounts the first flow. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the internal rate of return of periodic cash flows (fin-irr). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-option-price1 field changed- added
Input schema / descriptionAdded value: +"EN: Prices a European call and put with the Black-Scholes-Merton model (continuous dividend yield) and returns delta, gamma, vega (per 1 vol point), theta (per year and per day) and rho (per 1 rate point). Rates and volatility in percent. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: pricing a fixed-coupon bond on a coupon date (fin-bond). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-risk-ratios1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes from periodic returns (decimals, 0.01 = 1%) the annualized return (geometric) and volatility, Sharpe and Sortino ratios against an annual risk-free rate, maximum drawdown with its start and end, and best/worst period. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing descriptive statistics of a list of numbers (stats-describe). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fin-tvm1 field changed- added
Input schema / descriptionAdded value: +"EN: Solves for the one missing TVM variable (pv, fv, pmt, nper or rate per period) given the others, with Excel sign convention (cash out negative) and payments at end or beginning. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the fixed periodic payment for an amortizing loan: PMT = P·r / (fin-loan-payment). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
fiscal-period1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes, for a date and the month the fiscal year starts, the fiscal year (named by its ending calendar year or its starting year), fiscal quarter, fiscal month and period bounds. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: describing a year and month (month-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
geo-bounding-box1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the bounding box (min/max latitude and longitude) enclosing a circle of a given radius around a point, e.g. for \"within N km\" pre-filters; handles poles and the antimeridian. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the bounding box of a GeoJSON object (geojson-bbox). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
geo-haversine1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the great-circle distance between two lat/lon points on a spherical Earth (mean radius 6,371.0088 km), in m, km, mi, nmi or ft. Error up to about 0.5% versus the ellipsoid. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the ellipsoidal (WGS84) distance between two points (geo-vincenty). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
geo-vincenty1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the geodesic distance and initial/final bearings between two points on the WGS84 ellipsoid using Vincenty's inverse formula (millimetre accuracy); reports non-convergence for near-antipodal points. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: computing the great-circle distance between two lat/lon points on a spherical Earth (geo-haversine). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
gtin-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates GTIN-8 (EAN-8), GTIN-12 (UPC-A), GTIN-13 (EAN-13) and GTIN-14 barcodes with the GS1 mod-10 check digit and identifies the type and GS1 prefix hints (e.g. 770 = Colombia). When: an identifier's format and check digit have to be verified offline before it is used. Not for: computing the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body of 7-17 digits and returning the full code (gtin-check-digit). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
h2o-rank1 field changed- added
Input schema / descriptionAdded value: +"EN: Ranks up to 8 candidate opportunities (H2O · Hallazgo, Homologación y Oportunidad) from caller-supplied evidence counts, feasibility and effort: BUILD_CANDIDATE_MODELLED, INVESTIGATE, DISCARD, ABSTAIN or DENY each, with value of information and posteriors. Modelled points, not money. When: an agent has candidate needs or ideas with rough evidence counts and effort and has to pick which to build, check first or drop. Not for: forecasting revenue from a past numeric series (stats-forecast); nor contacting or paying anyone, which it never does. Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
hash-keccak2561 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the Keccak-256 with original Keccak padding, as used by Ethereum for addresses, function selectors and event topics. Differs from SHA3-256. When: an exact digest of given text or bytes is needed, e.g. to compare content or match a published checksum. Not for: computing the SHA3-256 digest (hash-sha3-256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-escape1 field changed- added
Input schema / descriptionAdded value: +"EN: Escapes &, <, > (and \" ' for attribute contexts) so text can be safely inserted into HTML. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: decoding HTML character references (html-unescape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-links-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Extracts <a href> links from HTML with their text, rel and target, resolves relative URLs against an optional base, and classifies each as internal, external, mailto, tel, anchor or other. Optional de-duplication. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting <table> elements from HTML into rows of cell text, with header detection (html-tables-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-meta-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Extracts metadata from a supplied HTML string (no fetching): title, lang, meta description/robots, canonical, Open Graph and Twitter tags, JSON-LD block count and types, h1 texts and hreflang links. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-tables-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Extracts <table> elements from HTML into rows of cell text, with header detection (thead or a first row of th), colspan expansion and optional row objects keyed by header. Nested tables are extracted separately. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-to-text1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts HTML to readable plain text by string processing: drops script/style/comments, turns block elements into line breaks and list items into \"- \", decodes entities, optionally keeps link URLs. Not a full HTML parser. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: stripping Markdown syntax (markdown-to-text). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
html-unescape1 field changed- added
Input schema / descriptionAdded value: +"EN: Decodes HTML character references: numeric (é é) and about 100 common named entities (& ñ € …). Unknown names are left as-is. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: escaping &, <, > (html-escape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
http-date1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts between HTTP-date (IMF-fixdate, e.g. \"Sat, 31 Oct 2026 12:00:00 GMT\") and ISO 8601 / Unix seconds, e.g. for Last-Modified, Expires and Retry-After headers. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
http-headers-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a raw HTTP header block (optionally starting with a request or status line) into an object with lowercase names; repeated headers become arrays (Set-Cookie always an array). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting between HTTP-date (http-date). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
http-status1 field changed- added
Input schema / descriptionAdded value: +"EN: Explains an HTTP status code: standard reason phrase (English and Spanish), class, short meaning, and whether a client should typically retry it. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
idempotency-key1 field changed- added
Input schema / descriptionAdded value: +"EN: Derives a deterministic idempotency key from a request (method, URL, canonical JSON body, optional scope) as SHA-256 hex or a UUID-shaped string, so retries of the same request reuse the same key. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: deriving the RFC 9562 version-5 UUID of a namespace (uuid-v5). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
int-gcd-lcm1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the exact GCD and LCM of a list of integers of up to 100 digits each, computed with BigInt and Euclid's algorithm; returned as text, keeping every digit. Useful for fractions, shift rotations and batch sizes. When: a numeric result has to be exact or reproducible instead of estimated. Not for: reducing a fraction (fraction-simplify). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
interest-rate-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts interest rates between effective annual (EA/APY), nominal annual compounded m times (APR, e.g. NMV monthly in Colombia) and effective periodic rates, for advance or arrears payment. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: converting pay between hourly, monthly and annual figures (salary-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
invoice-total1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes an invoice from line items (quantity, unit price, line discount %, tax rate %): line totals, subtotal, discount, tax grouped by rate, and grand total, rounded per line to the currency's minor units. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: splitting a bill among people with an optional tip % (bill-split). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ip-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates an IPv4 or IPv6 address and returns canonical (RFC 5952 compressed) and expanded forms, integer and hex values, reverse-DNS name, and its type (private, loopback, link-local, documentation, multicast, CGNAT, global…). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: describing an IPv4 or IPv6 CIDR block (cidr-info). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ip-range-to-cidrs1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts an inclusive start-end IP range (IPv4 or IPv6) into the minimal list of CIDR blocks that covers exactly that range (at most 1,000 blocks). When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking whether an IP address falls inside any of a list of CIDR blocks (cidr-contains). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
iso-country-lookup1 field changed- added
Input schema / descriptionAdded value: +"EN: Looks up ISO 3166-1 alpha-2 countries by code or by name in Spanish or English (accent-insensitive, partial match) and returns the code, both names and the flag emoji. Names come from the Unicode CLDR data bundled with Node.js; 249 codes. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: looking up ISO 639-1 two-letter language codes by code or by name in Spanish or English (iso-language-lookup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
iso-language-lookup1 field changed- added
Input schema / descriptionAdded value: +"EN: Looks up ISO 639-1 two-letter language codes by code or by name in Spanish or English (accent-insensitive, partial match). Names come from the Unicode CLDR data bundled with Node.js. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: looking up ISO 3166-1 alpha-2 countries by code or by name in Spanish or English (iso-country-lookup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-canonicalize1 field changed- added
Input schema / descriptionAdded value: +"EN: Serializes a JSON value in RFC 8785 (JCS) canonical form: sorted keys, no whitespace, ECMAScript number formatting; also returns its SHA-256 for signing or deduplication. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: recursively sorting object keys (json-sort-keys). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Finds and parses JSON objects/arrays embedded in free text (e.g. an LLM reply): fenced ```json blocks first, then balanced {…}/[…] spans; optionally repairs near-JSON. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: extracting fenced code blocks (code-blocks-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-path1 field changed- added
Input schema / descriptionAdded value: +"EN: Evaluates a JSONPath query (RFC 9535 subset: .name, ['name'], [n], [*], .., [a:b:c], unions, filters with ==, !=, <, <=, >, >=, &&, ||, !) and returns matching values and their normalized paths. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: reading the value at a path such as /clientes/0/nit inside a JSON document using RFC 6901 syntax (json-pointer-get). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-pointer-get1 field changed- added
Input schema / descriptionAdded value: +"EN: Reads the value at a path such as /clientes/0/nit inside a JSON document using RFC 6901 syntax (~1 stands for /, ~0 for ~) and reports whether the path exists rather than failing. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: evaluating a JSONPath query (json-path). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-repair1 field changed- added
Input schema / descriptionAdded value: +"EN: Repairs almost-JSON typical of LLM output (code fences, comments, single quotes, unquoted keys, trailing or missing commas, Python True/False/None, NaN, unclosed strings and brackets) and returns the parsed value and the fixes applied. When: a model returned almost-valid JSON that has to be parsed without asking the model again. Not for: checking whether text is valid JSON (json-parse-check). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-schema-from-samples1 field changed- added
Input schema / descriptionAdded value: +"EN: Turns sample documents (for example API replies) into a starter JSON Schema: merges the types seen at each path, marks keys present in every sample as required and describes array items. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: validating a JSON value against a JSON Schema using a built-in subset (json-schema-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-schema-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a JSON value against a JSON Schema using a built-in subset (type, enum, const, properties, required, items, min/max*, pattern, format, allOf/anyOf/oneOf/not). No $ref; patterns are time-limited; unsupported keywords are reported. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: turning sample documents (json-schema-from-samples). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
json-unflatten1 field changed- added
Input schema / descriptionAdded value: +"EN: Rebuilds nested JSON from flat dotted keys; numeric segments and [n] become array indices (max 10,000) unless arrays is false. Conflicting keys and __proto__/constructor/prototype segments are rejected. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: flattening nested objects/arrays into one level with dotted keys (json-flatten-paths). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
julian-day1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts a UTC date-time to Julian Date, Modified Julian Date and Julian Day Number, or a Julian Date back to UTC. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing sunrise, sunset and day length for a place and date (sun-times). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
jwt-decode1 field changed- added
Input schema / descriptionAdded value: +"EN: Decodes a JWT header and payload WITHOUT verifying the signature, so the claims must not be trusted. Converts exp/iat/nbf to ISO dates and, given as_of, reports whether the token is expired or not yet valid. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking an HMAC-signed JWT (jwt-verify-hmac). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
jwt-sign-hmac1 field changed- added
Input schema / descriptionAdded value: +"EN: Creates a compact JWS/JWT signed with HS256, HS384 or HS512 using a provided secret, e.g. for test fixtures or service-to-service tokens. Claims are signed as given; no defaults are added. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking an HMAC-signed JWT (jwt-verify-hmac). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
jwt-verify-hmac1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks an HMAC-signed JWT (HS256, HS384, HS512) offline: compares the signature in constant time, refuses \"none\" and algorithm swaps, and evaluates exp and nbf at a given instant (as_of) with optional leeway. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: decoding a JWT header and payload WITHOUT verifying the signature, so the claims must not be trusted (jwt-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
levenshtein-distance1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the edit distance (insertions, deletions, substitutions) between two strings by code point, plus a normalized similarity 1 - d/max(len). Length product capped at 4M. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: measuring edit distance that also counts swapped adjacent characters (damerau-levenshtein). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
link-header-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an HTTP Link header into URL + rel + other parameters, e.g. to follow rel=\"next\" pagination; relative URLs are resolved against an optional base. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a raw HTTP header block (http-headers-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
llm-cost-estimate1 field changed- added
Input schema / descriptionAdded value: +"EN: Estimates LLM request cost from input/output token counts (or text, estimated heuristically) and supplied per-million-token prices, with optional cached-input pricing and call volume. No built-in price list. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: estimating the cost of a batch of pay-per-call API requests (x402-cost-estimate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
llms-txt-lint1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks an llms.txt file against the llmstxt.org format: one H1 title first, optional > summary, H2 sections containing \"- [name](url): notes\" link lists, an optional \"Optional\" section; reports errors, warnings and the parsed structure. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: scoring how ready a site is for AI agents from pasted content (agent-readiness-checklist). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
luhn-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a number with the Luhn mod-10 checksum (credit cards, IMEI, many national IDs); spaces and dashes are ignored. When: an identifier's format and check digit have to be verified offline before it is used. Not for: detecting a payment card brand from its IIN prefix (card-brand-detect). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
map-tile1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts lat/lon and zoom (0-24) to Web Mercator XYZ tile coordinates and quadkey, or a tile back to its bounding box. When: coordinates, distances, bearings or areas have to be computed from given points. Not for: encoding a latitude/longitude as a geohash string of precision 1-12 and reporting the cell size in metres (geohash-encode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
margin-markup1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes profit, gross margin % (profit/price), markup % (profit/cost) and the price multiplier from unit cost and selling price. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing the selling price needed for a target gross margin % (price-from-margin). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
markdown-links-extract1 field changed- added
Input schema / descriptionAdded value: +"EN: Lists inline links, images, reference definitions and bare URLs in Markdown with their text and target, flagging relative and non-http(s) links. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
markdown-render-html1 field changed- added
Input schema / descriptionAdded value: +"EN: Renders a CommonMark-like Markdown subset (headings, paragraphs, emphasis, code, fenced code, lists, blockquotes, tables, links, images) to HTML. Raw HTML is escaped and only http(s), mailto, # and / links are kept. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: stripping Markdown syntax (markdown-to-text). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
markdown-table1 field changed- added
Input schema / descriptionAdded value: +"EN: Builds a GitHub-flavored Markdown table from an array of objects (columns = union of keys) or an array of rows with headers, with per-column alignment and pipe escaping. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting ATX headings (markdown-toc). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
markdown-to-text1 field changed- added
Input schema / descriptionAdded value: +"EN: Strips Markdown syntax (headings, emphasis, links, images, code fences, lists, blockquotes, tables, inline HTML) and returns plain text, keeping link and image text. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: converting HTML to readable plain text by string processing (html-to-text). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
markdown-toc1 field changed- added
Input schema / descriptionAdded value: +"EN: Extracts ATX headings (#…######, skipping code fences) and builds a nested Markdown table of contents with GitHub-style anchors, deduplicating repeated anchors. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a GitHub-flavored Markdown table from an array of objects (markdown-table). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mcp-protocol-compat1 field changed- added
Input schema / descriptionAdded value: +"EN: Compares an MCP initialize request and its response (revisions up to 2025-11-25; from 2026-07-28 there is no initialize, which it reports): version negotiation, client and server capabilities per revision, missing required and unknown capabilities, clientInfo/serverInfo. When: a captured MCP initialize exchange has to be analysed for protocol-version and capability mismatches. Not for: linting an MCP Registry server.json (mcp-server-json-lint); nor a live 2026-07-28 compatibility probe of a remote MCP endpoint (separate paid Burs-IA x402 SKU verify-mcp-2026, per call in USDC on Base). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mcp-server-json-lint1 field changed- added
Input schema / descriptionAdded value: +"EN: Lints an MCP Registry server.json: $schema URL and date, reverse-DNS name (namespace/name), description up to 100 characters, exact version, repository, packages (registryType, identifier, transport) and remotes (streamable-http or sse over https), plus snake_case fields from older schemas. When: an MCP Registry server.json has to be checked before it is published. Not for: linting MCP tool definitions (mcp-tools-lint); nor probing a live remote MCP endpoint (separate paid Burs-IA x402 SKU verify-mcp-quick, per call in USDC on Base). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mcp-tools-lint1 field changed- added
Input schema / descriptionAdded value: +"EN: Lints MCP tool definitions (a tools/list result or array): name syntax and uniqueness, description presence/length, inputSchema root type, required keys defined in properties, undocumented properties, and annotation hints; returns a 0-100 score. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: checking an A2A Agent Card against the A2A specification (agent-card-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mermaid-check1 field changed- added
Input schema / descriptionAdded value: +"EN: Sanity-checks Mermaid diagram text without rendering it: known diagram type and direction, balanced brackets and quotes per line, subgraph/end and block (loop/alt/opt/par) pairing, and flowchart edges with a target. Not a full parser. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: sanity-checking Graphviz DOT text without rendering (dot-check). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mime-lookup1 field changed- added
Input schema / descriptionAdded value: +"EN: Looks up the MIME type for a file name or extension, or the common extensions for a MIME type, from a built-in table of about 130 types; also says whether the type is text-like. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Content-Type / media type header into type, subtype, structured-syntax suffix (content-type-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
money-allocate1 field changed- added
Input schema / descriptionAdded value: +"EN: Splits an amount into parts by ratios or equally, in integer minor units using the largest-remainder method so the parts always add up exactly to the total. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: splitting a bill among people with an optional tip % (bill-split). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
month-info1 field changed- added
Input schema / descriptionAdded value: +"EN: Describes a year and month: number of days, leap year, weekday of the first and last day, number of weekdays (Mon-Fri) and weekend days, and the quarter. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: returning a month as a grid of weeks (calendar-month). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
moon-phase1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the approximate moon phase for an instant from the mean synodic month (29.530589 days) since the 2000-01-06 18:14 UTC new moon: age in days, illuminated fraction and phase name (en/es). Accuracy about ±1 day for names. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: computing sunrise, sunset and day length for a place and date (sun-times). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mx-amount-in-words1 field changed- added
Input schema / descriptionAdded value: +"EN: Writes a peso amount in words in the style used on Mexican invoices (CFDI) and checks: \"MIL DOSCIENTOS PESOS 50/100 M.N.\". When: Spanish text, numbers or dates have to be handled by the written rules of Spanish instead of by approximation. Not for: writing a Colombian peso amount in words for cheques and invoices (co-amount-in-words). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mx-clabe-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates an 18-digit Mexican CLABE interbank account number: structure (bank 3, branch/plaza 3, account 11, check digit 1) and the weighted 3-7-1 mod-10 check digit. Validation only; it never computes a missing digit. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Mexican CURP (mx-curp-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mx-curp-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Mexican CURP (18 characters): structure, birth date, sex (H/M/X), state code, and the RENAPO check digit; returns valid/invalid and the decoded fields. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Mexican RFC (mx-rfc-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
mx-rfc-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Mexican RFC (SAT taxpayer ID): 13 characters for individuals or 12 for companies, embedded date, and the SAT mod-11 check digit (homoclave last character). Returns valid/invalid only. When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating a Mexican CURP (mx-curp-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
nanoid1 field changed- added
Input schema / descriptionAdded value: +"EN: Generates compact URL-safe random IDs (default 21 chars from A-Za-z0-9_-) or with a custom alphabet of 2-256 unique characters, without modulo bias. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating a random token of 1-256 bytes encoded as hex, base64url or base58, e.g. for API keys or nonces (random-token). Side effects: none (read-only, no network access, no stored state). Not deterministic: random unless seed is given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
number-format-locale1 field changed- added
Input schema / descriptionAdded value: +"EN: Formats a number for a locale with Intl.NumberFormat: decimal, percent, compact (1.2K / 1,2 mil), scientific or engineering notation, with min/max fraction digits and grouping. When: a numeric result has to be exact or reproducible instead of estimated. Not for: rounding a number to N decimal places using exact decimal arithmetic (round-number). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
onda-traducir1 field changed- added
Input schema / descriptionAdded value: +"EN: Accepts an A2A Agent Card, MCP server.json/tools, OpenAPI/Swagger, x402 payment manifest, llms.txt or a plain es/en/pt description (JSON string or object, broken JSON repaired) and returns A2A, MCP, OpenAPI and x402 translations, call examples and every assumption. When: an agent, server or API is described in one protocol (A2A, MCP, OpenAPI, x402, llms.txt or plain text) and the same description is needed in the others. Not for: converting a tool definition (tool-definition-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
openapi-summary1 field changed- added
Input schema / descriptionAdded value: +"EN: Summarizes a supplied OpenAPI 3.x document: title, version, servers, operations (method, path, operationId, summary), security, and lint issues (missing operationId/summary, no responses, 402 payment responses). When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: translating a whole agent or API description between A2A, MCP, OpenAPI and x402 (onda-traducir). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
payment-fee1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes, for a processor fee of percent + fixed amount, the amount to charge to net a target amount (gross-up) or the net received from a gross charge. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: applying percentage or fixed discounts to a price (discount-calculate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
pe-ruc-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a Peruvian RUC (11 digits) with the SUNAT mod-11 check digit (weights 5432765432) and identifies the taxpayer type from its prefix (10 person, 15/17 non-domiciled, 20 company). When: a user-supplied Latin American or Spanish ID or account number has to be checked offline before it is stored or used; the tool only validates. Not for: validating an Ecuadorian cédula (ec-id-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
phone-e164-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Normalizes a phone number to E.164 (+ and 8-15 digits) and identifies the country calling code from a built-in table. Syntax only: it does not check that the number is assigned or reachable. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: checking the SYNTAX of a Colombian phone number (co-phone-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
price-from-margin1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the selling price needed for a target gross margin % (price = cost / (1 − m)) or markup % (price = cost × (1 + k)), and converts between margin and markup. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: computing profit, gross margin % (margin-markup). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
prompt-template-fill1 field changed- added
Input schema / descriptionAdded value: +"EN: Fills {{variable}} placeholders (dotted paths allowed, optional {{name|default}}) from a values object, reporting missing and unused variables; strict mode fails on missing values. No code execution. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: heuristically estimating how many LLM tokens a text uses (token-estimate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
punycode-encode1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts an internationalized domain name to ASCII: lowercases and NFC-normalizes each label, then applies Punycode (RFC 3492) with the xn-- prefix. Does not apply full UTS #46 mapping. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: converting xn-- Punycode labels of a domain back to Unicode (punycode-decode). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
query-build1 field changed- added
Input schema / descriptionAdded value: +"EN: Serializes an object to an application/x-www-form-urlencoded query string; arrays repeat the key (a=1&a=2) or use brackets (a[]=1), nested objects use brackets, nulls are skipped. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a URL query string (query-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
query-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a URL query string (leading ? optional, + as space) into an object; repeated keys become arrays, and with nested=true a[b]=1 and a[]=1 bracket syntax builds objects/arrays. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: serializing an object to an application/x-www-form-urlencoded query string (query-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
rag-chunk1 field changed- added
Input schema / descriptionAdded value: +"EN: Splits text into chunks of at most N characters or estimated tokens with overlap, preferring paragraph, then sentence, then word boundaries; returns offsets for citation. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: splitting Spanish text into sentences, aware of ¿…? and ¡…!, ellipses, decimals and thousands (es-sentence-split). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
rate-limit-plan1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes, for a limit of N requests per window and a number of calls to make, the minimum spacing between calls, the minimum total duration and a token-bucket wait time for the next call. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: computing retry delays for exponential, linear or constant backoff with a cap and optional jitter (backoff-schedule). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
readability-score1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the language-agnostic LIX and RIX scores plus estimated Flesch Reading Ease (en) or Fernández-Huerta (es) using heuristic syllable counts; also sentence and word length averages. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: counting characters (text-metrics). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
recibo-verify1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks a receipt (recibo): recomputes the SHA-256 of the RFC 8785 (JCS) canonical input, output and receipt, and with rerun re-runs the tool. Unsigned: proves consistency, not origin. Without rerun it reports consistent, not valid. When: a Burs-IA receipt (recibo) has to be checked for consistency with the input and output it claims, optionally by re-running the tool. Not for: computing the SHA-256 digest (hash-sha256). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
regex-replace1 field changed- added
Input schema / descriptionAdded value: +"EN: Replaces regex matches ($1, $<name>, $&, $` and $' supported) in a vm context with a 50 ms limit and a 1,000,000-character result cap. Without the g flag only the first match is replaced. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: escaping a literal string so it can be embedded in a regular expression and match itself exactly (regex-escape). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
regex-test1 field changed- added
Input schema / descriptionAdded value: +"EN: Tries a JavaScript regex on a text and lists each match with its position and groups (up to 500). The pattern runs in a separate vm context that is stopped after 50 ms, so a catastrophic pattern returns timeout instead of hanging. Pattern ≤ 500 chars. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: replacing regex matches (regex-replace). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
retry-after-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an HTTP Retry-After value (delay seconds or HTTP-date) into seconds to wait and the absolute retry time, relative to a given now instant. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: computing retry delays for exponential, linear or constant backoff with a cap and optional jitter (backoff-schedule). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
robots-ai-crawlers1 field changed- added
Input schema / descriptionAdded value: +"EN: Reports, for a given robots.txt and 21 known AI crawlers and agent fetchers (GPTBot, ClaudeBot, Claude-User, Google-Extended, PerplexityBot, CCBot…), whether a path is allowed and whether the decision comes from a bot-specific group. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: deciding whether a user agent may fetch a path under a supplied robots.txt (robots-txt-check). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
robots-txt-check1 field changed- added
Input schema / descriptionAdded value: +"EN: Decides whether a user agent may fetch a path under a supplied robots.txt (RFC 9309: most specific group, longest match, Allow wins ties, * and $ wildcards) and reports the deciding rule. Nothing is fetched. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: reports,ing for a given robots.txt and 21 known AI crawlers and agent fetchers (robots-ai-crawlers). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
round-number1 field changed- added
Input schema / descriptionAdded value: +"EN: Rounds a number to N decimal places using exact decimal arithmetic (no float drift: 1.005 → 1.01 half-up) with modes half_up, half_even (banker's), half_down, up, down, ceiling, floor. When: a numeric result has to be exact or reproducible instead of estimated. Not for: rounding a number to N significant figures and returning it in plain and scientific notation (significant-figures). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
salary-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts pay between hourly, daily, weekly, biweekly, monthly and annual figures using configurable hours per week, days per week and weeks per year. When: a money, tax or financial-math result has to be exact and reproducible (rounding, cents, rates). Not for: converting interest rates between effective annual (interest-rate-convert). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
security-txt-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a security.txt file per RFC 9116: required Contact and a single Expires (in the future relative to as_of and ideally < 1 year away), known fields, https URIs, and whether it is PGP-signed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: deciding whether a user agent may fetch a path under a supplied robots.txt (robots-txt-check). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
semver-bump1 field changed- added
Input schema / descriptionAdded value: +"EN: Increments a SemVer version: major, minor, patch, premajor, preminor, prepatch or prerelease (with an optional identifier like beta or rc), following npm semver semantics. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: validating and parsing a SemVer 2.0.0 string (semver-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
semver-compare1 field changed- added
Input schema / descriptionAdded value: +"EN: Compares two SemVer versions with full precedence rules (prereleases sort before releases; build metadata ignored): returns -1, 0 or 1 and the difference level. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
semver-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates and parses a SemVer 2.0.0 string (optional leading v) into major, minor, patch, prerelease identifiers and build metadata. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
semver-satisfies1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks whether a version satisfies an npm-style range (^, ~, x-ranges, hyphen ranges, comparators, || alternatives). Prereleases only match when the range names the same version tuple, unless include_prerelease is true. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: incrementing a SemVer version (semver-bump). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
semver-sort1 field changed- added
Input schema / descriptionAdded value: +"EN: Sorts a list of SemVer versions by precedence (ascending or descending), reports invalid entries, and optionally returns the highest version satisfying a range. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: comparing two SemVer versions with full precedence rules (semver-compare). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
set-cookie-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a Set-Cookie response header into name, value and attributes (Expires, Max-Age, Domain, Path, Secure, HttpOnly, SameSite, Partitioned) and flags common security omissions. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing a Cookie request header (cookie-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
sitemap-build1 field changed- added
Input schema / descriptionAdded value: +"EN: Builds a sitemaps.org XML sitemap from up to 50,000 URLs with optional lastmod, changefreq and priority, XML-escaping each value and rejecting non-http(s) URLs. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: extracting and classifying the links of an HTML document (html-links-extract). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
solana-address-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks that a string is a syntactically valid Solana public key: Base58 (Bitcoin alphabet) decoding to exactly 32 bytes. Cannot tell whether it is on-curve, funded or owned. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a Bitcoin address offline: Base58Check P2PKH/P2SH (bitcoin-address-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
sql-readonly-check1 field changed- added
Input schema / descriptionAdded value: +"EN: Statically checks whether SQL text only reads: splits statements, skips comments and quoted text, and flags write or DDL keywords (also inside CTEs and SELECT … INTO), locking clauses, EXPLAIN ANALYZE and risky functions. A heuristic; enforcement belongs to read-only database roles. When: SQL text from a model or a user has to be screened for writes before it reaches a database. Not for: trying a JavaScript regex on a text and listing each match with its position and groups (regex-test). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
stats-correlation1 field changed- added
Input schema / descriptionAdded value: +"EN: Measures how two equal-length series move together: the Pearson coefficient (linear), the Spearman coefficient (rank-based, less sensitive to outliers) and the covariance. When: a numeric result has to be exact or reproducible instead of estimated. Not for: least-squaring fit y = slope·x + intercept with R², standard error, and optional predictions for new x values (stats-regression). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
stats-forecast1 field changed- added
Input schema / descriptionAdded value: +"EN: Forecasts a numeric series with simple exponential smoothing, Holt (trend) or additive Holt-Winters (trend + season). Smoothing parameters are given or chosen by a deterministic grid search minimizing SSE. Returns forecasts, fitted values and MAE/RMSE/MAPE. When: a numeric result has to be exact or reproducible instead of estimated. Not for: computing the simple (stats-moving-average). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
sun-times1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the approximate sunrise, sunset, solar noon, civil twilight and day length for a latitude/longitude and date (astronomical formulas, about ±1-2 min), shown in UTC and a chosen time zone. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: converting between UTC and Julian dates (julian-day). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
text-invisible-scan1 field changed- added
Input schema / descriptionAdded value: +"EN: Finds zero-width, bidi-control, Unicode tag and other invisible characters (often used to hide instructions in text) and decodes any hidden tag-character text. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: removing zero-width, bidi-control, Unicode tag and other invisible format characters (text-invisible-strip). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
text-metrics1 field changed- added
Input schema / descriptionAdded value: +"EN: Counts characters (code points and graphemes), bytes, words, sentences, lines and paragraphs, using Unicode segmentation, plus an estimated reading time at 238 words per minute. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: computing the language-agnostic LIX and RIX scores plus estimated Flesch Reading Ease (readability-score). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
text-normalize-whitespace1 field changed- added
Input schema / descriptionAdded value: +"EN: Collapses runs of spaces/tabs, trims each line, normalizes CRLF/CR to LF, converts non-breaking and other Unicode spaces to ASCII space and limits consecutive blank lines. When: text has to be transformed, compared or measured exactly instead of approximated. Not for: applying Unicode normalization form NFC, NFD, NFKC or NFKD and reporting whether the text changed (unicode-normalize). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
text-redact-pii1 field changed- added
Input schema / descriptionAdded value: +"EN: Masks common personal data and secrets in text: emails, phone numbers, Luhn-valid card numbers, IBANs, IPv4 addresses, JWTs, API keys (sk-, AKIA, ghp_, xox, AIza) and PEM private keys. Pattern-based; may miss or over-match. When: personal data (emails, phones, IDs, cards) has to be masked in text before it is logged or sent to a model. Not for: finding email-like addresses in text (extract-emails). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
timestamp-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts a Unix timestamp to ISO 8601 (auto-detecting seconds, milliseconds, microseconds or nanoseconds by magnitude, or explicit unit), or an ISO date-time to Unix seconds and milliseconds. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: parsing an ISO 8601 or RFC 2822 date-time into its parts (datetime-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
timezone-info1 field changed- added
Input schema / descriptionAdded value: +"EN: Reports a time zone's UTC offset and local time at an instant, its January and July offsets, whether DST is in effect, and the short and long zone names. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the supported IANA time zones (timezone-list). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
timezone-list1 field changed- added
Input schema / descriptionAdded value: +"EN: Lists the IANA time zone identifiers supported by this runtime, optionally filtered by a case-insensitive substring (e.g. America, Bogota). When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: converting a wall-clock date-time from one IANA time zone to another (timezone-shift). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
timezone-overlap1 field changed- added
Input schema / descriptionAdded value: +"EN: Finds, for a date and a list of time zones with local working hours, the UTC window when everyone is within working hours, shown in each zone's local time. When: a date, time-zone or calendar result has to be exact (offsets, daylight saving, month ends, leap years). Not for: listing the supported IANA time zones (timezone-list). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
token-estimate1 field changed- added
Input schema / descriptionAdded value: +"EN: Heuristically estimates how many LLM tokens a text uses (Latin text ~4 chars/token, CJK ~1 char/token, code and punctuation denser) with a ±25% range. Real counts depend on each model's tokenizer. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: estimating LLM request cost from input/output token counts (llm-cost-estimate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
token-units-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts a token amount between decimal and integer base units exactly (BigInt), e.g. USDC (6 decimals) 1.5 ↔ 1500000, ETH (18) or any decimals 0-36, as used in x402 payment requirements. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: estimating LLM request cost from input/output token counts (llm-cost-estimate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
tool-definition-convert1 field changed- added
Input schema / descriptionAdded value: +"EN: Converts a tool definition (name, description, JSON Schema parameters) between MCP (inputSchema), OpenAI function-calling (function.parameters) and Anthropic tool-use (input_schema) shapes, validating the name. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: translating a whole agent or API description between A2A, MCP, OpenAPI and x402 (onda-traducir). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
ulid-generate1 field changed- added
Input schema / descriptionAdded value: +"EN: Generates ULIDs: 26-char Crockford Base32, 48-bit millisecond timestamp plus 80 random bits, sortable. Reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: validating a ULID and extracting its timestamp (ulid-decode). Side effects: none (read-only, no network access, no stored state). Not deterministic: random and clock unless seed and timestamp_ms are given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
url-build1 field changed- added
Input schema / descriptionAdded value: +"EN: Builds a URL from a base, optional path segments (each percent-encoded) and query parameters (arrays repeat the key), with an optional fragment. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing an absolute URL with the WHATWG URL parser into scheme, host, port (url-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
url-normalize1 field changed- added
Input schema / descriptionAdded value: +"EN: Normalizes a URL for comparison or deduplication: lowercase scheme/host, drop default port, resolve dot segments, optionally sort query, drop tracking parameters (utm_*, gclid, fbclid…), fragment and trailing slash. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a URL from a base, optional path segments (url-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
url-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses an absolute URL with the WHATWG URL parser into scheme, host, port (with default), path, query parameters (repeated keys as arrays), fragment and origin. Passwords are never echoed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a URL from a base, optional path segments (url-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
url-resolve1 field changed- added
Input schema / descriptionAdded value: +"EN: Resolves a relative reference (../x, /y, ?q, //host/z) against a base URL per the WHATWG URL standard. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: building a URL from a base, optional path segments (url-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
user-agent-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Heuristically parses a User-Agent string into browser and version, engine, OS and version, device class (desktop/mobile/tablet/bot) and known crawlers/AI bots. User-Agents can be spoofed. When: a URL, HTTP header, token, version string, IP range, HTML or Markdown document or agent-readiness file has to be parsed, built or checked exactly. Not for: parsing an Accept-Language header and picking the best locale (accept-language-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
uuid-v71 field changed- added
Input schema / descriptionAdded value: +"EN: Generates RFC 9562 version-7 UUIDs: 48-bit Unix millisecond timestamp plus random bits, so they sort by creation time. Output is reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used. When: an identifier has to be generated in this format or its embedded fields decoded. Not for: generating random RFC 9562 version-4 UUIDs (uuid-v4). Side effects: none (read-only, no network access, no stored state). Not deterministic: random and clock unless seed and timestamp_ms are given. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
vector-similarity1 field changed- added
Input schema / descriptionAdded value: +"EN: Computes the cosine similarity, dot product, Euclidean and Manhattan distance between two numeric vectors of equal length (≤ 8,192 dims), plus their L2 norms. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: ranking up to 2,000 candidate vectors by cosine similarity (vector-top-k). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
vector-top-k1 field changed- added
Input schema / descriptionAdded value: +"EN: Ranks up to 2,000 candidate vectors by cosine similarity (or negative Euclidean distance) to a query vector and returns the top k with indices and scores; total size capped at 2M numbers. When: an agent loop needs an exact, repeatable result for a bookkeeping step (tokens, costs, retries, chunking, ranking, JSON clean-up). Not for: comparing two numeric vectors by cosine, dot product, Euclidean or Manhattan distance (vector-similarity). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
verhoeff1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a digit string with the Verhoeff dihedral-group checksum (catches all single errors and adjacent transpositions; used by India's Aadhaar); the last digit is the check digit. Validation only. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a digit string with the Damm quasigroup checksum (damm). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
vin-validate1 field changed- added
Input schema / descriptionAdded value: +"EN: Validates a 17-character VIN: allowed characters (no I, O, Q), the North American check digit (position 9), and decodes WMI, model year code and region. Non-North-American VINs may not use the check digit. When: an identifier's format and check digit have to be verified offline before it is used. Not for: validating a 15-digit mobile device IMEI with its Luhn check digit and splitting it into TAC (imei-validate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
x402-cost-estimate1 field changed- added
Input schema / descriptionAdded value: +"EN: Estimates the cost of a batch of pay-per-call API requests (e.g. x402 at $0.001/call) in USD and USDC base units, after a free allowance, and how many calls a budget buys. Exact decimal math. When: an agent description, tool list, OpenAPI document or receipt has to be read, converted or checked against its protocol format. Not for: estimating LLM request cost from input/output token counts (llm-cost-estimate). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
x402-payment-decode1 field changed- added
Input schema / descriptionAdded value: +"EN: Decodes an x402 X-PAYMENT / PAYMENT-SIGNATURE value (base64 JSON, v1 or v2) and checks its structure: scheme, network, EIP-3009 authorization fields and signature format; optionally compares it with the PaymentRequirements. Signature not verified. When: an x402 payment header received by a seller, or built by a client, has to be read and checked before it goes to a facilitator. Not for: linting the PaymentRequirements of an x402 402 response (x402-requirements-lint). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
x402-payment-response-verify1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks an x402 X-PAYMENT-RESPONSE / PAYMENT-RESPONSE settlement value against given PaymentRequirements (and optionally the payment sent): success, transaction hash format, network, payer, payTo, amount. Consistency of given data only, not on-chain truth. When: an x402 settlement response has to be matched with what was offered and paid before delivering or recording. Not for: decoding an x402 payment header and checking its structure (x402-payment-decode); nor checking the delivery binding of a Burs-IA paid receipt (separate paid Burs-IA x402 SKU verify-x402-delivery-receipt, per call in USDC on Base). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
x402-replay-check1 field changed- added
Input schema / descriptionAdded value: +"EN: Checks an x402 payment (header value, payload or EIP-3009 authorization) against a given time and a supplied list of seen nonces: replayed nonce, not yet valid, expired or near expiry, and validBefore further from now than maxTimeoutSeconds. When: a seller has to decide if an x402 payment authorization is still fresh, from its own record of accepted nonces. Not for: decoding an x402 payment header and checking its structure (x402-payment-decode); nor comparing two Burs-IA paid-delivery receipts for a duplicate settlement (separate paid Burs-IA x402 SKU verify-x402-replay, per call in USDC on Base). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
x402-requirements-lint1 field changed- added
Input schema / descriptionAdded value: +"EN: Lints an x402 402 body, PAYMENT-REQUIRED value, accepts[] or one PaymentRequirements (v1 or v2): required fields, CAIP-2 networks, asset and payTo formats, atomic amounts, maxTimeoutSeconds, resource URL, mimeType, outputSchema and Bazaar extension shape. When: a 402 response or PaymentRequirements has to be checked against the x402 format before publishing or paying. Not for: decoding an x402 payment header and checking its structure (x402-payment-decode); nor fetching a live seller URL and checking the 402 it returns (separate paid Burs-IA x402 SKU verify-x402-seller, per call in USDC on Base). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
xml-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses XML into JSON: attributes as @name, text as #text (or a plain string for text-only elements), repeated children as arrays. DTDs and custom entities are rejected (no XXE or entity expansion). When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: parsing a safe YAML subset (yaml-parse). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
yaml-parse1 field changed- added
Input schema / descriptionAdded value: +"EN: Parses a safe YAML subset (block maps and sequences, plain/quoted scalars, flow [..] {..}, | and > blocks, comments) to JSON. Anchors, aliases, tags, merge keys and multi-documents are rejected. When: structured data (JSON, CSV, YAML, XML, arrays) has to be transformed, compared or checked exactly. Not for: serializing a JSON value as YAML (yaml-build). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
zlib-compress1 field changed- added
Input schema / descriptionAdded value: +"EN: Compresses text or bytes with gzip (RFC 1952), zlib/deflate (RFC 1950/1951) or Brotli (RFC 7932) and returns base64 plus sizes and ratio, to compare formats. Output bytes may differ between zlib versions; decompression stays compatible. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: decompressing base64 data in gzip, zlib/deflate, raw deflate or Brotli (zlib-decompress). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
- Changed
zlib-decompress1 field changed- added
Input schema / descriptionAdded value: +"EN: Decompresses base64 data in gzip, zlib/deflate, raw deflate or Brotli (auto-detects gzip and zlib headers). Output is capped at 1 MB, so compression bombs fail safely. Returns UTF-8 text when valid, else base64. When: bytes or text have to be converted to or from this encoding exactly, without guessing. Not for: compressing text or bytes with gzip (zlib-compress). Side effects: none (read-only, no network access, no stored state). Deterministic: the same input gives the same output. Limits: JSON input up to 64 KB, 1 s per call, result up to 1 MB."
466 tool updates
- First observed
aba-routing-validate - First observed
accept-language-parse - First observed
age-calculate - First observed
agent-card-validate - First observed
agent-readiness-checklist - First observed
ar-cbu-validate - First observed
ar-cuit-validate - First observed
array-chunk - First observed
array-count-by - First observed
array-dedupe - First observed
array-flatten - First observed
array-group-by - First observed
array-pluck - First observed
array-set-ops - First observed
array-shuffle - First observed
array-sort - First observed
ascii85-decode - First observed
ascii85-encode - First observed
backoff-schedule - First observed
base32-decode - First observed
base32-encode - First observed
base58-decode - First observed
base58-encode - First observed
base58check-decode - First observed
base58check-encode - First observed
base64-decode - First observed
base64-encode - First observed
base64url-decode - First observed
base64url-encode - First observed
basic-auth-header - First observed
bech32-decode - First observed
bech32-encode - First observed
bigint-calc - First observed
bill-split - First observed
binary-decode - First observed
binary-encode - First observed
bitcoin-address-validate - First observed
bm25-rank - First observed
br-cnpj-validate - First observed
br-cpf-validate - First observed
business-days-add - First observed
business-days-between - First observed
cache-control-parse - First observed
calendar-month - First observed
card-brand-detect - First observed
case-camel - First observed
case-constant - First observed
case-detect - First observed
case-dot - First observed
case-kebab - First observed
case-pascal - First observed
case-sentence - First observed
case-snake - First observed
case-swap - First observed
case-title - First observed
case-train - First observed
char-frequency - First observed
checksum-adler32 - First observed
checksum-crc16 - First observed
checksum-crc32 - First observed
checksum-crc32c - First observed
checksum-fnv1a32 - First observed
checksum-fnv1a64 - First observed
checksum-murmur3-32 - First observed
checksum-xxh32 - First observed
cidr-contains - First observed
cidr-info - First observed
cidr-split - First observed
cipher-rot13 - First observed
cl-rut - First observed
co-amount-in-words - First observed
co-business-days-add - First observed
co-business-days-between - First observed
co-cedula-format - First observed
co-cop-format - First observed
co-cop-parse - First observed
co-cufe-verify - First observed
co-dane-department - First observed
co-gmf - First observed
co-holidays - First observed
co-is-holiday - First observed
co-iva - First observed
co-nit - First observed
co-phone-validate - First observed
co-plate-validate - First observed
co-uvt-convert - First observed
code-blocks-extract - First observed
color-adjust - First observed
color-blindness-simulate - First observed
color-contrast - First observed
color-contrast-fix - First observed
color-convert - First observed
color-delta-e - First observed
color-luminance - First observed
color-mix - First observed
color-name-nearest - First observed
color-palette - First observed
color-scale - First observed
color-temperature - First observed
combinatorics - First observed
content-type-parse - First observed
convert-acceleration - First observed
convert-angle - First observed
convert-area - First observed
convert-cooking - First observed
convert-data-rate - First observed
convert-data-size - First observed
convert-density - First observed
convert-energy - First observed
convert-flow-rate - First observed
convert-force - First observed
convert-frequency - First observed
convert-fuel-economy - First observed
convert-length - First observed
convert-mass - First observed
convert-power - First observed
convert-pressure - First observed
convert-speed - First observed
convert-temperature - First observed
convert-time - First observed
convert-torque - First observed
convert-volume - First observed
cookie-parse - First observed
coordinates-to-decimal - First observed
coordinates-to-dms - First observed
count-occurrences - First observed
crockford32-decode - First observed
crockford32-encode - First observed
cron-explain - First observed
cron-next-runs - First observed
csp-parse - First observed
csv-build - First observed
csv-parse - First observed
currency-format - First observed
currency-info - First observed
cusip-validate - First observed
damerau-levenshtein - First observed
damm - First observed
data-uri-build - First observed
data-uri-parse - First observed
date-add - First observed
date-between - First observed
date-iso-week - First observed
date-range - First observed
date-relative - First observed
datetime-format - First observed
datetime-parse - First observed
decimal-to-fraction - First observed
dedupe-similar - First observed
dice-similarity - First observed
diff-lines - First observed
discount-calculate - First observed
domain-syntax-validate - First observed
dot-check - First observed
dotenv-parse - First observed
duration-format - First observed
duration-parse - First observed
easter-sunday - First observed
ec-id-validate - First observed
email-syntax-validate - First observed
es-compare - First observed
es-date-parse - First observed
es-dni-nie-validate - First observed
es-name-case - First observed
es-number-parse - First observed
es-number-to-words - First observed
es-ordinal - First observed
es-sentence-split - First observed
es-slug - First observed
es-stress - First observed
es-syllabify - First observed
evm-address-checksum - First observed
expression-evaluate - First observed
extract-emails - First observed
extract-emojis - First observed
extract-hashtags - First observed
extract-mentions - First observed
extract-numbers - First observed
extract-urls - First observed
factorial - First observed
fibonacci - First observed
fin-bond - First observed
fin-break-even - First observed
fin-cagr - First observed
fin-compound-interest - First observed
fin-irr - First observed
fin-loan-amortization - First observed
fin-loan-payment - First observed
fin-npv - First observed
fin-option-price - First observed
fin-risk-ratios - First observed
fin-roi - First observed
fin-simple-interest - First observed
fin-tvm - First observed
fin-xirr - First observed
find_tool - First observed
fiscal-period - First observed
fraction-arithmetic - First observed
fraction-simplify - First observed
geo-bearing - First observed
geo-bounding-box - First observed
geo-destination - First observed
geo-haversine - First observed
geo-midpoint - First observed
geo-nearest - First observed
geo-path-length - First observed
geo-point-in-polygon - First observed
geo-polygon-area - First observed
geo-vincenty - First observed
geohash-decode - First observed
geohash-encode - First observed
geohash-neighbors - First observed
geojson-bbox - First observed
gtin-check-digit - First observed
gtin-validate - First observed
h2o-rank - First observed
hamming-distance - First observed
hash-blake2b512 - First observed
hash-blake2s256 - First observed
hash-keccak256 - First observed
hash-md5 - First observed
hash-multi - First observed
hash-ripemd160 - First observed
hash-sha1 - First observed
hash-sha224 - First observed
hash-sha256 - First observed
hash-sha3-224 - First observed
hash-sha3-256 - First observed
hash-sha3-384 - First observed
hash-sha3-512 - First observed
hash-sha384 - First observed
hash-sha512 - First observed
hash-sha512-256 - First observed
hash-shake128 - First observed
hash-shake256 - First observed
hash-sm3 - First observed
hex-decode - First observed
hex-encode - First observed
hmac-md5 - First observed
hmac-sha1 - First observed
hmac-sha256 - First observed
hmac-sha3-256 - First observed
hmac-sha384 - First observed
hmac-sha512 - First observed
hmac-verify - First observed
html-escape - First observed
html-links-extract - First observed
html-meta-extract - First observed
html-tables-extract - First observed
html-to-text - First observed
html-unescape - First observed
http-date - First observed
http-headers-parse - First observed
http-status - First observed
iban-validate - First observed
idempotency-key - First observed
imei-validate - First observed
int-gcd-lcm - First observed
interest-rate-convert - First observed
invoice-total - First observed
ip-parse - First observed
ip-range-to-cidrs - First observed
is-prime - First observed
isbn-validate - First observed
isin-validate - First observed
iso-country-lookup - First observed
iso-language-lookup - First observed
issn-validate - First observed
jaro-winkler - First observed
json-canonicalize - First observed
json-describe - First observed
json-diff-patch - First observed
json-extract - First observed
json-flatten-paths - First observed
json-merge-patch-apply - First observed
json-merge-patch-create - First observed
json-minify - First observed
json-omit - First observed
json-parse-check - First observed
json-patch-apply - First observed
json-path - First observed
json-pick - First observed
json-pointer-get - First observed
json-pretty - First observed
json-repair - First observed
json-schema-from-samples - First observed
json-schema-validate - First observed
json-sort-keys - First observed
json-string-escape - First observed
json-string-unescape - First observed
json-to-ndjson - First observed
json-unflatten - First observed
julian-day - First observed
jwt-decode - First observed
jwt-sign-hmac - First observed
jwt-verify-hmac - First observed
kdf-hkdf - First observed
kdf-pbkdf2 - First observed
ksuid-decode - First observed
lei-validate - First observed
levenshtein-distance - First observed
linear-system-solve - First observed
lines-dedupe - First observed
lines-filter - First observed
lines-number - First observed
lines-sort - First observed
link-header-parse - First observed
llm-cost-estimate - First observed
llms-txt-lint - First observed
longest-common-subsequence - First observed
lorem-ipsum - First observed
luhn-validate - First observed
map-tile - First observed
margin-markup - First observed
markdown-links-extract - First observed
markdown-render-html - First observed
markdown-table - First observed
markdown-to-text - First observed
markdown-toc - First observed
matrix-determinant - First observed
matrix-inverse - First observed
matrix-multiply - First observed
matrix-transpose - First observed
mcp-protocol-compat - First observed
mcp-server-json-lint - First observed
mcp-tools-lint - First observed
mermaid-check - First observed
mime-lookup - First observed
mixed-script-detect - First observed
modular-arithmetic - First observed
money-allocate - First observed
month-info - First observed
moon-phase - First observed
morse-decode - First observed
morse-encode - First observed
mx-amount-in-words - First observed
mx-clabe-validate - First observed
mx-curp-validate - First observed
mx-rfc-validate - First observed
nanoid - First observed
ndjson-to-json - First observed
ngrams - First observed
number-format-locale - First observed
number-to-words-en - First observed
objectid-decode - First observed
onda-traducir - First observed
openapi-summary - First observed
payment-fee - First observed
pe-ruc-validate - First observed
percent-change - First observed
percent-of - First observed
percent-ratio - First observed
phone-e164-validate - First observed
plus-code-decode - First observed
plus-code-encode - First observed
polyline-decode - First observed
polyline-encode - First observed
price-from-margin - First observed
prime-factorize - First observed
prompt-template-fill - First observed
punycode-decode - First observed
punycode-encode - First observed
quadratic-solve - First observed
query-build - First observed
query-parse - First observed
quoted-printable-decode - First observed
quoted-printable-encode - First observed
radix-convert - First observed
rag-chunk - First observed
random-token - First observed
rate-limit-plan - First observed
readability-score - First observed
recibo-verify - First observed
regex-escape - First observed
regex-replace - First observed
regex-test - First observed
remove-accents - First observed
retry-after-parse - First observed
robots-ai-crawlers - First observed
robots-txt-check - First observed
roman-numeral - First observed
round-number - First observed
salary-convert - First observed
security-txt-validate - First observed
semver-bump - First observed
semver-compare - First observed
semver-parse - First observed
semver-satisfies - First observed
semver-sort - First observed
set-cookie-parse - First observed
significant-figures - First observed
sitemap-build - First observed
snowflake-decode - First observed
snowflake-encode - First observed
solana-address-validate - First observed
soundex - First observed
sql-readonly-check - First observed
stats-correlation - First observed
stats-describe - First observed
stats-forecast - First observed
stats-histogram - First observed
stats-means - First observed
stats-moving-average - First observed
stats-outliers-iqr - First observed
stats-percentile - First observed
stats-regression - First observed
stats-zscore - First observed
sun-times - First observed
swift-bic-validate - First observed
text-dedent - First observed
text-indent - First observed
text-invisible-scan - First observed
text-invisible-strip - First observed
text-metrics - First observed
text-normalize-whitespace - First observed
text-pad - First observed
text-redact-pii - First observed
text-reverse - First observed
text-slug - First observed
text-truncate - First observed
text-wrap - First observed
timestamp-convert - First observed
timezone-info - First observed
timezone-list - First observed
timezone-overlap - First observed
timezone-shift - First observed
token-estimate - First observed
token-units-convert - First observed
tool-definition-convert - First observed
ulid-decode - First observed
ulid-generate - First observed
unicode-escape - First observed
unicode-normalize - First observed
unicode-unescape - First observed
unit-price-compare - First observed
url-build - First observed
url-decode - First observed
url-encode - First observed
url-normalize - First observed
url-parse - First observed
url-resolve - First observed
user-agent-parse - First observed
utf8-inspect - First observed
utm-from-latlon - First observed
utm-to-latlon - First observed
uuid-inspect - First observed
uuid-v3 - First observed
uuid-v4 - First observed
uuid-v5 - First observed
uuid-v7 - First observed
vat-calculate - First observed
vector-similarity - First observed
vector-top-k - First observed
verhoeff - First observed
vin-validate - First observed
word-frequency - First observed
x402-cost-estimate - First observed
x402-payment-decode - First observed
x402-payment-response-verify - First observed
x402-replay-check - First observed
x402-requirements-lint - First observed
xml-parse - First observed
yaml-build - First observed
yaml-parse - First observed
zlib-compress - First observed
zlib-decompress
Related MCP Connectors
Emite CFDIs 4.0 y resuelve claves del SAT para agentes de IA (México), con permisos por API key.
Colombia DIAN factura electronica: AI agents issue and query e-invoices, stateless BYO.
Fiscal y nomina MX: recargos, ISR, CFDI, RESICO, calendario, IMSS, aguinaldo, finiquito.
Italian tax + anti-fraud: CF, P.IVA, IBAN, ATECO, IMU, F24, FatturaPA, NIS2. 23 free + 5 with key.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLets AI agents issue and query Colombia DIAN electronic invoices (factura electrónica) via the Matias API, handling IVA math locally and forwarding requests to Matias for signing and DIAN transmission.MIT
- AlicenseAqualityDmaintenanceProvides tools for El Salvador electronic invoicing (DTE), including IVA calculation, document-type catalog, and DUI/NIT validation.41MIT
- AlicenseAqualityDmaintenanceLatin American business compliance suite — 28 tools for tax ID validation (CPF, CNPJ, RFC, RUT, CUIT, NIT), banking (PIX, CLABE, CBU), VAT rules, e-invoicing (NF-e, CFDI, DTE), holidays, and labor calendar across Brazil, Mexico, Chile, Argentina, and Colombia.28MIT
- AlicenseNot gradedqualityCmaintenanceHosted MCP server for Argentine commerce: real AFIP/ARCA fiscal invoicing (live CAE), MercadoPago payments, logistics, catalog, cash register and WhatsApp behind one authenticated endpoint. Includes 9 no-auth fiscal validation/formatting tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.