Burs-IA Utils
io.github.soyeladice-svg/bursia-utilssoyeladice-svgstreamable-httpv1.5.0Scanned
Free, no-login LatAm/Spanish-native agent tools; validate-only IDs; unsigned consistency receipts.
466 tools: 7 can delete or cancel things, 36 do something that can't be undone, 328 change things and 95 only read.
- Reads private data · 7
- Reads text others write · 7
- Can send data out · 32
- 120 findings, 4 high
Anlyon alternative
371 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
466 tools
Deletes or cancels 7Claude Code: deny
array-dedupeRemoves duplicate items (deep equality via canonical JSON) or items with a duplicate key, keeping the first occurrence and original order.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "array-dedupe" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "array-dedupe" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Deduplicate array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-omitRemoves the given keys from an object; with deep=true removes them at every nesting level (e.g.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "json-omit" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "json-omit" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Omit keys
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lines-dedupeRemoves duplicate lines keeping the first occurrence and original order; optional case-insensitive and whitespace-trimmed comparison.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "lines-dedupe" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "lines-dedupe" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Remove duplicate lines
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
remove-accentsStrips combining diacritical marks (á→a, ü→u, ç→c, ñ→n) after NFD decomposition; optionally keeps ñ/Ñ for Spanish.2 findings
Why it is in this group
- The name "remove-accents" says "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "remove-accents" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove-accents" says "remove": a word for removing or ending something.
- Warn
The server marks "remove-accents" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove-accents" says "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Remove accents / diacritics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-dedentRemoves the common leading whitespace from every non-blank line (like Python textwrap.dedent); tabs and spaces are not mixed.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "text-dedent" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "text-dedent" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Dedent text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-invisible-stripRemoves zero-width, bidi-control, Unicode tag and other invisible format characters; optionally keeps ZWJ (U+200D) and variation selectors so emoji sequences survive.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "text-invisible-strip" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "text-invisible-strip" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Strip invisible characters
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-truncateShortens text to a maximum number of graphemes or words, optionally at a word boundary, appending an ellipsis that counts toward the limit.2 findings
Why it is in this group
- The name "text-truncate" says "truncate": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "text-truncate" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "text-truncate" says "truncate": a word for removing or ending something.
- Warn
The server marks "text-truncate" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "text-truncate" says "truncate": a word for removing or ending something.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Truncate text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Can't be undone 36Claude Code: ask
color-scaleBuilds 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.Can send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "color-scale" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Tints, shades and design-system scale
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-accelerationConverts acceleration between units (m/s2, g, ft/s2, gal).Can send data out1 finding
Why it is in this group
- The name "convert-acceleration" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-acceleration" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-acceleration" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert acceleration
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-angleConverts angle between units (rad, deg, grad, turn, arcmin, arcsec, mrad).Can send data out1 finding
Why it is in this group
- The name "convert-angle" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-angle" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-angle" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert angle
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-areaConverts area between units (m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada).Can send data out1 finding
Why it is in this group
- The name "convert-area" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-area" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-area" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert area
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-cookingConverts 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.Can send data out1 finding
Why it is in this group
- The name "convert-cooking" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-cooking" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-cooking" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Cooking measures (volume ↔ weight)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-data-rateConverts data rate between units (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s).Can send data out1 finding
Why it is in this group
- The name "convert-data-rate" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-data-rate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-data-rate" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert data rate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-data-sizeConverts data size between units (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit).Can send data out1 finding
Why it is in this group
- The name "convert-data-size" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-data-size" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-data-size" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert data size
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-densityConverts density between units (kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal).Can send data out1 finding
Why it is in this group
- The name "convert-density" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-density" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-density" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert density
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-energyConverts energy between units (J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf).Can send data out1 finding
Why it is in this group
- The name "convert-energy" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-energy" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-energy" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert energy
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-flow-rateConverts flow rate between units (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min).Can send data out1 finding
Why it is in this group
- The name "convert-flow-rate" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-flow-rate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-flow-rate" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert flow rate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-forceConverts force between units (N, kN, lbf, kgf, dyn).Can send data out1 finding
Why it is in this group
- The name "convert-force" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-force" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-force" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert force
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-frequencyConverts frequency between units (Hz, kHz, MHz, GHz, rpm, bpm).Can send data out1 finding
Why it is in this group
- The name "convert-frequency" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-frequency" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-frequency" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert frequency
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-fuel-economyConverts fuel economy between km/L, L/100 km, US mpg and imperial mpg (inverse relationship for L/100 km).Can send data out1 finding
Why it is in this group
- The name "convert-fuel-economy" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-fuel-economy" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-fuel-economy" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert fuel economy
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-lengthConverts length between units (m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly).Can send data out1 finding
Why it is in this group
- The name "convert-length" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-length" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-length" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert length
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-massConverts mass between units (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co).Can send data out1 finding
Why it is in this group
- The name "convert-mass" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-mass" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-mass" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert mass
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-powerConverts power between units (W, kW, MW, GW, hp, PS, BTU/h, kcal/h).Can send data out1 finding
Why it is in this group
- The name "convert-power" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-power" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-power" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert power
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-pressureConverts pressure between units (Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr).Can send data out1 finding
Why it is in this group
- The name "convert-pressure" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-pressure" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-pressure" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert pressure
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-speedConverts speed between units (m/s, km/h, mph, kn, ft/s).Can send data out1 finding
Why it is in this group
- The name "convert-speed" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-speed" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-speed" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert speed
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-temperatureConverts temperatures between Celsius, Fahrenheit, Kelvin and Rankine (affine conversion).Can send data out1 finding
Why it is in this group
- The name "convert-temperature" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-temperature" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-temperature" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert temperature
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-timeConverts time between units (ns, us, ms, s, min, h, d, wk, month, yr, decade, century).Can send data out1 finding
Why it is in this group
- The name "convert-time" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-time" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-time" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert time
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-torqueConverts torque between units (N·m, kN·m, lbf·ft, lbf·in, kgf·m).Can send data out1 finding
Why it is in this group
- The name "convert-torque" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-torque" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-torque" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert torque
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
convert-volumeConverts 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).Can send data out1 finding
Why it is in this group
- The name "convert-volume" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "convert-volume" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-volume" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert volume
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
currency-formatFormats 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 …1 finding
Why it is in this group
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "currency-format" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input carries an amount (input.amount) and a currency, so it moves money.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Format money for a locale
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-loan-paymentComputes the fixed periodic payment for an amortizing loan: PMT = P·r / (1 − (1 + r)^−n), with total paid and total interest.1 finding
Why it is in this group
- The name "fin-loan-payment" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "fin-loan-payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "fin-loan-payment" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Loan payment (annuity)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-bearingComputes the initial and final great-circle bearings (degrees clockwise from true north) from one point to another, with 16-point compass labels.Can send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "geo-bearing" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bearing between points
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-haversineComputes 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.Can send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "geo-haversine" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Great-circle distance (haversine)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-vincentyComputes the geodesic distance and initial/final bearings between two points on the WGS84 ellipsoid using Vincenty's inverse formula (millimetre accuracy); reports non-convergence …Can send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "geo-vincenty" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Ellipsoidal distance (Vincenty, WGS84)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-merge-patch-applyApplies an RFC 7386 JSON Merge Patch: objects merge recursively, null deletes a key, any other value replaces.1 finding
Why it is in this group
- The name "json-merge-patch-apply" says "merge": a word for a change that another call does not undo.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "json-merge-patch-apply" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-merge-patch-apply" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Apply JSON Merge Patch (RFC 7386)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-merge-patch-createGenerates the RFC 7386 merge patch that turns document a into b.1 finding
Why it is in this group
- The name "json-merge-patch-create" says "merge": a word for a change that another call does not undo.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "json-merge-patch-create" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-merge-patch-create" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Create JSON Merge Patch
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
money-allocateSplits 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.1 finding
Why it is in this group
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "money-allocate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input carries an amount (input.amount) and a currency, so it moves money.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Split money without losing cents
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
payment-feeComputes, 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.1 finding
Why it is in this group
- The name "payment-fee" says "payment": a word that usually means money moves, which cannot be taken back.
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "payment-fee" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "payment-fee" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Payment fee gross-up / net
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
percent-changeComputes the percentage change from an old value to a new value ((new − old) / |old| × 100) and the absolute difference.Can send data out1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "percent-change" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Percent change
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
tool-definition-convertConverts a tool definition (name, description, JSON Schema parameters) between MCP (inputSchema), OpenAI function-calling (function.parameters) and Anthropic tool-use (input_schema…Can send data out1 finding
Why it is in this group
- The name "tool-definition-convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Findings
- Warn
The server marks "tool-definition-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "tool-definition-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert tool definition formats
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
vat-calculateAdds tax to a net amount or extracts it from a gross (tax-inclusive) amount at any rate, rounding to the currency's minor units.1 finding
Why it is in this group
- The description's first verb is "add": a word for a change.
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "vat-calculate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: VAT / sales tax calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402-payment-decodeDecodes 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; optionall…1 finding
Why it is in this group
- The name "x402-payment-decode" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "x402-payment-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "x402-payment-decode" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decode an x402 payment header
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402-payment-response-verifyChecks an x402 X-PAYMENT-RESPONSE / PAYMENT-RESPONSE settlement value against given PaymentRequirements (and optionally the payment sent): success, transaction hash format, network…1 finding
Why it is in this group
- The name "x402-payment-response-verify" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "x402-payment-response-verify" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "x402-payment-response-verify" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Check an x402 settlement response
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 328Claude Code: ask
accept-language-parseParses an Accept-Language header into languages sorted by q-value and, given supported locales, picks the best match (exact, then by primary language).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Accept-Language
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
age-calculateComputes 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 F…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Age calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
agent-readiness-checklistScores 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Agent-readiness checklist (basic)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-chunkSplits an array into consecutive chunks of a given size (last chunk may be shorter), e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Chunk array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-flattenFlattens nested arrays to a given depth (default fully).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Flatten nested arrays
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-group-byGroups objects by the value of a key (dotted path), returning an object of arrays and group counts; missing keys go under "null".No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Group array by key
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-pluckExtracts the value at a key (dotted path) from every object in an array; missing values become null or are dropped.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Pluck key from objects
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-set-opsComputes union, intersection, difference (a−b) or symmetric difference of two arrays using deep equality, preserving first-seen order.1 finding
Why it is in this group
- The name "array-set-ops" says "set": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "array-set-ops" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "array-set-ops" says "set": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Array set operations
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-shuffleShuffles an array (Fisher-Yates) or draws a sample of k items without replacement.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Shuffle / sample array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
array-sortSorts an array of values or objects by one or more keys (stable), ascending or descending, numbers before strings, with locale-aware natural string comparison.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sort array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ascii85-decodeDecodes Ascii85 (with or without <~ ~>), supporting the z shorthand.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Ascii85 decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ascii85-encodeEncodes bytes as Ascii85 (Adobe/btoa variant, z for zero groups), optionally wrapped in <~ ~> delimiters.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Ascii85 encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
backoff-scheduleComputes 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.1 finding
Why it is in this group
- The name "backoff-schedule" says "schedule": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "backoff-schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "backoff-schedule" says "schedule": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Retry backoff schedule
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base32-decodeDecodes RFC 4648 Base32 (case-insensitive, padding and spaces optional) to UTF-8 text, hex or base64.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base32 decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base32-encodeEncodes text or hex bytes as RFC 4648 Base32 (A-Z, 2-7) with optional padding, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base32 encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base58-decodeDecodes Bitcoin-alphabet Base58 to hex, UTF-8 text or base64.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base58 decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base58-encodeEncodes bytes in Base58 with the Bitcoin alphabet; leading zero bytes become leading 1s.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base58 encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base58check-decodeDecodes Base58Check, verifies the 4-byte double-SHA-256 checksum and returns the payload and its first (version) byte.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base58Check decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base58check-encodeEncodes a hex payload (including any version byte) as Base58Check: appends the first 4 bytes of double SHA-256 and encodes the result in Base58.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base58Check encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base64-decodeDecodes standard or URL-safe Base64 (padding optional, whitespace ignored) to UTF-8 text, hex or base64.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base64 decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base64-encodeEncodes text (UTF-8) or hex/base64 bytes as standard Base64 (RFC 4648 §4) with padding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base64 encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base64url-decodeDecodes URL-safe Base64 (RFC 4648 §5, padding optional) to UTF-8 text, hex or base64.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base64url decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
base64url-encodeEncodes text or hex bytes as URL-safe Base64 (RFC 4648 §5: - and _ alphabet, no padding), as used in JWTs.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Base64url encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
basic-auth-headerBuilds an HTTP Basic Authorization header value from a username and password (RFC 7617, UTF-8).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build Basic auth header
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bech32-decodeDecodes a Bech32 or Bech32m string, detects which checksum variant is valid, and returns the prefix, 5-bit words and 8-bit data when convertible.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bech32 / Bech32m decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bech32-encodeEncodes hex bytes with a human-readable prefix as Bech32 (BIP-173) or Bech32m (BIP-350), converting 8-bit bytes to 5-bit groups.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bech32 / Bech32m encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bigint-calcComputes the exact arbitrary-precision integer arithmetic: add, subtract, multiply, divide (floor quotient and remainder), power (result ≤ 10,000 digits), compare.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Big integer arithmetic
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bill-splitSplits 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Split a bill with tip
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
binary-decodeConverts a string of 0/1 bits (spaces optional, length a multiple of 8) to UTF-8 text or hex.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "binary-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Binary to text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
binary-encodeConverts UTF-8 text to space-separated 8-bit binary bytes.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "binary-encode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Text to binary
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bm25-rankRanks up to 2,000 documents for a query with Okapi BM25 (k1, b tunable) using accent-insensitive Unicode word tokens, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Keyword search ranking (BM25)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
business-days-addAdds (or subtracts) N working days to a date, skipping configurable weekend days and given holidays; useful for due dates and SLAs.1 finding
Why it is in this group
- The name "business-days-add" says "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "business-days-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "business-days-add" says "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Add business days
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cache-control-parseParses 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Cache-Control
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
card-brand-detectDetects 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…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Card brand + Luhn check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-camelConverts text or an identifier to camelCase, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-camel" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to camelCase
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-constantConverts text or an identifier to CONSTANT_CASE, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-constant" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to CONSTANT_CASE
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-detectDetects the naming convention of an identifier: camel, pascal, snake, constant, kebab, train, dot, lower, upper, title, or mixed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Detect identifier case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-dotConverts text or an identifier to dot.case, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-dot" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to dot.case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-kebabConverts text or an identifier to kebab-case, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-kebab" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to kebab-case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-pascalConverts text or an identifier to PascalCase, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-pascal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to PascalCase
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-sentenceLowercases text and capitalizes the first letter of each sentence (after .No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to Sentence case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-snakeConverts text or an identifier to snake_case, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-snake" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to snake_case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-swapInverts the case of every letter (upper↔lower), Unicode-aware.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Swap case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-titleCapitalizes words as a title.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to Title Case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
case-trainConverts text or an identifier to Train-Case, splitting words on spaces, punctuation and camelCase/acronym boundaries.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "case-train" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert to Train-Case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-adler32Computes the Adler-32 checksum (RFC 1950, zlib).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Adler-32
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-crc16Computes the CRC-16/CCITT-FALSE (poly 0x1021, init 0xFFFF, no reflection).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CRC-16/CCITT-FALSE
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-crc32Computes the CRC-32 (IEEE 802.3, as in zip/gzip/PNG).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CRC-32
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-crc32cComputes the CRC-32C (Castagnoli polynomial, used by iSCSI, ext4, SCTP, gRPC).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CRC-32C
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-fnv1a32Computes the FNV-1a 32-bit hash, a fast non-cryptographic hash for hash tables and sharding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: FNV-1a 32-bit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-fnv1a64Computes the FNV-1a 64-bit hash, non-cryptographic.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: FNV-1a 64-bit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-murmur3-32Computes the MurmurHash3 x86_32 with optional 32-bit seed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: MurmurHash3 x86 32-bit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checksum-xxh32Computes the xxHash32 with optional 32-bit seed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: xxHash32
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cidr-containsChecks whether an IP address falls inside any of a list of CIDR blocks (IPv4/IPv6, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: IP in CIDR ranges?
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cidr-splitSplits a CIDR block into equal subnets of a longer prefix length (at most 1,024 subnets returned).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Split CIDR into subnets
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cipher-rot13Applies ROT13 (or any Caesar shift of ASCII letters) to text.1 finding
Why it is in this group
- The description's first verb is "apply": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "cipher-rot13" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ROT13
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-amount-in-wordsWrites a peso amount in words in the format used on Colombian cheques, invoices and contracts, e.g.1 finding
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "co-amount-in-words" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian amount in words (cheques)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-business-days-addAdds or subtracts N business days (días hábiles) to a date using Colombian national holidays, e.g.1 finding
Why it is in this group
- The name "co-business-days-add" says "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "co-business-days-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "co-business-days-add" says "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Add Colombian business days
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-cedula-formatChecks 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian cédula syntax and format
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-cop-formatFormats 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Format Colombian pesos (COP)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-cop-parseParses 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Colombian money text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-cufe-verifyRecomputes 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, …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian CUFE check (DIAN e-invoice)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-dane-departmentLooks 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 capita…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: DANE department codes (DIVIPOLA)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-gmfComputes 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 acc…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: GMF 4x1000 calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-is-holidaySays 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_busine…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Is this a Colombian holiday?
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-ivaAdds 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.1 finding
Why it is in this group
- The description's first verb is "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "co-iva" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian IVA (VAT) calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-nitComputes 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).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian NIT check digit (DIAN)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-uvt-convertConverts 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).1 finding
Why it is in this group
- The name "co-uvt-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "co-uvt-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "co-uvt-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UVT ↔ pesos (Colombia)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
code-blocks-extractExtracts fenced code blocks (``` or ~~~) from Markdown or LLM output with their language tags and line counts, optionally filtered by language.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract fenced code blocks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-adjustAdjusts a color in OKLCH: change lightness, chroma (saturation) and hue by deltas, or set alpha; results are mapped back into the sRGB gamut.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lighten / darken / saturate / rotate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-blindness-simulateSimulates how a color appears with protanopia, deuteranopia, tritanopia (Machado et al.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Simulate color vision deficiency
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-contrastComputes 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 compon…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: WCAG contrast ratio
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-convertParses 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).1 finding
Why it is in this group
- The name "color-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "color-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "color-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert color formats
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-delta-eComputes the perceptual difference between two colors: CIEDE2000 ΔE (CIELAB D65) and Euclidean OKLab ΔE, with a plain-language interpretation (< 1 imperceptible … > 10 very differe…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Color difference (ΔE 2000)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-mixMixes two colors by a weight (like CSS color-mix) in OKLab (perceptual, default), linear sRGB or gamma sRGB space.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mix two colors
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-paletteGenerates harmony palettes from a base color by rotating OKLCH hue: complementary, analogous, triadic, split-complementary, tetradic (square) or monochromatic (lightness steps).1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "color-palette" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Color harmony palette
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-temperatureApproximates 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Color temperature (Kelvin) to RGB
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
combinatoricsComputes the exact nCr (combinations) and nPr (permutations), with or without repetition, for n ≤ 10,000.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Combinations and permutations
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
content-type-parseParses a Content-Type / media type header into type, subtype, structured-syntax suffix (+json) and parameters (charset, boundary…), lowercasing names.1 finding
Why it is in this group
- The name "content-type-parse" says "type": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "content-type-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "content-type-parse" says "type": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Content-Type
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cookie-parseParses a Cookie request header (name=value; …) into an object, percent-decoding values when valid; first occurrence wins.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Cookie header
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
coordinates-to-decimalParses 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 degre…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: DMS / DDM to decimal degrees
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
coordinates-to-dmsFormats decimal latitude/longitude as degrees-minutes-seconds with hemisphere letters, and as degrees-decimal-minutes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decimal degrees to DMS
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
crockford32-decodeDecodes Crockford Base32; case-insensitive, maps O→0 and I/L→1, ignores hyphens.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Crockford Base32 decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
crockford32-encodeEncodes bytes in Douglas Crockford's Base32 (no I, L, O, U; no padding), the alphabet used by ULIDs.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Crockford Base32 encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cron-next-runsLists 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).1 finding
Why it is in this group
- The name "cron-next-runs" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "cron-next-runs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "cron-next-runs" says "run": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Next cron run times
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
csp-parseParses 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/bas…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Content-Security-Policy
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
csv-buildConverts 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…1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "csv-build" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON to CSV
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
csv-parseParses 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CSV to JSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
damerau-levenshteinComputes the optimal string alignment distance: Levenshtein plus transposition of adjacent characters, useful for typo matching.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Damerau-Levenshtein (OSA) distance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
data-uri-buildBuilds an RFC 2397 data: URI from text or base64 bytes and a MIME type, using base64 or percent-encoding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build data: URI
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
data-uri-parseParses an RFC 2397 data: URI into MIME type, parameters, base64 flag, byte size and content (UTF-8 text when valid, otherwise base64).Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.uri): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse data: URI
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
date-addAdds (or subtracts, with negatives) years, months, weeks, days, hours, minutes and seconds to a date-time.1 finding
Why it is in this group
- The name "date-add" says "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "date-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "date-add" says "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Add duration to date
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
date-betweenComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Difference between dates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
date-iso-weekConverts 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.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "date-iso-week" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISO week date
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
datetime-formatFormats 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).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Format date/time
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
datetime-parseParses 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 a…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse date/time
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
dedupe-similarGroups 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Remove near-duplicate texts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
dice-similarityComputes the sørensen-Dice coefficient over character bigrams (0-1); robust for fuzzy matching of phrases and titles.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sørensen-Dice bigram similarity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
discount-calculateApplies one or more percentage and fixed discounts to a price, either compounded in order or summed, optionally adding tax afterwards; reports effective discount %.1 finding
Why it is in this group
- The description's first verb is "apply": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "discount-calculate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Discounts (stacked or added)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
dot-checkSanity-checks Graphviz DOT text without rendering: header ([strict] graph|digraph [id] {), balanced braces/brackets and quotes, -> only in digraphs and -- only in graphs, and attri…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Graphviz DOT syntax sanity check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
dotenv-parseParses dotenv text (KEY=value, export prefix, single/double quotes, \n escapes in double quotes, # comments) into an object.4 findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- High
The title refers to ".env".
What this check looks forMatched text
title: "Parse .env file"
- High
The annotations title refers to ".env".
What this check looks forMatched text
annotations.title: "Parse .env file"
- High
The description refers to ".env".
What this check looks forMatched text
description: "..., result up to 1 MB. ES: Analiza texto .env (CLAVE=valor, comillas, comentarios) en..."
- High
The input schema at properties.text.description refers to ".env".
What this check looks forMatched text
inputSchema.properties.text.description: ".env content (string; required)."
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse .env file
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
duration-formatFormats 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Format seconds as duration
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
duration-parseParses an ISO 8601 duration (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse ISO 8601 duration
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
easter-sundayComputes 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…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Easter date
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-name-caseCapitalizes 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 apost…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish name capitalization
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-number-parseConverts Spanish number words or digits to a number: "tres mil cuatrocientos veintiuno" → 3421, "dos coma cinco millones", "menos", long scale (mil millones = 10⁹).1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "es-number-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Spanish number words
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-number-to-wordsSpells 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 no…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Number to Spanish words
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-ordinalWrites 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.ª).1 finding
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "es-ordinal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish ordinal numbers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-sentence-splitSplits Spanish text into sentences, aware of ¿…?No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish sentence splitter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-slugBuilds 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 dr…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish-safe slug (ñ aware)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-syllabifySplits 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 qu…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish syllabification
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
expression-evaluateEvaluates an arithmetic expression with its own parser (no eval): + − * / % ^ !, parentheses, implicit multiplication, functions (sqrt, sin, ln, log, min, max…), constants pi/e/tau…1 finding
Why it is in this group
- The name "expression-evaluate" says "evaluate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "expression-evaluate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "expression-evaluate" says "evaluate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Evaluate math expression (safe)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
factorialComputes the exact n!No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Factorial
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fibonacciComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Fibonacci number
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-bondPrices 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bond price, yield and duration
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-break-evenComputes the break-even units = fixed costs / (price − variable cost per unit), the revenue at that point and the contribution margin.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Break-even point
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-cagrComputes the compound annual growth rate CAGR = (end / start)^(1 / years) − 1 and the total growth.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compound annual growth rate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-compound-interestComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compound interest
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-irrComputes the internal rate of return of periodic cash flows (Newton-Raphson with bisection fallback); returns null when no sign change exists.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Internal rate of return
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-loan-amortizationComputes the full amortization schedule (payment, interest, principal, balance per period) for a fixed-payment loan, up to 600 rows; the last payment absorbs rounding.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Loan amortization schedule
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-npvComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Net present value
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-option-pricePrices 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 rh…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: European option price and Greeks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-risk-ratiosComputes 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Return series risk ratios
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-roiComputes the return on investment ROI = (gain − cost) / cost, and the annualized ROI when a holding period in years is given.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Return on investment
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-simple-interestComputes the simple interest I = P·r·t and the total amount, with time in years, months or days (actual/365 or 360 basis).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Simple interest
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-tvmSolves 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Time value of money solver
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fin-xirrComputes the annualized internal rate of return for cash flows on arbitrary dates (actual/365, like Excel XIRR).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: IRR for irregular dates (XIRR)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fiscal-periodComputes, 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Fiscal year and quarter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fraction-arithmeticAdds, subtracts, multiplies or divides two exact fractions (or mixed numbers/decimals) and returns the reduced result.1 finding
Why it is in this group
- The description's first verb is "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "fraction-arithmetic" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Fraction arithmetic
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fraction-simplifyReduces 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Simplify fraction
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-bounding-boxComputes the bounding box (min/max latitude and longitude) enclosing a circle of a given radius around a point, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bounding box around a point
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-destinationComputes the point reached by travelling a distance along a great circle from a start point on an initial bearing.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Destination from distance and bearing
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-midpointComputes the midpoint along the great circle between two points, or the geographic center (mean of 3-D vectors) of up to 10,000 points.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Geographic midpoint
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-nearestRanks up to 10,000 candidate points by great-circle distance from an origin and returns the k nearest with their distances and original indices.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Nearest points
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-path-lengthComputes the total great-circle length of a path through up to 100,000 points, with per-segment distances (first 1,000).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Path (polyline) length
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-point-in-polygonTests whether a point lies inside a polygon (ray casting on lon/lat, planar approximation; holes supported via additional rings), e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Point in polygon
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geo-polygon-areaComputes the area (spherical excess on the mean-radius sphere) and perimeter of a lon/lat polygon ring, in m², km², hectares and acres.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Polygon area and perimeter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geohash-decodeDecodes a geohash to its center point, bounding box and error margins.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Geohash decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geohash-encodeEncodes a latitude/longitude as a geohash string of precision 1-12 and reports the cell size in metres.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Geohash encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
geojson-bboxComputes the bounding box [minLon, minLat, maxLon, maxLat], vertex count and vertex centroid of any GeoJSON geometry, Feature or FeatureCollection, validating coordinate ranges.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: GeoJSON bounding box and centroid
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
gtin-check-digitComputes the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body of 7-17 digits and returns the full code.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compute GS1 check digit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
gtin-validateValidates 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.1 finding
Why it is in this group
- The name "gtin-validate" says "validate": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "gtin-validate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "gtin-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: EAN / UPC / GTIN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
h2o-rankRanks up to 8 candidate opportunities (H2O · Hallazgo, Homologación y Oportunidad) from caller-supplied evidence counts, feasibility and effort: BUILD_CANDIDATE_MODELLED, INVESTIGA…1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.candidates.items.properties.flags.properties.requires_credential.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.candidates.items.properties.flags.properties.requires_credential.description: "...alse or absent counts as true (requires credential)"
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: H2O: rank opportunities by value of information
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-blake2b512Computes the BLAKE2b digest with 512-bit output (RFC 7693), unkeyed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: BLAKE2b-512 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-blake2s256Computes the BLAKE2s digest with 256-bit output (RFC 7693), unkeyed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: BLAKE2s-256 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-keccak256Computes the Keccak-256 with original Keccak padding, as used by Ethereum for addresses, function selectors and event topics.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Keccak-256 (Ethereum)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-md5Computes the MD5 digest (128-bit).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: MD5 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-multiComputes several digests (md5, sha1, sha256, sha512, sha3-256, blake2b512, keccak256, crc32) of one input in a single call.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Multiple digests at once
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-ripemd160Computes the RIPEMD-160 digest (160-bit), used inside Bitcoin HASH160.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: RIPEMD-160 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha1Computes the SHA-1 digest (160-bit).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-1 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha224Computes the SHA-224 digest (FIPS 180-4) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-224 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha256Computes the SHA-256 digest (FIPS 180-4) of text, hex or base64 input, returned as hex, base64 or base64url.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-256 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha3-224Computes the SHA3-224 digest (FIPS 202) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA3-224 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha3-256Computes the SHA3-256 digest (FIPS 202).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA3-256 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha3-384Computes the SHA3-384 digest (FIPS 202) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA3-384 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha3-512Computes the SHA3-512 digest (FIPS 202) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA3-512 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha384Computes the SHA-384 digest (FIPS 180-4) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-384 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha512Computes the SHA-512 digest (FIPS 180-4) of text, hex or base64 input.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-512 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sha512-256Computes the SHA-512/256 digest (FIPS 180-4 truncated variant with distinct IVs, not a plain truncation of SHA-512).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHA-512/256 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-shake128Computes the SHAKE128 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHAKE128 XOF
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-shake256Computes the SHAKE256 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SHAKE256 XOF
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hash-sm3Computes the SM3 digest (Chinese national standard GB/T 32905, 256-bit).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SM3 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hex-decodeDecodes hexadecimal (case-insensitive; spaces, colons and 0x prefix ignored) to UTF-8 text or base64.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Hex decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hex-encodeEncodes UTF-8 text (or base64 bytes) as lowercase or uppercase hexadecimal, with an optional separator between bytes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Hex encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-md5Computes the HMAC (RFC 2104) using MD5 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-MD5
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-sha1Computes the HMAC (RFC 2104) using SHA1 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-SHA1
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-sha256Computes the HMAC (RFC 2104) using SHA256 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-SHA256
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-sha3-256Computes the HMAC (RFC 2104) using SHA3-256 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-SHA3-256
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-sha384Computes the HMAC (RFC 2104) using SHA384 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-SHA384
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-sha512Computes the HMAC (RFC 2104) using SHA512 over text, hex or base64 data with a text, hex or base64 key.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC-SHA512
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hmac-verifyRecomputes an HMAC over the data and compares it with an expected hex/base64 MAC in constant time, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HMAC verify (constant time)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-escapeEscapes &, <, > (and " ' for attribute contexts) so text can be safely inserted into HTML.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HTML escape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-links-extractExtracts <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 o…1 finding
Why it is in this group
- The name "html-links-extract" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "html-links-extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "html-links-extract" says "link": a word for a change.
Description, as the server wrote it 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. ES: Extrae enlaces <a href> 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 <table> 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.
Annotations the server declares
- title: Extract links from HTML
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-meta-extractExtracts 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 a…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract HTML metadata
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-tables-extractExtracts <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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: Extrae tablas <table> 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.
Annotations the server declares
- title: Extract tables from HTML
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-to-textConverts 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…1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "html-to-text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HTML to plain text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html-unescapeDecodes HTML character references: numeric (é é) and about 100 common named entities (& ñ € …).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HTML unescape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
http-dateConverts between HTTP-date (IMF-fixdate, e.g.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "http-date" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HTTP date format/parse
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
http-headers-parseParses 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).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse raw HTTP headers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
idempotency-keyDerives 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 reu…Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Idempotency key
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
int-gcd-lcmComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: GCD and LCM
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
interest-rate-convertConverts interest rates between effective annual (EA/APY), nominal annual compounded m times (APR, e.g.1 finding
Why it is in this group
- The name "interest-rate-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "interest-rate-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "interest-rate-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Interest rate conversion (EA, nominal, periodic)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
invoice-totalComputes 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Invoice totals
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ip-range-to-cidrsConverts 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).1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "ip-range-to-cidrs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: IP range to CIDR blocks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-primeTests primality with deterministic Miller-Rabin for integers up to 3.3·10^24 (number or decimal string) and returns the next and previous primes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Primality test
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
jaro-winklerComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Jaro-Winkler similarity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-canonicalizeSerializes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Canonical JSON (RFC 8785)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-flatten-pathsFlattens nested objects/arrays into one level with dotted keys (a.b.0.c) or bracket array indices (a.b[0].c).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Flatten JSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-minifyParses JSON text and serializes it without whitespace; reports byte sizes before and after.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Minify JSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-parse-checkChecks whether text is valid JSON (RFC 8259); on error returns the parser message with line and column.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Validate JSON syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-patch-applyApplies an RFC 6902 JSON Patch (add, remove, replace, move, copy, test) atomically to a document; any failing operation aborts the whole patch.1 finding
Why it is in this group
- The name "json-patch-apply" says "patch": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "json-patch-apply" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-patch-apply" says "patch": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Apply JSON Patch (RFC 6902)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-pathEvaluates a JSONPath query (RFC 9535 subset: .name, ['name'], [n], [*], .., [a:b:c], unions, filters with ==, !=, <, <=, >, >=, &&, ||, !) and returns matching values and their nor…1 finding
Why it is in this group
- The description's first verb is "evaluate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "json-path" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSONPath query
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-prettyParses JSON text and re-serializes it with 2/4-space or tab indentation, optionally sorting object keys.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Pretty-print JSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-repairRepairs 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 bracke…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Repair broken JSON (best effort)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-schema-from-samplesTurns 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Infer JSON Schema from samples
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-sort-keysRecursively sorts object keys (by UTF-16 code units, or locale-aware), leaving array order unchanged.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sort JSON keys
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-string-escapeEscapes text as the body of a JSON string literal (quotes, backslashes, control characters), with or without surrounding quotes.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON string escape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-string-unescapeParses the body of a JSON string literal (with or without quotes) and returns the raw text.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON string unescape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-to-ndjsonSerializes an array of JSON values as newline-delimited JSON (one compact value per line).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON array to NDJSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-unflattenRebuilds nested JSON from flat dotted keys; numeric segments and [n] become array indices (max 10,000) unless arrays is false.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Unflatten JSON
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
julian-dayConverts a UTC date-time to Julian Date, Modified Julian Date and Julian Day Number, or a Julian Date back to UTC.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "julian-day" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Julian Day Number
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
jwt-decodeDecodes a JWT header and payload WITHOUT verifying the signature, so the claims must not be trusted.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decode JWT (no verification)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
jwt-sign-hmacCreates a compact JWS/JWT signed with HS256, HS384 or HS512 using a provided secret, e.g.1 finding
Why it is in this group
- The description's first verb is "create": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "jwt-sign-hmac" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "create": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sign JWT (HMAC)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
jwt-verify-hmacChecks 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 (…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Verify JWT (HMAC)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
kdf-hkdfDerives key material with HKDF (RFC 5869) using SHA-256 or SHA-512, from hex-encoded input key material, salt and info.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: HKDF key derivation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
kdf-pbkdf2Derives a key with PBKDF2 (RFC 8018) using HMAC-SHA256/SHA512/SHA1.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: PBKDF2 key derivation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ksuid-decodeDecodes a 27-char base62 KSUID into its timestamp (epoch 1400000000) and 128-bit payload.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: KSUID decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
levenshtein-distanceComputes the edit distance (insertions, deletions, substitutions) between two strings by code point, plus a normalized similarity 1 - d/max(len).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Levenshtein distance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
linear-system-solveSolves a square system of linear equations Ax = b (up to 20 unknowns) by Gauss-Jordan elimination with partial pivoting.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Solve linear system Ax = b
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lines-filterKeeps (or removes) lines containing a substring, case-insensitive optional.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Filter lines by substring
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lines-numberPrefixes each line with its line number, right-aligned, starting at a given number and with a chosen separator.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Number lines
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lines-sortSorts lines with locale-aware collation (natural numeric order optional), ascending or descending, optionally case-insensitive and unique.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sort lines
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
link-header-parseParses an HTTP Link header into URL + rel + other parameters, e.g.1 finding
Why it is in this group
- The name "link-header-parse" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "link-header-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "link-header-parse" says "link": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Link header (RFC 8288)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
llm-cost-estimateEstimates 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 volu…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: LLM token cost estimate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
llms-txt-lintChecks 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" sec…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lint llms.txt
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lorem-ipsumGenerates deterministic lorem ipsum placeholder text: a number of words, sentences or paragraphs, always starting with "Lorem ipsum dolor sit amet".1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "lorem-ipsum" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lorem ipsum placeholder
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
map-tileConverts lat/lon and zoom (0-24) to Web Mercator XYZ tile coordinates and quadkey, or a tile back to its bounding box.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "map-tile" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Map tile (XYZ / slippy map)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
margin-markupComputes profit, gross margin % (profit/price), markup % (profit/cost) and the price multiplier from unit cost and selling price.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Margin and markup from cost and price
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
markdown-links-extractLists inline links, images, reference definitions and bare URLs in Markdown with their text and target, flagging relative and non-http(s) links.1 finding
Why it is in this group
- The name "markdown-links-extract" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "markdown-links-extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "markdown-links-extract" says "link": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract Markdown links
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
markdown-render-htmlRenders a CommonMark-like Markdown subset (headings, paragraphs, emphasis, code, fenced code, lists, blockquotes, tables, links, images) to HTML.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Markdown to safe HTML
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
markdown-tableBuilds 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build Markdown table
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
markdown-to-textStrips Markdown syntax (headings, emphasis, links, images, code fences, lists, blockquotes, tables, inline HTML) and returns plain text, keeping link and image text.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Markdown to plain text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
markdown-tocExtracts ATX headings (#…######, skipping code fences) and builds a nested Markdown table of contents with GitHub-style anchors, deduplicating repeated anchors.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Markdown table of contents
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
matrix-determinantComputes the determinant of a square matrix (up to 20×20) by LU decomposition with partial pivoting.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Matrix determinant
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
matrix-inverseComputes the inverse of a square matrix (up to 20×20) by Gauss-Jordan elimination; fails for singular matrices.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Matrix inverse
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
matrix-multiplyMultiplies two matrices (up to 20×20); columns of A must equal rows of B.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Matrix multiply
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
matrix-transposeTransposes a matrix (rows become columns), up to 20×20.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Matrix transpose
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mcp-server-json-lintLints an MCP Registry server.json: $schema URL and date, reverse-DNS name (namespace/name), description up to 100 characters, exact version, repository, packages (registryType, ide…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lint an MCP Registry server.json
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mcp-tools-lintLints MCP tool definitions (a tools/list result or array): name syntax and uniqueness, description presence/length, inputSchema root type, required keys defined in properties, undo…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lint MCP tool definitions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mermaid-checkSanity-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,…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mermaid syntax sanity check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mixed-script-detectFlags words that mix letters from different scripts (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Detect mixed-script words
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
modular-arithmeticComputes base^exponent mod m (fast exponentiation) and, when it exists, the modular inverse of base mod m.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Modular exponentiation and inverse
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
moon-phaseComputes 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…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Moon phase
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
morse-decodeDecodes International Morse code (dots/dashes, letters separated by spaces, words by / or 3+ spaces).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Morse decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
morse-encodeEncodes text in International Morse code: letters separated by spaces, words by " / ".No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Morse encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mx-amount-in-wordsWrites a peso amount in words in the style used on Mexican invoices (CFDI) and checks: "MIL DOSCIENTOS PESOS 50/100 M.N.".1 finding
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "mx-amount-in-words" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mexican amount in words (CFDI style)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
nanoidGenerates 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.1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "nanoid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Nano ID-style random ID
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
ndjson-to-jsonParses newline-delimited JSON (JSON Lines) into an array, skipping blank lines; errors report the failing line number.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: NDJSON / JSON Lines to JSON array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ngramsProduces character or word n-grams (n = 1-10) with counts, sorted by frequency.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: N-grams
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
number-format-localeFormats 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Locale number formatting
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
number-to-words-enSpells an integer (|n| < 10^18) in English words, as a cardinal (one hundred twenty-three) or ordinal (one hundred twenty-third).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Number to English words
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
onda-traducirAccepts 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…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ONDA: translate agent descriptions between protocols
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
percent-ofComputes p% of a value, and optionally the value increased or decreased by p%.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Percentage of a value
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
plus-code-decodeDecodes a full Open Location Code (plus code) into its center latitude/longitude and bounding box.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Plus code (Open Location Code) decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
plus-code-encodeEncodes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Plus code (Open Location Code) encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
polyline-decodeDecodes an Encoded Polyline string (precision 5 or 6) into lat/lon points.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decode polyline
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
polyline-encodeEncodes a list of lat/lon points with the Encoded Polyline Algorithm (precision 5 by default, 6 for OSRM/Valhalla).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Encode polyline
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
price-from-marginComputes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Price from target margin or markup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
prime-factorizeFactorizes an integer up to 10^20 into primes (trial division plus Pollard rho), returning factors with exponents and the divisor count.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Prime factorization
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
prompt-template-fillFills {{variable}} placeholders (dotted paths allowed, optional {{name|default}}) from a values object, reporting missing and unused variables; strict mode fails on missing values.1 finding
Why it is in this group
- The name "prompt-template-fill" says "fill": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "prompt-template-fill" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "prompt-template-fill" says "fill": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Fill a prompt template
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
punycode-decodeConverts xn-- Punycode labels of a domain back to Unicode (RFC 3492).1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "punycode-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Domain to Unicode (Punycode)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
punycode-encodeConverts an internationalized domain name to ASCII: lowercases and NFC-normalizes each label, then applies Punycode (RFC 3492) with the xn-- prefix.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "punycode-encode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Domain to ASCII (Punycode)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
quadratic-solveSolves ax² + bx + c = 0, returning real or complex roots, the discriminant and the vertex.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Solve quadratic equation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
quoted-printable-decodeDecodes MIME quoted-printable (RFC 2045), removing soft line breaks, to UTF-8 text or hex.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Quoted-printable decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
quoted-printable-encodeEncodes UTF-8 text as MIME quoted-printable (RFC 2045): =XX escapes, 76-char soft line breaks, CRLF line endings.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Quoted-printable encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
radix-convertConverts an integer of any size between bases 2-36 (accepts 0x/0o/0b prefixes, underscores and a sign), returning the result and common bases.1 finding
Why it is in this group
- The name "radix-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "radix-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "radix-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Number base conversion
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
rag-chunkSplits text into chunks of at most N characters or estimated tokens with overlap, preferring paragraph, then sentence, then word boundaries; returns offsets for citation.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Chunk text for embeddings / RAG
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
random-tokenGenerates a random token of 1-256 bytes encoded as hex, base64url or base58, e.g.1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "random-token" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Random token
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
rate-limit-planComputes, 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 nex…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Rate limit planning
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
readability-scoreComputes 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 av…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Readability metrics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
recibo-verifyChecks a receipt (recibo): recomputes the SHA-256 of the RFC 8785 (JCS) canonical input, output and receipt, and with rerun re-runs the tool.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Verify a Burs-IA receipt
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
regex-escapeEscapes a literal string so it can be embedded in a regular expression and match itself exactly.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Regex escape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
regex-replaceReplaces regex matches ($1, $<name>, $&, $` and $' supported) in a vm context with a 50 ms limit and a 1,000,000-character result cap.1 finding
Why it is in this group
- The name "regex-replace" says "replace": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "regex-replace" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "regex-replace" says "replace": a word for a change.
Description, as the server wrote it 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. ES: Reemplaza coincidencias de una expresión regular ($1, $<nombre>) 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.
Annotations the server declares
- title: Regex replace
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
regex-testTries a JavaScript regex on a text and lists each match with its position and groups (up to 500).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Regex test / match
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
retry-after-parseParses 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Retry-After header
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
robots-ai-crawlersReports, 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: AI crawler access from robots.txt
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
robots-txt-checkDecides 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 decidin…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Check robots.txt rules
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
roman-numeralConverts integers 1-3999 to standard Roman numerals and validates/parses Roman numerals (strict subtractive form) back to integers.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "roman-numeral" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Roman numerals
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
round-numberRounds 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, fl…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Round with a chosen mode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
salary-convertConverts pay between hourly, daily, weekly, biweekly, monthly and annual figures using configurable hours per week, days per week and weeks per year.1 finding
Why it is in this group
- The name "salary-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "salary-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "salary-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Salary period conversion
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
semver-bumpIncrements a SemVer version: major, minor, patch, premajor, preminor, prepatch or prerelease (with an optional identifier like beta or rc), following npm semver semantics.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bump semantic version
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
semver-satisfiesChecks whether a version satisfies an npm-style range (^, ~, x-ranges, hyphen ranges, comparators, || alternatives).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Check version against range
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
semver-sortSorts a list of SemVer versions by precedence (ascending or descending), reports invalid entries, and optionally returns the highest version satisfying a range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sort versions / max satisfying
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
set-cookie-parseParses a Set-Cookie response header into name, value and attributes (Expires, Max-Age, Domain, Path, Secure, HttpOnly, SameSite, Partitioned) and flags common security omissions.1 finding
Why it is in this group
- The name "set-cookie-parse" says "set": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "set-cookie-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "set-cookie-parse" says "set": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Set-Cookie header
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
significant-figuresRounds a number to N significant figures and returns it in plain and scientific notation.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Round to significant figures
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sitemap-buildBuilds 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.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.urls): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build XML sitemap
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
snowflake-decodeDecodes a 64-bit Snowflake ID into timestamp, worker/process and sequence using the Twitter/X or Discord layout and epoch, or a custom epoch.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Snowflake ID decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
snowflake-encodeBuilds a 64-bit Snowflake ID (Twitter-style 41/10/12 bit layout) from a timestamp, machine ID and sequence, for a given epoch.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Snowflake ID build
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
soundexComputes the American Soundex phonetic code (letter + 3 digits, with the H/W rule) of each word, for matching names that sound alike in English.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Soundex code
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sql-readonly-checkStatically 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 clau…1 finding
Why it is in this group
- The input takes a statement or command to run (input.sql), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "sql-readonly-check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.sql), which can change anything it can reach.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SQL read-only check (static)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-correlationMeasures how two equal-length series move together: the Pearson coefficient (linear), the Spearman coefficient (rank-based, less sensitive to outliers) and the covariance.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Correlation (Pearson, Spearman)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-forecastForecasts a numeric series with simple exponential smoothing, Holt (trend) or additive Holt-Winters (trend + season).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Exponential smoothing forecast
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-histogramBuckets numbers into equal-width bins (count or explicit edges), returning bin ranges and counts; the last bin includes its upper edge.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Histogram bins
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-meansComputes arithmetic, geometric and harmonic means (the latter two only for positive values), root mean square, and a weighted mean when weights are supplied.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Arithmetic, geometric, harmonic, weighted means
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-moving-averageComputes the simple (SMA) or exponential (EMA, alpha = 2/(window+1)) moving average of a series; SMA returns null until the window fills.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Moving average
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-outliers-iqrDetects outliers outside Tukey fences Q1 − k·IQR and Q3 + k·IQR (k = 1.5 default, 3 for extreme), using linear quartiles.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Outliers (IQR / Tukey fences)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-percentileComputes one or more percentiles (0-100) of a list of numbers with a selectable method (linear = Excel PERCENTILE.INC / numpy default, exclusive, nearest_rank).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Percentiles / quantiles
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-regressionLeast-squares fit y = slope·x + intercept with R², standard error, and optional predictions for new x values.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Simple linear regression
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-zscoreStandardizes each value as (x − mean) / stddev (population or sample), and flags values whose |z| exceeds a threshold.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Z-scores / standardize
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sun-timesComputes 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 ch…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Sunrise, sunset and day length
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-indentPrefixes every line (or only non-blank lines) with a given string, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Indent text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-normalize-whitespaceCollapses 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Normalize whitespace
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-padPads text to a target width in graphemes on the left, right or both sides with a fill string.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Pad text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-redact-piiMasks 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 k…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Redact PII and secrets
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-reverseReverses text by grapheme clusters so emoji, flags and accented letters stay intact.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Reverse text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-slugMakes 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Slugify
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-wrapWraps 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Word wrap
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timestamp-convertConverts 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 mi…1 finding
Why it is in this group
- The name "timestamp-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "timestamp-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "timestamp-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Unix timestamp ↔ ISO
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timezone-infoReports 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Time zone info at an instant
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timezone-shiftConverts 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.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "timezone-shift" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Convert time between zones
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
token-estimateHeuristically 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Estimate LLM tokens
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
token-units-convertConverts a token amount between decimal and integer base units exactly (BigInt), e.g.1 finding
Why it is in this group
- The name "token-units-convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "token-units-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "token-units-convert" says "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Token amount ↔ base units
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ulid-generateGenerates ULIDs: 26-char Crockford Base32, 48-bit millisecond timestamp plus 80 random bits, sortable.1 finding
Why it is in this group
- The name "ulid-generate" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "ulid-generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ulid-generate" says "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ULID generate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
unicode-escapeEscapes non-ASCII characters as \uXXXX (JSON/JS, UTF-16 surrogates), \u{X} (ES6), or U+XXXX notation.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Unicode escape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
unicode-normalizeApplies Unicode normalization form NFC, NFD, NFKC or NFKD and reports whether the text changed.1 finding
Why it is in this group
- The description's first verb is "apply": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "unicode-normalize" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Unicode normalize
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
unicode-unescapeConverts \uXXXX (including surrogate pairs), \u{X}, \xXX and U+XXXX escapes in text back to characters.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "unicode-unescape" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Unicode unescape
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-buildBuilds a URL from a base, optional path segments (each percent-encoded) and query parameters (arrays repeat the key), with an optional fragment.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build URL
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-decodeDecodes percent-encoded text; in form mode + is treated as a space.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: URL percent-decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-encodePercent-encodes text for a URL: component mode (like encodeURIComponent), form mode (space as +, application/x-www-form-urlencoded) or path mode (keeps /).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: URL percent-encode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-normalizeNormalizes a URL for comparison or deduplication: lowercase scheme/host, drop default port, resolve dot segments, optionally sort query, drop tracking parameters (utm_*, gclid, fbc…Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Normalize URL
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-parseParses an absolute URL with the WHATWG URL parser into scheme, host, port (with default), path, query parameters (repeated keys as arrays), fragment and origin.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse URL
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
user-agent-parseHeuristically parses a User-Agent string into browser and version, engine, OS and version, device class (desktop/mobile/tablet/bot) and known crawlers/AI bots.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse User-Agent (basic)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
utm-from-latlonConverts WGS84 latitude/longitude to UTM zone, latitude band, hemisphere, easting and northing (Krüger series, sub-millimetre in-zone), including the Norway/Svalbard zone exception…1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "utm-from-latlon" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lat/lon to UTM
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
utm-to-latlonConverts UTM zone, hemisphere (or latitude band letter), easting and northing to WGS84 latitude/longitude.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "utm-to-latlon" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UTM to lat/lon
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
uuid-v3Derives the RFC 9562 version-3 UUID of a namespace and a name, using MD5.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UUID v3 (name-based, MD5)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
uuid-v4Generates random RFC 9562 version-4 UUIDs (122 random bits).1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "uuid-v4" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UUID v4
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
uuid-v5Derives 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UUID v5 (name-based, SHA-1)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
uuid-v7Generates RFC 9562 version-7 UUIDs: 48-bit Unix millisecond timestamp plus random bits, so they sort by creation time.1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "uuid-v7" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: UUID v7 (time-ordered)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
vector-similarityComputes the cosine similarity, dot product, Euclidean and Manhattan distance between two numeric vectors of equal length (≤ 8,192 dims), plus their L2 norms.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Vector similarity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
vector-top-kRanks 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 n…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Nearest vectors (top-k)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402-cost-estimateEstimates the cost of a batch of pay-per-call API requests (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: x402 call cost estimate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402-replay-checkChecks 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 exp…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Check an x402 payment for replay and expiry
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402-requirements-lintLints 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, maxTimeo…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Lint x402 payment requirements
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
xml-parseParses XML into JSON: attributes as @name, text as #text (or a plain string for text-only elements), repeated children as arrays.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: XML to JSON (safe)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
yaml-buildSerializes a JSON value as block-style YAML, quoting strings that would otherwise be read as numbers, booleans, null or YAML syntax.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON to YAML
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
yaml-parseParses a safe YAML subset (block maps and sequences, plain/quoted scalars, flow [..] {..}, | and > blocks, comments) to JSON.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: YAML to JSON (safe subset)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
zlib-compressCompresses 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compress (gzip, deflate, brotli)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
zlib-decompressDecompresses base64 data in gzip, zlib/deflate, raw deflate or Brotli (auto-detects gzip and zlib headers).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decompress (gzip, deflate, brotli)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 95Show 95 read-only tools
aba-routing-validateValidates 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.No findings
Why it is in this group
- The name "aba-routing-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: US ABA routing number
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
agent-card-validateChecks 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, …No findings
Why it is in this group
- The name "agent-card-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Validate A2A Agent Card
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ar-cbu-validateValidates 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…).No findings
Why it is in this group
- The name "ar-cbu-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Argentine CBU validation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ar-cuit-validateValidates an Argentine CUIT/CUIL (11 digits: type prefix, DNI, mod-11 check digit with weights 5432765432) and identifies the prefix type (person or company).No findings
Why it is in this group
- The name "ar-cuit-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Argentina CUIT/CUIL validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
array-count-byCounts occurrences of each distinct value (or of a key's value), sorted by count descending.No findings
Why it is in this group
- The name "array-count-by" says "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Count by value or key
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
bitcoin-address-validateValidates a Bitcoin address offline: Base58Check P2PKH/P2SH (mainnet/testnet version bytes) or Bech32/Bech32m SegWit (BIP-173/350 witness version and program length rules).No findings
Why it is in this group
- The name "bitcoin-address-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Bitcoin address validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
br-cnpj-validateValidates 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…No findings
Why it is in this group
- The name "br-cnpj-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Brazil CNPJ validate (incl. alphanumeric)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
br-cpf-validateValidates a Brazilian CPF (11 digits, two mod-11 check digits), rejecting repeated-digit numbers, and formats it as 529.982.247-25.No findings
Why it is in this group
- The name "br-cpf-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Brazil CPF validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
business-days-betweenCounts working days between two dates, excluding configurable weekend days and a list of holidays.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Business days between dates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
calendar-monthReturns a month as a grid of weeks (Monday or Sunday first) with ISO week numbers, suitable for rendering a calendar.Reads private dataNo findings
Why it is in this group
- The description's first verb is "return": a word for reading.
What it can reach
- private-dataThe name "calendar-month" says "calendar": it reads calendars.
- private-dataThe description's first sentence says "return" and "calendar": it reads calendars.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Month calendar grid
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
char-frequencyCounts how often each grapheme appears, sorted by frequency then by first appearance; optional case folding and whitespace exclusion.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Character frequency
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cidr-infoDescribes an IPv4 or IPv6 CIDR block: network and broadcast/last address, first and last usable host, netmask, wildcard mask, total and usable address counts.No findings
Why it is in this group
- The description's first verb is "describe": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CIDR subnet info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cl-rutValidates a Chilean RUT/RUN including its mod-11 check digit (0-9 or K) and returns it formatted as 12.345.678-5.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Chile RUT/RUN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-business-days-betweenCounts business days (días hábiles) between two dates in Colombia, excluding Sundays, Saturdays (unless saturday_is_business) and national holidays; lists holidays skipped.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian business days between dates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-holidaysLists 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)…No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian public holidays
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-phone-validateChecks 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.No findings
Why it is in this group
- The name "co-phone-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian phone number syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
co-plate-validateClassifies a Colombian license plate by SYNTAX: car/public service (ABC123), motorcycle (ABC12D, or older ABC12), trailer/semitrailer (R12345 / S12345), diplomatic (CD/CC/OI + 4 di…No findings
Why it is in this group
- The name "co-plate-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Colombian vehicle plate syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-contrast-fixFinds 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 direc…No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Adjust color to meet contrast
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-luminanceReturns WCAG relative luminance, OKLCH lightness, whether the color reads as light or dark, and whether black or white text has more contrast on it.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Relative luminance and light/dark
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
color-name-nearestFinds 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.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Nearest CSS color name
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
count-occurrencesCounts non-overlapping (or overlapping) occurrences of a substring, optionally case-insensitive, and returns their indices (first 1,000).No findings
Why it is in this group
- The name "count-occurrences" says "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Count substring occurrences
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cron-explainValidates 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…No findings
Why it is in this group
- The name "cron-explain" says "explain": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Explain cron expression
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
currency-infoReturns facts about an ISO 4217 currency from the runtime's CLDR data: display decimals (CLDR may differ from ISO, e.g.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Currency facts (ISO 4217)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cusip-validateValidates a 9-character CUSIP (US/Canada security identifier) with its modulus-10 double-add-double check digit.No findings
Why it is in this group
- The name "cusip-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: CUSIP validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
dammValidates a digit string with the Damm quasigroup checksum (detects all single-digit errors and adjacent transpositions); the last digit is the check digit.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Damm check digit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
date-rangeLists 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.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: List dates in a range
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
date-relativeDescribes 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.No findings
Why it is in this group
- The description's first verb is "describe": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Relative time phrase
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
decimal-to-fractionFinds the closest fraction to a decimal with a denominator ≤ max_denominator using continued fractions (e.g.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Decimal to best fraction
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
diff-linesComputes the line-based diff of two texts using longest common subsequence; returns a unified diff with configurable context and counts of added/removed lines.No findings
Why it is in this group
- The name "diff-lines" says "diff": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Line diff (unified)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
domain-syntax-validateChecks hostname syntax (RFC 1035/1123 labels, total ≤ 253, label ≤ 63, alphabetic or xn-- TLD), detects IDN/punycode labels and IP literals.No findings
Why it is in this group
- The name "domain-syntax-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Domain name syntax check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ec-id-validateValidates 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).No findings
Why it is in this group
- The name "ec-id-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Ecuador cédula / RUC (natural person) validation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
email-syntax-validateChecks email address SYNTAX only (practical RFC 5321/5322 subset: local part ≤ 64, domain ≤ 253, labels, TLD); it cannot tell whether the mailbox exists.No findings
Why it is in this group
- The name "email-syntax-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Email address syntax check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-compareCompares 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.No findings
Why it is in this group
- The name "es-compare" says "compare": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish accent-insensitive compare
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-date-parseFinds 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 refere…No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse Spanish dates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-dni-nie-validateValidates a Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter) with the official mod-23 control letter (Ministerio del Interior).No findings
Why it is in this group
- The name "es-dni-nie-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish DNI/NIE validation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
es-stressAnalyzes 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 f…No findings
Why it is in this group
- The description's first verb is "analyze": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Spanish stress and accent check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
evm-address-checksumValidates an Ethereum/EVM address (Base, Polygon, etc.): 20-byte hex format and EIP-55 mixed-case checksum, and returns the checksummed form.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: EVM address checksum (EIP-55)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-emailsFinds email-like addresses in text (syntax only; does not check that mailboxes exist), lowercasing the domain part.Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "find": a word for reading.
What it can reach
- private-dataThe name "extract-emails" says "email": it reads mail.
- private-dataThe description's first sentence says "find" and "email": it reads mail.
- untrusted-inputThe name "extract-emails" says "email": it reads inbound email, which other people can write.
- untrusted-inputThe description's first sentence says "find" and "email": it reads inbound email, which other people can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract email addresses
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-emojisFinds emoji grapheme clusters (including skin tones, ZWJ sequences and flags) in text.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract emoji
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-hashtagsFinds #hashtags (Unicode letters, digits, underscore) in text.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract hashtags
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-mentionsFinds @mentions (letters, digits, underscore, dot; 1-50 chars) that are not part of an email address.Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "find": a word for reading.
What it can reach
- private-dataThe description's first sentence says "find" and "email": it reads mail.
- untrusted-inputThe name "extract-mentions" says "mention": it reads comments, which other people can write.
- untrusted-inputThe description's first sentence says "find" and "mention": it reads comments, which other people can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract @mentions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-numbersFinds 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.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract numbers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
extract-urlsFinds http(s) and www.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "find": a word for reading.
What it can reach
- untrusted-inputThe name "extract-urls" says "url": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "find" and "http": it reads web pages, which anyone can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract URLs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
find_toolSearches the 465 tools of this server by keywords (English or Spanish) and an optional family, and returns the best matches with their input schemas.No findings
Why it is in this group
- The name "find_tool" says "find": a word for reading.
Description, as the server wrote it Searches the 465 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. ES: Busca entre las 465 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.
Annotations the server declares
- title: Find a tool
- readOnlyHint: true
- idempotentHint: true
- destructiveHint: false
- openWorldHint: false
geohash-neighborsReturns the 8 neighboring geohash cells (n, ne, e, se, s, sw, w, nw) of the same precision, for proximity searches.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Geohash neighbors
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
hamming-distanceCounts positions where two equal-length strings (by code point) or hex byte strings (bit level) differ.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Hamming distance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
http-statusExplains an HTTP status code: standard reason phrase (English and Spanish), class, short meaning, and whether a client should typically retry it.Reads text others writeNo findings
Why it is in this group
- The name "http-status" says "status": a word for reading.
What it can reach
- untrusted-inputThe name "http-status" says "status" and "http": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "explain" and "http": it reads web pages, which anyone can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Explain HTTP status code
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
iban-validateValidates 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.No findings
Why it is in this group
- The name "iban-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: IBAN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
imei-validateValidates a 15-digit mobile device IMEI with its Luhn check digit and splits it into TAC (type allocation code) and serial number.No findings
Why it is in this group
- The name "imei-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: IMEI validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ip-parseValidates 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-lo…No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse / classify IP address
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
isbn-validateValidates an ISBN-10 (mod 11, X allowed) or ISBN-13 (EAN mod 10, 978/979 prefix) and returns both forms when convertible.No findings
Why it is in this group
- The name "isbn-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISBN-10 / ISBN-13 validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
isin-validateValidates a 12-character International Securities Identification Number (ISO 6166): country prefix, NSIN and Luhn check digit over the letter-expanded code.No findings
Why it is in this group
- The name "isin-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISIN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
iso-country-lookupLooks 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.No findings
Why it is in this group
- The name "iso-country-lookup" says "lookup": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISO 3166-1 country lookup (es/en)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
iso-language-lookupLooks up ISO 639-1 two-letter language codes by code or by name in Spanish or English (accent-insensitive, partial match).No findings
Why it is in this group
- The name "iso-language-lookup" says "lookup": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISO 639-1 language lookup (es/en)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
issn-validateValidates an ISSN (8 characters, mod-11 check digit with X) for serial publications.No findings
Why it is in this group
- The name "issn-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ISSN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-describeSummarizes a JSON value: nesting depth, counts of each type, number of keys, serialized size, and the set of distinct paths (arrays collapsed to []).No findings
Why it is in this group
- The name "json-describe" says "describe": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Describe JSON structure
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-diff-patchComputes an RFC 6902 JSON Patch that transforms document a into document b (object keys diffed recursively, arrays element-wise with tail adds/removes).Reads private dataNo findings
Why it is in this group
- The name "json-diff-patch" says "diff": a word for reading.
What it can reach
- private-dataThe description's first sentence says "document": it reads documents.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON diff as RFC 6902 patch
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-extractFinds and parses JSON objects/arrays embedded in free text (e.g.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Extract JSON from text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-pickReturns a new object containing only the given dotted paths (e.g.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Pick keys / paths
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-pointer-getReads 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.Reads private dataNo findings
Why it is in this group
- The name "json-pointer-get" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "read" and "document": it reads documents.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: JSON Pointer get (RFC 6901)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json-schema-validateValidates 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 findings
Why it is in this group
- The name "json-schema-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Validate against JSON Schema (subset)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lei-validateValidates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod 97-10 checksum and splits out the LOU prefix.No findings
Why it is in this group
- The name "lei-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: LEI validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
longest-common-subsequenceFinds the longest common subsequence of two strings (by code point) and its length.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Longest common subsequence
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
luhn-validateValidates a number with the Luhn mod-10 checksum (credit cards, IMEI, many national IDs); spaces and dashes are ignored.No findings
Why it is in this group
- The name "luhn-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Luhn (mod 10) check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mcp-protocol-compatCompares 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 c…No findings
Why it is in this group
- The description's first verb is "compare": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Check MCP initialize compatibility
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mime-lookupLooks 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.Reads private dataNo findings
Why it is in this group
- The name "mime-lookup" says "lookup": a word for reading.
What it can reach
- private-dataThe description's first sentence says "file": it reads files.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: MIME type lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
month-infoDescribes 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.No findings
Why it is in this group
- The description's first verb is "describe": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Month and year facts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mx-clabe-validateValidates 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.No findings
Why it is in this group
- The name "mx-clabe-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mexican CLABE validation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mx-curp-validateValidates 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.No findings
Why it is in this group
- The name "mx-curp-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mexico CURP validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
mx-rfc-validateValidates 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).No findings
Why it is in this group
- The name "mx-rfc-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Mexico RFC validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
objectid-decodeValidates a 24-hex MongoDB ObjectId and extracts its embedded creation time (seconds precision) and the random/counter parts.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: MongoDB ObjectId decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
openapi-summarySummarizes a supplied OpenAPI 3.x document: title, version, servers, operations (method, path, operationId, summary), security, and lint issues (missing operationId/summary, no res…Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "summarize": a word for reading.
What it can reach
- private-dataThe description's first sentence says "summarize" and "document": it reads documents.
- untrusted-inputThe description's first sentence says "summarize" and "issue": it reads issues, which other people can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Summarize and lint OpenAPI
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
pe-ruc-validateValidates 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 com…No findings
Why it is in this group
- The name "pe-ruc-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Peru RUC validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
percent-ratioReturns what percentage a part is of a whole (part / whole × 100).No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: What percent is X of Y
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
phone-e164-validateNormalizes a phone number to E.164 (+ and 8-15 digits) and identifies the country calling code from a built-in table.No findings
Why it is in this group
- The name "phone-e164-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Phone number E.164 syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
query-buildSerializes 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.No findings
Why it is in this group
- The name "query-build" says "query": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Build query string
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
query-parseParses a URL query string (leading ?Reads text others writeNo findings
Why it is in this group
- The name "query-parse" says "query": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse query string
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
security-txt-validateValidates 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…No findings
Why it is in this group
- The name "security-txt-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Validate security.txt (RFC 9116)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
semver-compareCompares two SemVer versions with full precedence rules (prereleases sort before releases; build metadata ignored): returns -1, 0 or 1 and the difference level.No findings
Why it is in this group
- The name "semver-compare" says "compare": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compare semantic versions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
semver-parseValidates and parses a SemVer 2.0.0 string (optional leading v) into major, minor, patch, prerelease identifiers and build metadata.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Parse semantic version
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
solana-address-validateChecks that a string is a syntactically valid Solana public key: Base58 (Bitcoin alphabet) decoding to exactly 32 bytes.No findings
Why it is in this group
- The name "solana-address-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Solana address syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stats-describeComputes 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.No findings
Why it is in this group
- The name "stats-describe" says "describe": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Descriptive statistics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
swift-bic-validateChecks SWIFT/BIC code syntax (ISO 9362: 4-letter institution, 2-letter country, 2-char location, optional 3-char branch) and splits it into parts.No findings
Why it is in this group
- The name "swift-bic-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: SWIFT / BIC syntax
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-invisible-scanFinds zero-width, bidi-control, Unicode tag and other invisible characters (often used to hide instructions in text) and decodes any hidden tag-character text.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Scan for invisible characters
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text-metricsCounts characters (code points and graphemes), bytes, words, sentences, lines and paragraphs, using Unicode segmentation, plus an estimated reading time at 238 words per minute.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Text statistics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timezone-listLists the IANA time zone identifiers supported by this runtime, optionally filtered by a case-insensitive substring (e.g.No findings
Why it is in this group
- The name "timezone-list" says "list": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: List IANA time zones
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timezone-overlapFinds, 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.No findings
Why it is in this group
- The description's first verb is "find": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Working-hours overlap across zones
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
ulid-decodeValidates a ULID and extracts its timestamp (ms and ISO 8601) and the hex of its 80-bit random part.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: ULID decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
unit-price-compareRanks 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.No findings
Why it is in this group
- The name "unit-price-compare" says "compare": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Compare unit prices
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
url-resolveResolves a relative reference (../x, /y, ?q, //host/z) against a base URL per the WHATWG URL standard.Reads text others writeNo findings
Why it is in this group
- The name "url-resolve" says "resolve": a word for reading.
What it can reach
- untrusted-inputThe name "url-resolve" says "resolve" and "url": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "resolve" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Resolve relative URL
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
utf8-inspectLists each character of a string with its Unicode code point, UTF-8 bytes and UTF-16 units, plus totals (bytes, code points, graphemes).No findings
Why it is in this group
- The name "utf8-inspect" says "inspect": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Inspect UTF-8 / code points
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
uuid-inspectValidates a UUID string and reports version, variant, and the embedded timestamp for v1, v6 and v7.No findings
Why it is in this group
- The name "uuid-inspect" says "inspect": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Inspect / validate UUID
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
verhoeffValidates 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 dig…No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Verhoeff check digit
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
vin-validateValidates 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.No findings
Why it is in this group
- The name "vin-validate" says "validate": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Vehicle VIN validate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
word-frequencyCounts word frequencies using Unicode word segmentation, case-folded, with optional minimum word length and English/Spanish stopword removal.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it 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. ES: 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.
Annotations the server declares
- title: Word frequency
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
1568 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 7 untrusted-input tools breaks every one.
- Reads private data7
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write7
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out32
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__bursia-utils__extract-emails",
"mcp__bursia-utils__extract-mentions",
"mcp__bursia-utils__extract-urls",
"mcp__bursia-utils__http-status",
"mcp__bursia-utils__openapi-summary",
"mcp__bursia-utils__query-parse",
"mcp__bursia-utils__url-resolve"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
- Highdotenv-parse
The title refers to ".env".
What this check looks forMatched text
title: "Parse .env file"
- Highdotenv-parse
The annotations title refers to ".env".
What this check looks forMatched text
annotations.title: "Parse .env file"
- Highdotenv-parse
The description refers to ".env".
What this check looks forMatched text
description: "..., result up to 1 MB. ES: Analiza texto .env (CLAVE=valor, comillas, comentarios) en..."
- Highdotenv-parse
The input schema at properties.text.description refers to ".env".
What this check looks forMatched text
inputSchema.properties.text.description: ".env content (string; required)."
The server marks "prompt-template-fill" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "prompt-template-fill" says "fill": a word for a change.
- Warnbackoff-schedule
The server marks "backoff-schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "backoff-schedule" says "schedule": a word for a change.
Show 114 more findingsShow fewer
The server marks "token-units-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "token-units-convert" says "convert": a word for a change.
The server marks "tool-definition-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "tool-definition-convert" says "convert": a word for a change.
- Warncolor-convert
The server marks "color-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "color-convert" says "convert": a word for a change.
- Warncolor-palette
The server marks "color-palette" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warncolor-scale
The server marks "color-scale" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- Warnjson-path
The server marks "json-path" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
- Warnjson-patch-apply
The server marks "json-patch-apply" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-patch-apply" says "patch": a word for a change.
The server marks "json-merge-patch-apply" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-merge-patch-apply" says "merge": a word for a change that another call does not undo.
The server marks "json-merge-patch-create" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "json-merge-patch-create" says "merge": a word for a change that another call does not undo.
- Warnjson-omit
The server marks "json-omit" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnjson-omit
The server marks "json-omit" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warncsv-build
The server marks "csv-build" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnarray-dedupe
The server marks "array-dedupe" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnarray-dedupe
The server marks "array-dedupe" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnarray-set-ops
The server marks "array-set-ops" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "array-set-ops" says "set": a word for a change.
The server marks "timestamp-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "timestamp-convert" says "convert": a word for a change.
- Warntimezone-shift
The server marks "timezone-shift" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warndate-add
The server marks "date-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "date-add" says "add": a word for a change.
The server marks "business-days-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "business-days-add" says "add": a word for a change.
- Warndate-iso-week
The server marks "date-iso-week" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnjulian-day
The server marks "julian-day" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncron-next-runs
The server marks "cron-next-runs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "cron-next-runs" says "run": a word for a change.
- Warnpunycode-encode
The server marks "punycode-encode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnpunycode-decode
The server marks "punycode-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnbinary-encode
The server marks "binary-encode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnbinary-decode
The server marks "binary-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncipher-rot13
The server marks "cipher-rot13" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
- Warnunicode-unescape
The server marks "unicode-unescape" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnes-number-parse
The server marks "es-number-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnvat-calculate
The server marks "vat-calculate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
The server marks "discount-calculate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
- Warncurrency-format
The server marks "currency-format" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input carries an amount (input.amount) and a currency, so it moves money.
- Warnmoney-allocate
The server marks "money-allocate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input carries an amount (input.amount) and a currency, so it moves money.
- Warnpayment-fee
The server marks "payment-fee" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "payment-fee" says "payment": a word that usually means money moves, which cannot be taken back.
- Warnsalary-convert
The server marks "salary-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "salary-convert" says "convert": a word for a change.
The server marks "interest-rate-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "interest-rate-convert" says "convert": a word for a change.
- Warngeo-haversine
The server marks "geo-haversine" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- Warngeo-vincenty
The server marks "geo-vincenty" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- Warngeo-bearing
The server marks "geo-bearing" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- Warnutm-from-latlon
The server marks "utm-from-latlon" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnutm-to-latlon
The server marks "utm-to-latlon" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnmap-tile
The server marks "map-tile" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnuuid-v4
The server marks "uuid-v4" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warnuuid-v7
The server marks "uuid-v7" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warnulid-generate
The server marks "ulid-generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ulid-generate" says "generate": a word for a change.
- Warnnanoid
The server marks "nanoid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warnrandom-token
The server marks "random-token" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
The server marks "co-business-days-add" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "co-business-days-add" says "add": a word for a change.
The server marks "co-amount-in-words" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
The server marks "mx-amount-in-words" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
- Warnes-ordinal
The server marks "es-ordinal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
- Warnco-iva
The server marks "co-iva" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
- Warnco-uvt-convert
The server marks "co-uvt-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "co-uvt-convert" says "convert": a word for a change.
- Warnhtml-to-text
The server marks "html-to-text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
The server marks "markdown-links-extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "markdown-links-extract" says "link": a word for a change.
- Warnpercent-change
The server marks "percent-change" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- Warnfin-loan-payment
The server marks "fin-loan-payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "fin-loan-payment" says "payment": a word that usually means money moves, which cannot be taken back.
- Warnradix-convert
The server marks "radix-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "radix-convert" says "convert": a word for a change.
- Warnroman-numeral
The server marks "roman-numeral" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
The server marks "fraction-arithmetic" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
The server marks "expression-evaluate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "expression-evaluate" says "evaluate": a word for a change.
The server marks "x402-payment-decode" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "x402-payment-decode" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "x402-payment-response-verify" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "x402-payment-response-verify" says "payment": a word that usually means money moves, which cannot be taken back.
- Warncase-camel
The server marks "case-camel" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-pascal
The server marks "case-pascal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-snake
The server marks "case-snake" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-kebab
The server marks "case-kebab" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-constant
The server marks "case-constant" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-dot
The server marks "case-dot" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warncase-train
The server marks "case-train" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warntext-truncate
The server marks "text-truncate" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "text-truncate" says "truncate": a word for removing or ending something.
- Warntext-truncate
The server marks "text-truncate" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "text-truncate" says "truncate": a word for removing or ending something.
- Warntext-dedent
The server marks "text-dedent" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warntext-dedent
The server marks "text-dedent" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
The server marks "unicode-normalize" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "apply": a word for a change.
- Warnremove-accents
The server marks "remove-accents" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove-accents" says "remove": a word for removing or ending something.
- Warnremove-accents
The server marks "remove-accents" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove-accents" says "remove": a word for removing or ending something.
- Warnlorem-ipsum
The server marks "lorem-ipsum" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warnregex-replace
The server marks "regex-replace" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "regex-replace" says "replace": a word for a change.
The server marks "text-invisible-strip" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
The server marks "text-invisible-strip" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnlines-dedupe
The server marks "lines-dedupe" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnlines-dedupe
The server marks "lines-dedupe" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnconvert-length
The server marks "convert-length" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-length" says "convert": a word for a change.
- Warnconvert-mass
The server marks "convert-mass" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-mass" says "convert": a word for a change.
- Warnconvert-volume
The server marks "convert-volume" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-volume" says "convert": a word for a change.
- Warnconvert-area
The server marks "convert-area" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-area" says "convert": a word for a change.
- Warnconvert-speed
The server marks "convert-speed" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-speed" says "convert": a word for a change.
- Warnconvert-pressure
The server marks "convert-pressure" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-pressure" says "convert": a word for a change.
- Warnconvert-energy
The server marks "convert-energy" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-energy" says "convert": a word for a change.
- Warnconvert-power
The server marks "convert-power" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-power" says "convert": a word for a change.
The server marks "convert-data-size" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-data-size" says "convert": a word for a change.
- Warnconvert-time
The server marks "convert-time" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-time" says "convert": a word for a change.
- Warnconvert-angle
The server marks "convert-angle" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-angle" says "convert": a word for a change.
The server marks "convert-frequency" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-frequency" says "convert": a word for a change.
- Warnconvert-force
The server marks "convert-force" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-force" says "convert": a word for a change.
- Warnconvert-density
The server marks "convert-density" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-density" says "convert": a word for a change.
The server marks "convert-acceleration" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-acceleration" says "convert": a word for a change.
The server marks "convert-flow-rate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-flow-rate" says "convert": a word for a change.
- Warnconvert-torque
The server marks "convert-torque" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-torque" says "convert": a word for a change.
The server marks "convert-data-rate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-data-rate" says "convert": a word for a change.
The server marks "convert-temperature" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-temperature" says "convert": a word for a change.
The server marks "convert-fuel-economy" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-fuel-economy" says "convert": a word for a change.
- Warnconvert-cooking
The server marks "convert-cooking" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "convert-cooking" says "convert": a word for a change.
The server marks "sql-readonly-check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.sql), which can change anything it can reach.
The server marks "html-links-extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "html-links-extract" says "link": a word for a change.
- Warngtin-validate
The server marks "gtin-validate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "gtin-validate" says "validate": a word for reading.
- Warnjwt-sign-hmac
The server marks "jwt-sign-hmac" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "create": a word for a change.
- Warnset-cookie-parse
The server marks "set-cookie-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "set-cookie-parse" says "set": a word for a change.
The server marks "content-type-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "content-type-parse" says "type": a word for a change.
The server marks "link-header-parse" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "link-header-parse" says "link": a word for a change.
- Warnhttp-date
The server marks "http-date" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
The server marks "ip-range-to-cidrs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Infoh2o-rank
The input schema at properties.candidates.items.properties.flags.properties.requires_credential.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.candidates.items.properties.flags.properties.requires_credential.description: "...alse or absent counts as true (requires credential)"
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.5.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http bursia-utils https://bursia-utils-production.up.railway.app/mcpclaude mcp add --transport http bursia-utils https://bursia-utils-production.up.railway.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__bursia-utils__find_tool",
"mcp__bursia-utils__json-extract",
"mcp__bursia-utils__color-contrast-fix",
"mcp__bursia-utils__color-name-nearest",
"mcp__bursia-utils__color-luminance",
"mcp__bursia-utils__json-pointer-get",
"mcp__bursia-utils__json-diff-patch",
"mcp__bursia-utils__json-pick",
"mcp__bursia-utils__json-describe",
"mcp__bursia-utils__json-schema-validate",
"mcp__bursia-utils__array-count-by",
"mcp__bursia-utils__timezone-list",
"mcp__bursia-utils__timezone-overlap",
"mcp__bursia-utils__business-days-between",
"mcp__bursia-utils__month-info",
"mcp__bursia-utils__calendar-month",
"mcp__bursia-utils__date-range",
"mcp__bursia-utils__date-relative",
"mcp__bursia-utils__cron-explain",
"mcp__bursia-utils__utf8-inspect",
"mcp__bursia-utils__es-stress",
"mcp__bursia-utils__es-date-parse",
"mcp__bursia-utils__currency-info",
"mcp__bursia-utils__unit-price-compare",
"mcp__bursia-utils__geohash-neighbors",
"mcp__bursia-utils__uuid-inspect",
"mcp__bursia-utils__ulid-decode",
"mcp__bursia-utils__objectid-decode",
"mcp__bursia-utils__mx-clabe-validate",
"mcp__bursia-utils__ar-cbu-validate",
"mcp__bursia-utils__es-dni-nie-validate",
"mcp__bursia-utils__ec-id-validate",
"mcp__bursia-utils__co-holidays",
"mcp__bursia-utils__co-business-days-between",
"mcp__bursia-utils__co-phone-validate",
"mcp__bursia-utils__co-plate-validate",
"mcp__bursia-utils__es-compare",
"mcp__bursia-utils__mx-rfc-validate",
"mcp__bursia-utils__mx-curp-validate",
"mcp__bursia-utils__cl-rut",
"mcp__bursia-utils__ar-cuit-validate",
"mcp__bursia-utils__pe-ruc-validate",
"mcp__bursia-utils__br-cpf-validate",
"mcp__bursia-utils__br-cnpj-validate",
"mcp__bursia-utils__stats-describe",
"mcp__bursia-utils__percent-ratio",
"mcp__bursia-utils__decimal-to-fraction",
"mcp__bursia-utils__mcp-protocol-compat",
"mcp__bursia-utils__agent-card-validate",
"mcp__bursia-utils__security-txt-validate",
"mcp__bursia-utils__openapi-summary",
"mcp__bursia-utils__text-metrics",
"mcp__bursia-utils__count-occurrences",
"mcp__bursia-utils__char-frequency",
"mcp__bursia-utils__word-frequency",
"mcp__bursia-utils__hamming-distance",
"mcp__bursia-utils__longest-common-subsequence",
"mcp__bursia-utils__diff-lines",
"mcp__bursia-utils__extract-emails",
"mcp__bursia-utils__extract-urls",
"mcp__bursia-utils__extract-hashtags",
"mcp__bursia-utils__extract-mentions",
"mcp__bursia-utils__extract-emojis",
"mcp__bursia-utils__extract-numbers",
"mcp__bursia-utils__text-invisible-scan",
"mcp__bursia-utils__iso-country-lookup",
"mcp__bursia-utils__iso-language-lookup",
"mcp__bursia-utils__luhn-validate",
"mcp__bursia-utils__iban-validate",
"mcp__bursia-utils__isbn-validate",
"mcp__bursia-utils__issn-validate",
"mcp__bursia-utils__imei-validate",
"mcp__bursia-utils__vin-validate",
"mcp__bursia-utils__aba-routing-validate",
"mcp__bursia-utils__swift-bic-validate",
"mcp__bursia-utils__isin-validate",
"mcp__bursia-utils__cusip-validate",
"mcp__bursia-utils__lei-validate",
"mcp__bursia-utils__verhoeff",
"mcp__bursia-utils__damm",
"mcp__bursia-utils__evm-address-checksum",
"mcp__bursia-utils__bitcoin-address-validate",
"mcp__bursia-utils__solana-address-validate",
"mcp__bursia-utils__url-resolve",
"mcp__bursia-utils__query-parse",
"mcp__bursia-utils__query-build",
"mcp__bursia-utils__mime-lookup",
"mcp__bursia-utils__http-status",
"mcp__bursia-utils__semver-parse",
"mcp__bursia-utils__semver-compare",
"mcp__bursia-utils__ip-parse",
"mcp__bursia-utils__cidr-info",
"mcp__bursia-utils__email-syntax-validate",
"mcp__bursia-utils__phone-e164-validate",
"mcp__bursia-utils__domain-syntax-validate"
],
"ask": [
"mcp__bursia-utils__token-estimate",
"mcp__bursia-utils__prompt-template-fill",
"mcp__bursia-utils__json-repair",
"mcp__bursia-utils__code-blocks-extract",
"mcp__bursia-utils__rag-chunk",
"mcp__bursia-utils__dedupe-similar",
"mcp__bursia-utils__vector-similarity",
"mcp__bursia-utils__vector-top-k",
"mcp__bursia-utils__bm25-rank",
"mcp__bursia-utils__backoff-schedule",
"mcp__bursia-utils__retry-after-parse",
"mcp__bursia-utils__rate-limit-plan",
"mcp__bursia-utils__idempotency-key",
"mcp__bursia-utils__token-units-convert",
"mcp__bursia-utils__x402-cost-estimate",
"mcp__bursia-utils__llm-cost-estimate",
"mcp__bursia-utils__text-redact-pii",
"mcp__bursia-utils__tool-definition-convert",
"mcp__bursia-utils__color-convert",
"mcp__bursia-utils__color-contrast",
"mcp__bursia-utils__color-mix",
"mcp__bursia-utils__color-adjust",
"mcp__bursia-utils__color-palette",
"mcp__bursia-utils__color-scale",
"mcp__bursia-utils__color-blindness-simulate",
"mcp__bursia-utils__color-delta-e",
"mcp__bursia-utils__color-temperature",
"mcp__bursia-utils__json-parse-check",
"mcp__bursia-utils__json-pretty",
"mcp__bursia-utils__json-minify",
"mcp__bursia-utils__json-sort-keys",
"mcp__bursia-utils__json-canonicalize",
"mcp__bursia-utils__json-path",
"mcp__bursia-utils__json-patch-apply",
"mcp__bursia-utils__json-merge-patch-apply",
"mcp__bursia-utils__json-merge-patch-create",
"mcp__bursia-utils__json-flatten-paths",
"mcp__bursia-utils__json-unflatten",
"mcp__bursia-utils__json-schema-from-samples",
"mcp__bursia-utils__csv-parse",
"mcp__bursia-utils__csv-build",
"mcp__bursia-utils__yaml-parse",
"mcp__bursia-utils__yaml-build",
"mcp__bursia-utils__xml-parse",
"mcp__bursia-utils__ndjson-to-json",
"mcp__bursia-utils__json-to-ndjson",
"mcp__bursia-utils__dotenv-parse",
"mcp__bursia-utils__array-sort",
"mcp__bursia-utils__array-group-by",
"mcp__bursia-utils__array-chunk",
"mcp__bursia-utils__array-flatten",
"mcp__bursia-utils__array-set-ops",
"mcp__bursia-utils__array-pluck",
"mcp__bursia-utils__array-shuffle",
"mcp__bursia-utils__datetime-parse",
"mcp__bursia-utils__timestamp-convert",
"mcp__bursia-utils__timezone-shift",
"mcp__bursia-utils__timezone-info",
"mcp__bursia-utils__datetime-format",
"mcp__bursia-utils__date-add",
"mcp__bursia-utils__date-between",
"mcp__bursia-utils__age-calculate",
"mcp__bursia-utils__duration-parse",
"mcp__bursia-utils__duration-format",
"mcp__bursia-utils__business-days-add",
"mcp__bursia-utils__easter-sunday",
"mcp__bursia-utils__date-iso-week",
"mcp__bursia-utils__julian-day",
"mcp__bursia-utils__fiscal-period",
"mcp__bursia-utils__cron-next-runs",
"mcp__bursia-utils__sun-times",
"mcp__bursia-utils__moon-phase",
"mcp__bursia-utils__base64-encode",
"mcp__bursia-utils__base64-decode",
"mcp__bursia-utils__base64url-encode",
"mcp__bursia-utils__base64url-decode",
"mcp__bursia-utils__hex-encode",
"mcp__bursia-utils__hex-decode",
"mcp__bursia-utils__base32-encode",
"mcp__bursia-utils__base32-decode",
"mcp__bursia-utils__crockford32-encode",
"mcp__bursia-utils__crockford32-decode",
"mcp__bursia-utils__base58-encode",
"mcp__bursia-utils__base58-decode",
"mcp__bursia-utils__base58check-encode",
"mcp__bursia-utils__base58check-decode",
"mcp__bursia-utils__ascii85-encode",
"mcp__bursia-utils__ascii85-decode",
"mcp__bursia-utils__url-encode",
"mcp__bursia-utils__url-decode",
"mcp__bursia-utils__punycode-encode",
"mcp__bursia-utils__punycode-decode",
"mcp__bursia-utils__quoted-printable-encode",
"mcp__bursia-utils__quoted-printable-decode",
"mcp__bursia-utils__binary-encode",
"mcp__bursia-utils__binary-decode",
"mcp__bursia-utils__morse-encode",
"mcp__bursia-utils__morse-decode",
"mcp__bursia-utils__cipher-rot13",
"mcp__bursia-utils__unicode-escape",
"mcp__bursia-utils__unicode-unescape",
"mcp__bursia-utils__json-string-escape",
"mcp__bursia-utils__json-string-unescape",
"mcp__bursia-utils__data-uri-build",
"mcp__bursia-utils__data-uri-parse",
"mcp__bursia-utils__bech32-encode",
"mcp__bursia-utils__bech32-decode",
"mcp__bursia-utils__es-syllabify",
"mcp__bursia-utils__es-number-parse",
"mcp__bursia-utils__es-sentence-split",
"mcp__bursia-utils__vat-calculate",
"mcp__bursia-utils__margin-markup",
"mcp__bursia-utils__price-from-margin",
"mcp__bursia-utils__discount-calculate",
"mcp__bursia-utils__invoice-total",
"mcp__bursia-utils__currency-format",
"mcp__bursia-utils__money-allocate",
"mcp__bursia-utils__payment-fee",
"mcp__bursia-utils__bill-split",
"mcp__bursia-utils__salary-convert",
"mcp__bursia-utils__interest-rate-convert",
"mcp__bursia-utils__geo-haversine",
"mcp__bursia-utils__geo-vincenty",
"mcp__bursia-utils__geo-bearing",
"mcp__bursia-utils__geo-destination",
"mcp__bursia-utils__geo-midpoint",
"mcp__bursia-utils__geo-bounding-box",
"mcp__bursia-utils__geo-point-in-polygon",
"mcp__bursia-utils__geo-polygon-area",
"mcp__bursia-utils__geo-path-length",
"mcp__bursia-utils__geo-nearest",
"mcp__bursia-utils__geohash-encode",
"mcp__bursia-utils__geohash-decode",
"mcp__bursia-utils__coordinates-to-decimal",
"mcp__bursia-utils__coordinates-to-dms",
"mcp__bursia-utils__utm-from-latlon",
"mcp__bursia-utils__utm-to-latlon",
"mcp__bursia-utils__polyline-encode",
"mcp__bursia-utils__polyline-decode",
"mcp__bursia-utils__plus-code-encode",
"mcp__bursia-utils__plus-code-decode",
"mcp__bursia-utils__map-tile",
"mcp__bursia-utils__geojson-bbox",
"mcp__bursia-utils__h2o-rank",
"mcp__bursia-utils__hash-md5",
"mcp__bursia-utils__hash-sha1",
"mcp__bursia-utils__hash-sha224",
"mcp__bursia-utils__hash-sha256",
"mcp__bursia-utils__hash-sha384",
"mcp__bursia-utils__hash-sha512",
"mcp__bursia-utils__hash-sha512-256",
"mcp__bursia-utils__hash-sha3-224",
"mcp__bursia-utils__hash-sha3-256",
"mcp__bursia-utils__hash-sha3-384",
"mcp__bursia-utils__hash-sha3-512",
"mcp__bursia-utils__hash-blake2b512",
"mcp__bursia-utils__hash-blake2s256",
"mcp__bursia-utils__hash-ripemd160",
"mcp__bursia-utils__hash-sm3",
"mcp__bursia-utils__hash-shake128",
"mcp__bursia-utils__hash-shake256",
"mcp__bursia-utils__hash-keccak256",
"mcp__bursia-utils__checksum-crc32",
"mcp__bursia-utils__checksum-crc32c",
"mcp__bursia-utils__checksum-crc16",
"mcp__bursia-utils__checksum-adler32",
"mcp__bursia-utils__checksum-fnv1a32",
"mcp__bursia-utils__checksum-fnv1a64",
"mcp__bursia-utils__checksum-murmur3-32",
"mcp__bursia-utils__checksum-xxh32",
"mcp__bursia-utils__hmac-sha256",
"mcp__bursia-utils__hmac-sha512",
"mcp__bursia-utils__hmac-sha1",
"mcp__bursia-utils__hmac-sha384",
"mcp__bursia-utils__hmac-md5",
"mcp__bursia-utils__hmac-sha3-256",
"mcp__bursia-utils__hmac-verify",
"mcp__bursia-utils__kdf-pbkdf2",
"mcp__bursia-utils__kdf-hkdf",
"mcp__bursia-utils__hash-multi",
"mcp__bursia-utils__uuid-v4",
"mcp__bursia-utils__uuid-v7",
"mcp__bursia-utils__uuid-v5",
"mcp__bursia-utils__uuid-v3",
"mcp__bursia-utils__ulid-generate",
"mcp__bursia-utils__nanoid",
"mcp__bursia-utils__snowflake-decode",
"mcp__bursia-utils__snowflake-encode",
"mcp__bursia-utils__ksuid-decode",
"mcp__bursia-utils__random-token",
"mcp__bursia-utils__co-cufe-verify",
"mcp__bursia-utils__co-is-holiday",
"mcp__bursia-utils__co-business-days-add",
"mcp__bursia-utils__co-nit",
"mcp__bursia-utils__co-cedula-format",
"mcp__bursia-utils__co-dane-department",
"mcp__bursia-utils__es-number-to-words",
"mcp__bursia-utils__co-amount-in-words",
"mcp__bursia-utils__mx-amount-in-words",
"mcp__bursia-utils__es-ordinal",
"mcp__bursia-utils__co-cop-format",
"mcp__bursia-utils__co-cop-parse",
"mcp__bursia-utils__co-iva",
"mcp__bursia-utils__co-gmf",
"mcp__bursia-utils__co-uvt-convert",
"mcp__bursia-utils__es-slug",
"mcp__bursia-utils__es-name-case",
"mcp__bursia-utils__html-escape",
"mcp__bursia-utils__html-unescape",
"mcp__bursia-utils__html-to-text",
"mcp__bursia-utils__markdown-to-text",
"mcp__bursia-utils__markdown-render-html",
"mcp__bursia-utils__markdown-table",
"mcp__bursia-utils__markdown-toc",
"mcp__bursia-utils__markdown-links-extract",
"mcp__bursia-utils__html-meta-extract",
"mcp__bursia-utils__sitemap-build",
"mcp__bursia-utils__round-number",
"mcp__bursia-utils__stats-percentile",
"mcp__bursia-utils__stats-means",
"mcp__bursia-utils__stats-correlation",
"mcp__bursia-utils__stats-regression",
"mcp__bursia-utils__stats-moving-average",
"mcp__bursia-utils__stats-histogram",
"mcp__bursia-utils__stats-zscore",
"mcp__bursia-utils__stats-outliers-iqr",
"mcp__bursia-utils__percent-change",
"mcp__bursia-utils__percent-of",
"mcp__bursia-utils__fin-npv",
"mcp__bursia-utils__fin-irr",
"mcp__bursia-utils__fin-xirr",
"mcp__bursia-utils__fin-compound-interest",
"mcp__bursia-utils__fin-simple-interest",
"mcp__bursia-utils__fin-loan-payment",
"mcp__bursia-utils__fin-loan-amortization",
"mcp__bursia-utils__fin-tvm",
"mcp__bursia-utils__fin-cagr",
"mcp__bursia-utils__fin-roi",
"mcp__bursia-utils__fin-break-even",
"mcp__bursia-utils__is-prime",
"mcp__bursia-utils__prime-factorize",
"mcp__bursia-utils__int-gcd-lcm",
"mcp__bursia-utils__modular-arithmetic",
"mcp__bursia-utils__bigint-calc",
"mcp__bursia-utils__factorial",
"mcp__bursia-utils__combinatorics",
"mcp__bursia-utils__fibonacci",
"mcp__bursia-utils__radix-convert",
"mcp__bursia-utils__roman-numeral",
"mcp__bursia-utils__fraction-simplify",
"mcp__bursia-utils__fraction-arithmetic",
"mcp__bursia-utils__expression-evaluate",
"mcp__bursia-utils__matrix-multiply",
"mcp__bursia-utils__matrix-transpose",
"mcp__bursia-utils__matrix-determinant",
"mcp__bursia-utils__matrix-inverse",
"mcp__bursia-utils__linear-system-solve",
"mcp__bursia-utils__quadratic-solve",
"mcp__bursia-utils__number-to-words-en",
"mcp__bursia-utils__number-format-locale",
"mcp__bursia-utils__significant-figures",
"mcp__bursia-utils__onda-traducir",
"mcp__bursia-utils__x402-payment-decode",
"mcp__bursia-utils__x402-requirements-lint",
"mcp__bursia-utils__x402-replay-check",
"mcp__bursia-utils__x402-payment-response-verify",
"mcp__bursia-utils__mcp-server-json-lint",
"mcp__bursia-utils__robots-txt-check",
"mcp__bursia-utils__robots-ai-crawlers",
"mcp__bursia-utils__llms-txt-lint",
"mcp__bursia-utils__mcp-tools-lint",
"mcp__bursia-utils__agent-readiness-checklist",
"mcp__bursia-utils__recibo-verify",
"mcp__bursia-utils__case-camel",
"mcp__bursia-utils__case-pascal",
"mcp__bursia-utils__case-snake",
"mcp__bursia-utils__case-kebab",
"mcp__bursia-utils__case-constant",
"mcp__bursia-utils__case-dot",
"mcp__bursia-utils__case-train",
"mcp__bursia-utils__case-title",
"mcp__bursia-utils__case-sentence",
"mcp__bursia-utils__case-swap",
"mcp__bursia-utils__case-detect",
"mcp__bursia-utils__text-slug",
"mcp__bursia-utils__text-wrap",
"mcp__bursia-utils__text-indent",
"mcp__bursia-utils__text-normalize-whitespace",
"mcp__bursia-utils__unicode-normalize",
"mcp__bursia-utils__text-reverse",
"mcp__bursia-utils__text-pad",
"mcp__bursia-utils__ngrams",
"mcp__bursia-utils__lorem-ipsum",
"mcp__bursia-utils__levenshtein-distance",
"mcp__bursia-utils__damerau-levenshtein",
"mcp__bursia-utils__jaro-winkler",
"mcp__bursia-utils__dice-similarity",
"mcp__bursia-utils__soundex",
"mcp__bursia-utils__regex-test",
"mcp__bursia-utils__regex-replace",
"mcp__bursia-utils__regex-escape",
"mcp__bursia-utils__readability-score",
"mcp__bursia-utils__mixed-script-detect",
"mcp__bursia-utils__lines-sort",
"mcp__bursia-utils__lines-number",
"mcp__bursia-utils__lines-filter",
"mcp__bursia-utils__convert-length",
"mcp__bursia-utils__convert-mass",
"mcp__bursia-utils__convert-volume",
"mcp__bursia-utils__convert-area",
"mcp__bursia-utils__convert-speed",
"mcp__bursia-utils__convert-pressure",
"mcp__bursia-utils__convert-energy",
"mcp__bursia-utils__convert-power",
"mcp__bursia-utils__convert-data-size",
"mcp__bursia-utils__convert-time",
"mcp__bursia-utils__convert-angle",
"mcp__bursia-utils__convert-frequency",
"mcp__bursia-utils__convert-force",
"mcp__bursia-utils__convert-density",
"mcp__bursia-utils__convert-acceleration",
"mcp__bursia-utils__convert-flow-rate",
"mcp__bursia-utils__convert-torque",
"mcp__bursia-utils__convert-data-rate",
"mcp__bursia-utils__convert-temperature",
"mcp__bursia-utils__convert-fuel-economy",
"mcp__bursia-utils__convert-cooking",
"mcp__bursia-utils__sql-readonly-check",
"mcp__bursia-utils__mermaid-check",
"mcp__bursia-utils__dot-check",
"mcp__bursia-utils__html-tables-extract",
"mcp__bursia-utils__html-links-extract",
"mcp__bursia-utils__zlib-compress",
"mcp__bursia-utils__zlib-decompress",
"mcp__bursia-utils__stats-forecast",
"mcp__bursia-utils__fin-bond",
"mcp__bursia-utils__fin-option-price",
"mcp__bursia-utils__fin-risk-ratios",
"mcp__bursia-utils__card-brand-detect",
"mcp__bursia-utils__gtin-validate",
"mcp__bursia-utils__gtin-check-digit",
"mcp__bursia-utils__url-parse",
"mcp__bursia-utils__url-build",
"mcp__bursia-utils__url-normalize",
"mcp__bursia-utils__jwt-decode",
"mcp__bursia-utils__jwt-sign-hmac",
"mcp__bursia-utils__jwt-verify-hmac",
"mcp__bursia-utils__user-agent-parse",
"mcp__bursia-utils__http-headers-parse",
"mcp__bursia-utils__cookie-parse",
"mcp__bursia-utils__set-cookie-parse",
"mcp__bursia-utils__cache-control-parse",
"mcp__bursia-utils__content-type-parse",
"mcp__bursia-utils__accept-language-parse",
"mcp__bursia-utils__link-header-parse",
"mcp__bursia-utils__http-date",
"mcp__bursia-utils__basic-auth-header",
"mcp__bursia-utils__csp-parse",
"mcp__bursia-utils__semver-bump",
"mcp__bursia-utils__semver-satisfies",
"mcp__bursia-utils__semver-sort",
"mcp__bursia-utils__cidr-contains",
"mcp__bursia-utils__cidr-split",
"mcp__bursia-utils__ip-range-to-cidrs"
],
"deny": [
"mcp__bursia-utils__json-omit",
"mcp__bursia-utils__array-dedupe",
"mcp__bursia-utils__text-truncate",
"mcp__bursia-utils__text-dedent",
"mcp__bursia-utils__remove-accents",
"mcp__bursia-utils__text-invisible-strip",
"mcp__bursia-utils__lines-dedupe"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as bursia-utils. Review it before you use it.
Capability tags behind 43 rules
- mcp__bursia-utils__idempotency-key outbound
- mcp__bursia-utils__tool-definition-convert outbound
- mcp__bursia-utils__color-scale outbound
- mcp__bursia-utils__json-pointer-get private-data
- mcp__bursia-utils__json-diff-patch private-data
- mcp__bursia-utils__calendar-month private-data
- mcp__bursia-utils__data-uri-parse outbound
- mcp__bursia-utils__geo-haversine outbound
- mcp__bursia-utils__geo-vincenty outbound
- mcp__bursia-utils__geo-bearing outbound
- mcp__bursia-utils__sitemap-build outbound
- mcp__bursia-utils__percent-change outbound
- mcp__bursia-utils__openapi-summary private-data, untrusted-input
- mcp__bursia-utils__extract-emails private-data, untrusted-input
- mcp__bursia-utils__extract-urls untrusted-input
- mcp__bursia-utils__extract-mentions private-data, untrusted-input
- mcp__bursia-utils__convert-length outbound
- mcp__bursia-utils__convert-mass outbound
- mcp__bursia-utils__convert-volume outbound
- mcp__bursia-utils__convert-area outbound
- mcp__bursia-utils__convert-speed outbound
- mcp__bursia-utils__convert-pressure outbound
- mcp__bursia-utils__convert-energy outbound
- mcp__bursia-utils__convert-power outbound
- mcp__bursia-utils__convert-data-size outbound
- mcp__bursia-utils__convert-time outbound
- mcp__bursia-utils__convert-angle outbound
- mcp__bursia-utils__convert-frequency outbound
- mcp__bursia-utils__convert-force outbound
- mcp__bursia-utils__convert-density outbound
- mcp__bursia-utils__convert-acceleration outbound
- mcp__bursia-utils__convert-flow-rate outbound
- mcp__bursia-utils__convert-torque outbound
- mcp__bursia-utils__convert-data-rate outbound
- mcp__bursia-utils__convert-temperature outbound
- mcp__bursia-utils__convert-fuel-economy outbound
- mcp__bursia-utils__convert-cooking outbound
- mcp__bursia-utils__url-parse outbound
- mcp__bursia-utils__url-normalize outbound
- mcp__bursia-utils__url-resolve untrusted-input
- mcp__bursia-utils__query-parse untrusted-input
- mcp__bursia-utils__mime-lookup private-data
- mcp__bursia-utils__http-status untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.github.soyeladice-svg/bursia-utils/verify?hash=42a87d15eccebe2cf59ddbeaa8fa9ad20bcbe6a48057b837669c38606c5ded05" | jq -e '.changed == false'Pinned hash 42a87d15ecce, from Nov 1, 2026, 00:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.soyeladice-svg/bursia-utils/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.soyeladice-svg/bursia-utils)Source: MCP Registry. Synced Nov 1, 2026, 00:17 UTC.