Skip to content

net.programmes/developer-tools

by programmes.net · remote · no sign-in to list tools · v1.0.1 · published by net.programmes

65+ free in-browser developer tools (JSON, Base64, JWT, hash, regex…) callable over MCP.

Final · 1Changes · 745 high findings

87 tools: 1 do something that can't be undone, 74 change things and 12 only read.

Scanned Oct 21, 2026

36 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http developer-tools https://programmes.net/mcp

Findings

Matches of fixed checks, with the text they matched.

5 high31 warn
  • The title refers to ".env".

    Matched text

    title: ".env to JSON Converter"

    What this check looks for
  • The annotations title refers to ".env".

    Matched text

    annotations.title: ".env to JSON Converter"

    What this check looks for
  • The description refers to ".env".

    Matched text

    description: "...rnings. Operations: "to-json" — Parse a .env file into a JSON object (last duplicate..."

    What this check looks for
  • The input schema at properties.operation.description refers to ".env".

    Matched text

    inputSchema.properties.operation.description: "to-json — Parse a .env file into a JSON object (last duplicate..."

    What this check looks for
  • The input schema at properties.input.description refers to ".env".

    Matched text

    inputSchema.properties.input.description: "to-json: The .env file contents. to-env: A JSON object; n..."

    What this check looks for
  • Warnuuid

    The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
Show 30 more findings
  • The server marks "password" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • Warnrandom

    The server marks "random" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "timestamp" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warncolor

    The server marks "color" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "number-base" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warncase

    The server marks "case" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warnlorem

    The server marks "lorem" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "json-csv" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "yaml-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "json-ts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "gitignore" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • Warnchmod

    The server marks "chmod" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "curl-converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "color-palette" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • Warntotp

    The server marks "totp" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • Warnulid

    The server marks "ulid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • Warnascii

    The server marks "ascii" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "roman-numeral" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "markdown-table" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "css-units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "json-xml" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "duration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warnnanoid

    The server marks "nanoid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "env-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "toml-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "html-jsx" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warnjsonc

    The server marks "jsonc" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "docker-compose" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "punycode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "html-markdown" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

87 tools

Can't be undone 1Claude Code: ask
  • css-unitsConvert a numeric value between CSS units (px, rem, em, pt, pc, %).1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The input addresses people (input.options.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "css-units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a numeric value between CSS units (px, rem, em, pt, pc, %). Operations: "convert" — Convert a numeric value from one CSS unit to another.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: CSS Unit Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 74Claude Code: ask
  • asciiConvert text to and from character codes in several bases.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 "ascii" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert text to and from character codes in several bases. Operations: "to-codes" — Convert text to character codes.; "from-codes" — Convert character codes back to text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: ASCII Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • aspect-ratioReduce a ratio or resolution to lowest terms, name the nearest common ratio, solve the missing dimension and write CSS aspect-ratio.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
    Reduce a ratio or resolution to lowest terms, name the nearest common ratio, solve the missing dimension and write CSS aspect-ratio. Operations: "analyze" — Reduce a ratio or size (16:9, 1920x1080, 2.39) and return presets, CSS and whole-pixel sizes.; "solve" — Given a ratio and one dimension, compute the other.; "fit" — Largest size at this ratio that fits inside (contain) or covers (cover) a box.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Aspect Ratio Calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • base-nEncode and decode UTF-8 text as Base32 (RFC 4648 + hex), Crockford Base32, Base58 (Bitcoin), Ascii85 or Z85.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
    Encode and decode UTF-8 text as Base32 (RFC 4648 + hex), Crockford Base32, Base58 (Bitcoin), Ascii85 or Z85. Operations: "encode" — Encode UTF-8 text in the chosen scheme.; "decode" — Decode to UTF-8 text (binary payloads are returned as hex).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Base32, Base58 & Base85 Encoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • base64Encode and decode text in Base64, Base64URL, Base32, Base58, Base85 and 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
    Encode and decode text in Base64, Base64URL, Base32, Base58, Base85 and hex. Operations: "encode" — Encode text into the chosen format.; "decode" — Decode text from the chosen format back to plain text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Base64 Encoder & Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • bcryptHash and verify passwords with bcrypt.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
    Hash and verify passwords with bcrypt. Operations: "hash" — Hash a password with bcrypt at the given cost.; "verify" — Verify a plaintext password against a bcrypt hash.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: hash returns a different result on each call.

    Annotations the server declares

    • title: Bcrypt Generator & Verifier
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • caseConvert text between camelCase, snake_case, kebab-case and more.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" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert text between camelCase, snake_case, kebab-case and more. Operations: "convert" — Convert text to a single chosen case.; "all" — Return every supported case transform at once.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Case Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • char-inspectorBreak a string into per-character Unicode details.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
    Break a string into per-character Unicode details. Operations: "inspect" — Inspect each character of a string (code point, category, bytes).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Unicode Character Inspector
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • chmodConvert between octal and symbolic Unix file permissions.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 "chmod" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between octal and symbolic Unix file permissions. Operations: "octal-to-symbolic" — Convert octal permissions (e.g. "755") to a symbolic string and description.; "symbolic-to-octal" — Convert a symbolic permission string (e.g. "rwxr-xr-x") to octal.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: chmod Calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • cidrParse a CIDR block into its network, broadcast and host 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
    Parse a CIDR block into its network, broadcast and host range. Operations: "calculate" — Calculate the network, broadcast, mask and host range for a CIDR block.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: IP Subnet Calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • colorConvert colors between HEX, RGB, HSL, HSV and CMYK.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 "color" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert colors between HEX, RGB, HSL, HSV and CMYK. Operations: "convert" — Convert a HEX color to every supported color space.; "palette" — Generate a color harmony palette from a base color.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Color Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • color-paletteGenerate harmony, shade and tint palettes from a base HEX color.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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate harmony, shade and tint palettes from a base HEX color. Operations: "generate" — Generate harmony, shade and tint palettes from a base HEX color.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Color Palette Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • compressgzip, deflate (zlib) or raw-deflate text to Base64 or hex, and decompress it back.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
    gzip, deflate (zlib) or raw-deflate text to Base64 or hex, and decompress it back. Operations: "compress" — Compress UTF-8 text with gzip, deflate (zlib) or raw deflate.; "decompress" — Decompress Base64 or hex gzip/deflate data back to text (output up to 256 KB).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Gzip & Deflate Compressor
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • contrastCheck WCAG contrast between a foreground and background color.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
    Check WCAG contrast between a foreground and background color. Operations: "check" — Compute the contrast ratio and WCAG pass/fail for a color pair.; "best-text" — Pick black or white text for the best contrast on a background.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Color Contrast Checker
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • cspParse a Content-Security-Policy, explain each directive and flag weaknesses (unsafe-inline, wildcards, missing object-src/base-uri/frame-ancestors…).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
    Parse a Content-Security-Policy, explain each directive and flag weaknesses (unsafe-inline, wildcards, missing object-src/base-uri/frame-ancestors…). Operations: "evaluate" — Parse a CSP header and return its directives and findings by severity.; "harden" — Add the low-risk directives a policy is missing (object-src 'none', base-uri, frame-ancestors, form-action) and return ready-to-paste header, meta, nginx and Apache forms.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: CSP Evaluator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • css-minifyMinify or beautify CSS.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
    Minify or beautify CSS. Operations: "minify" — Minify CSS (strip comments and whitespace).; "beautify" — Beautify CSS (one declaration per line, indented).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: CSS Minifier & Beautifier
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • curl-converterConvert a curl command into fetch / Python / Node snippets.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 "curl-converter" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a curl command into fetch / Python / Node snippets. Operations: "convert" — Parse a curl command and generate code snippets.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: cURL Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • data-sizeParse a data size and convert it to bytes plus decimal and binary units.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
    Parse a data size and convert it to bytes plus decimal and binary units. Operations: "convert" — Parse a data size and convert it to bytes, decimal and binary units.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Data Size Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • date-calcDays, months and business days between dates, add or subtract durations, ISO week numbers and day of year, and DST-aware elapsed time between local times.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
    Days, months and business days between dates, add or subtract durations, ISO week numbers and day of year, and DST-aware elapsed time between local times. Operations: "diff" — Difference between two dates in years/months/days, total days, weeks and business days.; "add" — Add or subtract a duration ("1y 2m", "-90d", "P2W") or a number of business days.; "info" — Weekday, day of year, ISO week, quarter and leap year for a date (plus Unix time of local midnight).; "elapsed" — Exact elapsed time between two local date-times, following DST in each time zone.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Date Calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • docker-composeConvert docker run commands to a Docker Compose file and Compose services back.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 "docker-compose" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert docker run commands to a Docker Compose file and Compose services back. Operations: "to-compose" — Convert one or more docker run commands to Compose services (ports, volumes, env, name, restart, network, command).; "to-run" — Convert a Compose file (or one service) to a docker run command per service.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: docker run to Compose Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • durationConvert between ISO 8601 durations, seconds, clock time and human text like "1h30m" or "90 minutes".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 "duration" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between ISO 8601 durations, seconds, clock time and human text like "1h30m" or "90 minutes". Operations: "convert" — Parse any duration (ISO 8601, 1h30m, 90 minutes, 1:30:00, seconds) into every representation.; "to-iso" — Convert any duration to a canonical ISO 8601 duration string.; "humanize" — Render a duration as words ("1 hour 30 minutes") or compact text ("1h 30m").. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Duration Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • env-jsonConvert dotenv files to JSON and back, with dotenv-compatible quoting, escapes, comments, export prefixes and multi-line values, plus validation warnings.6 findings

    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

    • High

      The title refers to ".env".

      Matched text

      title: ".env to JSON Converter"

      What this check looks for
    • High

      The annotations title refers to ".env".

      Matched text

      annotations.title: ".env to JSON Converter"

      What this check looks for
    • High

      The description refers to ".env".

      Matched text

      description: "...rnings. Operations: "to-json" — Parse a .env file into a JSON object (last duplicate..."

      What this check looks for
    • High

      The input schema at properties.operation.description refers to ".env".

      Matched text

      inputSchema.properties.operation.description: "to-json — Parse a .env file into a JSON object (last duplicate..."

      What this check looks for
    • High

      The input schema at properties.input.description refers to ".env".

      Matched text

      inputSchema.properties.input.description: "to-json: The .env file contents. to-env: A JSON object; n..."

      What this check looks for
    • Warn

      The server marks "env-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert dotenv files to JSON and back, with dotenv-compatible quoting, escapes, comments, export prefixes and multi-line values, plus validation warnings. Operations: "to-json" — Parse a .env file into a JSON object (last duplicate wins).; "to-env" — Write a JSON object as .env lines, quoting values only where needed.; "validate" — Lint a .env file: duplicates, invalid names, unterminated quotes, stray # comments.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: .env to JSON Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • gitignoreGenerate a combined .gitignore from template keys.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 "gitignore" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a combined .gitignore from template keys. Operations: "generate" — Combine one or more template keys into a .gitignore.; "templates" — List the available .gitignore template keys.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: .gitignore Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • glob-testerTest .gitignore or glob patterns against a list of paths and see which rule matched each one.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
    Test .gitignore or glob patterns against a list of paths and see which rule matched each one. Operations: "test" — Match paths against gitignore rules (negation, anchoring, **, directory-only) or plain globs.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Glob & .gitignore Tester
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hashCompute MD5, SHA-1/256/384/512, CRC32 and HMAC digests.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
    Compute MD5, SHA-1/256/384/512, CRC32 and HMAC digests. Operations: "hash" — Hash text with the chosen algorithm.; "hmac" — Compute an HMAC digest (SHA algorithms only).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Hash Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hmacSign a message with HMAC using a secret key and SHA-2 algorithm.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
    Sign a message with HMAC using a secret key and SHA-2 algorithm. Operations: "sign" — Compute an HMAC signature for a message.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HMAC Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • htmlFormat, minify and validate 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
    Format, minify and validate HTML. Operations: "format" — Pretty-print HTML.; "minify" — Minify HTML (strip comments and collapse whitespace).; "validate" — Check HTML for unclosed/mismatched tags.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HTML Formatter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • html-entityEncode and decode HTML entities (named, decimal, 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
    Encode and decode HTML entities (named, decimal, hex). Operations: "encode" — Encode text into HTML entities.; "decode" — Decode HTML entities back to plain text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HTML Entity Encoder & Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • html-jsxConvert HTML or SVG markup to React JSX: className/htmlFor, camelCased SVG attributes, style objects, self-closing tags, JSX comments.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-jsx" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert HTML or SVG markup to React JSX: className/htmlFor, camelCased SVG attributes, style objects, self-closing tags, JSX comments. Operations: "convert" — Convert an HTML fragment or document to JSX, with warnings for anything to review.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HTML to JSX Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • html-markdownConvert HTML to Markdown (CommonMark + GitHub tables), dropping scripts and styles.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-markdown" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert HTML to Markdown (CommonMark + GitHub tables), dropping scripts and styles. Operations: "convert" — Convert an HTML page or fragment to Markdown: headings, lists, links, images, code blocks, tables and blockquotes.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HTML to Markdown
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • id-decoderDecode IDs: Snowflake, MongoDB ObjectId, KSUID, TypeID, ULID, UUID and CUID2 — timestamp, machine fields and randomness.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
    Decode IDs: Snowflake, MongoDB ObjectId, KSUID, TypeID, ULID, UUID and CUID2 — timestamp, machine fields and randomness. Operations: "decode" — Detect each ID's format and take it apart (one ID per line, up to 200).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: ID Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • image-base64Build and parse base64 data URIs and embed snippets.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
    Build and parse base64 data URIs and embed snippets. Operations: "build-snippets" — Build HTML/CSS/Markdown snippets from an existing data URI.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Image to Base64
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ipv6Expand and compress IPv6 addresses (RFC 5952), classify them (link-local, ULA, multicast, documentation…), extract embedded IPv4, do prefix and range maths, and build ip6.arpa name…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
    Expand and compress IPv6 addresses (RFC 5952), classify them (link-local, ULA, multicast, documentation…), extract embedded IPv4, do prefix and range maths, and build ip6.arpa names. Operations: "analyze" — Analyse an address, prefix or range: canonical and expanded forms, type, embedded IPv4, network bounds, reverse DNS.; "compress" — Rewrite each address in its RFC 5952 canonical (shortest) form.; "expand" — Rewrite each address with all eight 4-digit groups.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: IPv6 Address Tool
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jsonFormat, minify, validate and convert 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
    Format, minify, validate and convert JSON. Operations: "format" — Pretty-print JSON with a configurable indent.; "minify" — Strip all insignificant whitespace from JSON.; "validate" — Check whether the input is valid JSON, reporting the error location.; "repair" — Best-effort repair of common JSON mistakes (trailing commas, single quotes, unquoted keys).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON Formatter & Validator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-csvConvert between JSON and CSV.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 "json-csv" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between JSON and CSV. Operations: "json-to-csv" — Convert a JSON array/object to CSV.; "csv-to-json" — Convert CSV to a JSON array.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON / CSV Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-schemaInfer a draft-07 JSON Schema from sample 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
    Infer a draft-07 JSON Schema from sample JSON. Operations: "generate" — Infer a draft-07 JSON Schema from sample JSON. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON Schema Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-tsGenerate TypeScript type declarations from a JSON sample.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 "json-ts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate TypeScript type declarations from a JSON sample. Operations: "generate" — Infer TypeScript interfaces/types from JSON.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON to TypeScript
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-xmlConvert between JSON and XML.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 "json-xml" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between JSON and XML. Operations: "to-xml" — Convert JSON to XML.; "to-json" — Convert XML to JSON.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON to XML Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jsoncConvert JSON5, JSONC (tsconfig, VS Code settings) and relaxed JSON to strict JSON, or reformat them with comments kept, reporting every non-JSON feature used.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 "jsonc" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert JSON5, JSONC (tsconfig, VS Code settings) and relaxed JSON to strict JSON, or reformat them with comments kept, reporting every non-JSON feature used. Operations: "to-json" — Convert JSON5 / JSONC to strict RFC 8259 JSON.; "format" — Re-print JSON / JSON5 / JSONC tidily as JSONC or JSON5, keeping comments.; "validate" — Check whether text is valid JSON5 and list which non-JSON features it uses.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON5 / JSONC to JSON
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jwtDecode JWT header and payload (no signature verification).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
    Decode JWT header and payload (no signature verification). Operations: "decode" — Decode a JWT into its header, payload and signature.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JWT Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jwt-encodeSign a JSON payload into a JWT with an HMAC secret.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
    Sign a JSON payload into a JWT with an HMAC secret. Operations: "sign" — Sign a JSON payload into a JWT using an HMAC secret.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JWT Encoder & Signer
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • loremGenerate placeholder text in several styles.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" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate placeholder text in several styles. Operations: "generate" — Generate lorem ipsum (or themed) placeholder text.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: Lorem Ipsum Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • markdownRender Markdown to HTML, build a TOC and compute statistics.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
    Render Markdown to HTML, build a TOC and compute statistics. Operations: "render" — Render GitHub-flavored Markdown to sanitized HTML.; "toc" — Extract a table of contents from Markdown headers.; "stats" — Compute document statistics for Markdown/plain text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Markdown Preview
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • markdown-tableConvert CSV or TSV rows into a Markdown table.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 "markdown-table" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert CSV or TSV rows into a Markdown table. Operations: "generate" — Build a Markdown table from delimited rows.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Markdown Table Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • mimeLook up MIME types by file extension or MIME type.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
    Look up MIME types by file extension or MIME type. Operations: "lookup" — Search MIME types by extension or MIME type.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: MIME Type Lookup
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • morse-codeTranslate text to and from Morse 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
    Translate text to and from Morse code. Operations: "encode" — Convert text to Morse code.; "decode" — Convert Morse code to text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Morse Code Translator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • nanoidGenerate NanoIDs or custom-alphabet random IDs with crypto randomness, plus a collision-probability estimate.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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate NanoIDs or custom-alphabet random IDs with crypto randomness, plus a collision-probability estimate. Operations: "generate" — Generate one or more random IDs (default: 21-char URL-safe NanoID).; "collision" — Estimate how long until a 1% collision chance for an alphabet size, ID length and rate.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: NanoID Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • number-baseConvert numbers between binary, octal, decimal and 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 "number-base" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert numbers between binary, octal, decimal and hex. Operations: "convert" — Convert a number from one base to all supported bases.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Number Base Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • passwordGenerate strong random passwords and estimate their strength.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 "password" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate strong random passwords and estimate their strength. Operations: "generate" — Generate a cryptographically random password.; "strength" — Estimate the entropy and strength bucket of a password.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: Password Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • punycodeConvert internationalised domain names to and from Punycode (RFC 3492): bücher.example ⇄ xn--bcher-kva.example.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" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert internationalised domain names to and from Punycode (RFC 3492): bücher.example ⇄ xn--bcher-kva.example. Operations: "to-ascii" — Encode each Unicode label as an xn-- label (one domain, email or URL per line; labels are NFC-normalised and lowercased).; "to-unicode" — Decode each xn-- label back to Unicode (one domain, email or URL per line).; "encode" — Encode one string with the bare RFC 3492 algorithm (no xn-- prefix, case kept).; "decode" — Decode one bare Punycode string (no xn-- prefix) with the RFC 3492 algorithm.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Punycode & IDN Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • randomGenerate cryptographically secure random strings.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" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate cryptographically secure random strings. Operations: "generate" — Generate a secure random string from a chosen pattern.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: Random String Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • regexTest a regex against a string and apply replacements.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
    Test a regex against a string and apply replacements. Operations: "test" — Find all matches of a regex pattern in a test string.; "replace" — Replace regex matches in a string.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Regex Tester
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • robots-txtBuild robots.txt that treats search engines, AI answer bots and AI training crawlers separately; validate llms.txt.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
    Build robots.txt that treats search engines, AI answer bots and AI training crawlers separately; validate llms.txt. Operations: "build" — Build robots.txt: allow or block search engines, AI answer engines/assistants and AI training crawlers (named), with Content-Signal and Sitemap lines.; "validate-llms" — Check an llms.txt file against llmstxt.org: one H1, a > summary, H2 sections of Markdown link lists.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: robots.txt Builder & llms.txt Validator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • roman-numeralConvert between integers and Roman numerals.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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between integers and Roman numerals. Operations: "to-roman" — Convert an integer to a Roman numeral.; "from-roman" — Convert a Roman numeral to an integer.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Roman Numeral Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • saml-decoderDecode a SAMLRequest or SAMLResponse (Base64, or deflate + Base64) and summarise it.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
    Decode a SAMLRequest or SAMLResponse (Base64, or deflate + Base64) and summarise it. Signatures are not verified. Operations: "decode" — Decode a SAML message and return its issuer, status, NameID, audience, conditions, validity window, attributes and pretty-printed XML. Signatures are reported, never verified.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: decode returns a different result on each call.

    Annotations the server declares

    • title: SAML Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • security-headersGrade pasted HTTP response headers (HSTS, CSP, nosniff, framing, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP, cookies) A+ to 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
    Grade pasted HTTP response headers (HSTS, CSP, nosniff, framing, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP, cookies) A+ to F. Parses text only; never fetches a URL. Operations: "grade" — Grade a raw header block and explain each check.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Security Headers Checker
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • semverParse, compare, sort and bump Semantic Versions, and test versions against npm-style 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
    Parse, compare, sort and bump Semantic Versions, and test versions against npm-style ranges. Operations: "parse" — Parse a SemVer 2.0.0 version into its components.; "compare" — Compare two versions by SemVer precedence (-1, 0 or 1).; "satisfies" — Test whether a version satisfies a range (^, ~, x, hyphen, ||).; "max-satisfying" — Find the highest and lowest versions in a list that satisfy a range.; "explain-range" — Desugar a range into plain comparators (e.g. ^1.2.3 → >=1.2.3 <2.0.0-0).; "sort" — Sort versions by SemVer precedence; invalid entries are listed separately.; "bump" — Increment a version like `npm version <release>`.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: SemVer Calculator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • slugifyTurn arbitrary text into a clean, URL-safe slug.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
    Turn arbitrary text into a clean, URL-safe slug. Operations: "slugify" — Generate a URL slug from text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Slugify
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sort-linesSort, reverse, deduplicate and clean up lines of 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
    Sort, reverse, deduplicate and clean up lines of text. Operations: "process" — Sort, deduplicate and clean lines of text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Sort & Dedupe Lines
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sqlFormat and minify SQL.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
    Format and minify SQL. Operations: "beautify" — Beautify SQL with newlines before clauses.; "minify" — Minify SQL to a single line.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: SQL Formatter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • string-escapeEscape and unescape strings for JSON, JS, HTML, URL and regex.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
    Escape and unescape strings for JSON, JS, HTML, URL and regex. Operations: "escape" — Escape a string for the chosen context.; "unescape" — Unescape a string from the chosen context.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: String Escape & Unescape
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • svg-data-uriMinify an SVG and encode it as a compact percent-encoded (or base64) data URI, with background-image and mask-image CSS.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
    Minify an SVG and encode it as a compact percent-encoded (or base64) data URI, with background-image and mask-image CSS. Operations: "encode" — Optimise an SVG and return url-encoded and base64 data URIs, sizes and CSS snippets.; "decode" — Decode a data:image/svg+xml URI (percent-encoded or base64) back to SVG markup.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: SVG to Data URI
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • timestampConvert and inspect Unix timestamps and dates.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 "timestamp" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert and inspect Unix timestamps and dates. Operations: "to-date" — Convert a Unix timestamp (seconds) to a full date breakdown.; "parse-date" — Auto-detect and parse a date/timestamp string.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: to-date returns a different result on each call.

    Annotations the server declares

    • title: Unix Timestamp Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • toml-jsonConvert TOML 1.0 to JSON and JSON to TOML, reporting anything that cannot round-trip.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 "toml-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert TOML 1.0 to JSON and JSON to TOML, reporting anything that cannot round-trip. Operations: "to-json" — Parse TOML and return pretty-printed JSON.; "to-toml" — Convert a JSON object to TOML (nulls are dropped with a warning).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: TOML to JSON Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • totpGenerate a time-based one-time password (TOTP) from a base32 secret.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 "totp" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a time-based one-time password (TOTP) from a base32 secret. Operations: "generate" — Generate the current TOTP code for a base32 secret.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: TOTP / 2FA Code Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ulidGenerate a lexicographically sortable ULID.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 "ulid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a lexicographically sortable ULID. Operations: "generate" — Generate a new ULID.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: generate returns a different result on each call.

    Annotations the server declares

    • title: ULID Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • urlParse, validate and normalize URLs.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
    Parse, validate and normalize URLs. Operations: "parse" — Break a URL into its component parts.; "validate" — Validate a URL and run basic security/heuristic checks.; "normalize" — Normalize a URL (drop default ports, sort query params, strip trailing slash).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: URL Encoder & Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • url-encodePercent-encode and decode URL strings.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-encode and decode URL strings. Operations: "encode" — Percent-encode a string.; "decode" — Decode a percent-encoded string.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Batch URL Encoder & Parser
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • user-agentParse a User-Agent string into browser, engine, OS and device.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
    Parse a User-Agent string into browser, engine, OS and device. Operations: "parse" — Parse a User-Agent string into browser, engine, OS and device details.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: User-Agent Parser
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • utmBuild campaign URLs with utm_* parameters, parse and lint tagged links, and strip UTM and click-ID tracking parameters.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
    Build campaign URLs with utm_* parameters, parse and lint tagged links, and strip UTM and click-ID tracking parameters. Operations: "build" — Add UTM parameters to a URL, normalising case and spaces, and lint the result.; "parse" — Split a URL into UTM tags, ad click IDs and other parameters, with warnings.; "strip" — Remove utm_* and click-ID parameters (gclid, fbclid, msclkid…) from a URL.; "batch" — Tag many URLs (one per line) with the same UTM parameters.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: UTM Link Builder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • uuidGenerate and inspect UUIDs.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" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate and inspect UUIDs. Operations: "v4" — Generate one or more random (v4) UUIDs.; "v3" — Generate a name-based (v3 / MD5) UUID.; "parse" — Parse a UUID and report its version, variant and (where present) timestamp.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: v4 returns a different result on each call.

    Annotations the server declares

    • title: UUID Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • wifi-qrBuild the standard WIFI: payload string for a WiFi QR 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
    Build the standard WIFI: payload string for a WiFi QR code. Operations: "payload" — Build the WIFI: payload string a phone scans to auto-join a network.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: WiFi QR Code Generator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • x509Decode PEM/DER X.509 certificates: subject, issuer, validity, SANs, key type/size, signature algorithm, extensions and fingerprints.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
    Decode PEM/DER X.509 certificates: subject, issuer, validity, SANs, key type/size, signature algorithm, extensions and fingerprints. Operations: "decode" — Decode every certificate in a PEM bundle (or one bare base64 DER).. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: decode returns a different result on each call.

    Annotations the server declares

    • title: X.509 Certificate Decoder
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • xmlPretty-print or minify already-serialized XML, and highlight it.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
    Pretty-print or minify already-serialized XML, and highlight it. Operations: "format" — Pretty-print XML with the chosen indent (server-safe string transform).; "minify" — Collapse whitespace between XML tags (server-safe string transform).. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: XML Formatter & Validator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • yaml-jsonConvert between YAML and JSON.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 "yaml-json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between YAML and JSON. Operations: "yaml-to-json" — Convert YAML to JSON.; "json-to-yaml" — Convert JSON to YAML.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: YAML / JSON Converter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 12Claude Code: allow
  • cronDescribe cron expressions and compute upcoming run times.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
    Describe cron expressions and compute upcoming run times. Operations: "describe" — Produce a human-readable description of a cron expression.; "next-runs" — Compute the next N run times for a cron expression.. Call with "operation" plus "input" (and "options" where relevant). Not repeatable: next-runs returns a different result on each call.

    Annotations the server declares

    • title: Cron Expression Parser
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • diffCompute a line-by-line diff between two texts.No findings

    Why it is in this group

    • The name "diff" says "diff": a word for reading.
    Description, as the server wrote it
    Compute a line-by-line diff between two texts. Operations: "compare" — Diff two texts and return the lines plus statistics.; "unified" — Produce a unified-diff text between two inputs.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Diff Checker
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • http-statusLook up and search HTTP status codes.No findings

    Why it is in this group

    • The name "http-status" says "status": a word for reading.
    Description, as the server wrote it
    Look up and search HTTP status codes. Operations: "lookup" — Look up a single status code by number.; "search" — Search status codes by number, name or description.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: HTTP Status Code Lookup
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ieee754Inspect IEEE 754 float32/float64: sign, exponent and mantissa bits, hex, the exact stored value and the rounding error.No findings

    Why it is in this group

    • The description's first verb is "inspect": a word for reading.
    Description, as the server wrote it
    Inspect IEEE 754 float32/float64: sign, exponent and mantissa bits, hex, the exact stored value and the rounding error. Operations: "inspect" — Read a decimal (0.1, -2.5e-8, Infinity, NaN) or a bit pattern (0x3DCCCCCD, 32 or 64 binary digits) and show how float32 and float64 store it.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: IEEE 754 Float Inspector
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-diffCompare two JSON documents and report added, removed and changed values.No findings

    Why it is in this group

    • The name "json-diff" says "diff": a word for reading.
    Description, as the server wrote it
    Compare two JSON documents and report added, removed and changed values. Operations: "diff" — Diff two JSON documents by path.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON Diff
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json-schema-validatorValidate JSON data against a JSON Schema (drafts 2020-12, 2019-09, 7 and 4) and list each error with its data path and schema keyword.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
    Validate JSON data against a JSON Schema (drafts 2020-12, 2019-09, 7 and 4) and list each error with its data path and schema keyword. Operations: "validate" — Validate JSON data against a JSON Schema.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSON Schema Validator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jsonpathQuery a JSON document with a JSONPath expression.No findings

    Why it is in this group

    • The description's first verb is "query": a word for reading.
    Description, as the server wrote it
    Query a JSON document with a JSONPath expression. Operations: "query" — Evaluate a JSONPath expression against a JSON document.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: JSONPath Evaluator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • key-inspectorInspect a CSR (subject, SANs, key, signature check), OpenSSH public keys (type, bits, ssh-keygen fingerprints) or a JWK / JWKS (RFC 7638 thumbprint, PEM and OpenSSH forms).No findings

    Why it is in this group

    • The description's first verb is "inspect": a word for reading.
    Description, as the server wrote it
    Inspect a CSR (subject, SANs, key, signature check), OpenSSH public keys (type, bits, ssh-keygen fingerprints) or a JWK / JWKS (RFC 7638 thumbprint, PEM and OpenSSH forms). Private keys are refused. Operations: "inspect" — Inspect a PEM CSR or public key, OpenSSH public key lines (authorized_keys, known_hosts) or a JWK / JWK Set.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: CSR, SSH Key & JWK Inspector
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • luhnValidate check digits: Luhn card numbers (with brand), IBAN mod-97, ISBN-10/13 and EAN/UPC barcodes.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
    Validate check digits: Luhn card numbers (with brand), IBAN mod-97, ISBN-10/13 and EAN/UPC barcodes. Format only — nothing is looked up or stored. Operations: "validate" — Validate a number, auto-detecting its type or using the one you choose.; "check-digit" — Compute the Luhn or GS1 (EAN/UPC) check digit to append to a payload.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Luhn, IBAN & ISBN Validator
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • password-strengthAnalyze a password and estimate its entropy, strength and crack time.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
    Analyze a password and estimate its entropy, strength and crack time. Operations: "analyze" — Analyze a password and estimate its entropy, strength and crack time.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Password Strength Checker
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • text-cleanupFind and remove invisible Unicode (zero-width, bidi/Trojan Source, tag-character smuggling), fix line endings, trailing whitespace, tabs and smart quotes, and normalise Unicode.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
    Find and remove invisible Unicode (zero-width, bidi/Trojan Source, tag-character smuggling), fix line endings, trailing whitespace, tabs and smart quotes, and normalise Unicode. Operations: "scan" — Report invisible and special characters, hidden tag-character text, unterminated bidi controls, line endings and normalisation.; "clean" — Apply clean-ups and return the text plus counts of every change.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Text Cleanup & Invisible Characters
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • word-countCount words/characters and compute readability statistics.No findings

    Why it is in this group

    • The name "word-count" says "count": a word for reading.
    Description, as the server wrote it
    Count words/characters and compute readability statistics. Operations: "count" — Compute basic text statistics (words, characters, sentences, etc.).; "readability" — Compute readability scores (Flesch, SMOG, Coleman-Liau).; "keywords" — Compute keyword density for the text.. Call with "operation" plus "input" (and "options" where relevant).

    Annotations the server declares

    • title: Word Counter
    • 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.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http developer-tools https://programmes.net/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__developer-tools__diff",
      "mcp__developer-tools__word-count",
      "mcp__developer-tools__cron",
      "mcp__developer-tools__http-status",
      "mcp__developer-tools__password-strength",
      "mcp__developer-tools__jsonpath",
      "mcp__developer-tools__json-diff",
      "mcp__developer-tools__luhn",
      "mcp__developer-tools__text-cleanup",
      "mcp__developer-tools__ieee754",
      "mcp__developer-tools__key-inspector",
      "mcp__developer-tools__json-schema-validator"
    ],
    "ask": [
      "mcp__developer-tools__json",
      "mcp__developer-tools__xml",
      "mcp__developer-tools__sql",
      "mcp__developer-tools__html",
      "mcp__developer-tools__base64",
      "mcp__developer-tools__url",
      "mcp__developer-tools__jwt",
      "mcp__developer-tools__html-entity",
      "mcp__developer-tools__url-encode",
      "mcp__developer-tools__hash",
      "mcp__developer-tools__uuid",
      "mcp__developer-tools__password",
      "mcp__developer-tools__bcrypt",
      "mcp__developer-tools__random",
      "mcp__developer-tools__timestamp",
      "mcp__developer-tools__color",
      "mcp__developer-tools__number-base",
      "mcp__developer-tools__case",
      "mcp__developer-tools__regex",
      "mcp__developer-tools__lorem",
      "mcp__developer-tools__json-csv",
      "mcp__developer-tools__markdown",
      "mcp__developer-tools__yaml-json",
      "mcp__developer-tools__json-ts",
      "mcp__developer-tools__contrast",
      "mcp__developer-tools__image-base64",
      "mcp__developer-tools__gitignore",
      "mcp__developer-tools__slugify",
      "mcp__developer-tools__chmod",
      "mcp__developer-tools__wifi-qr",
      "mcp__developer-tools__css-minify",
      "mcp__developer-tools__curl-converter",
      "mcp__developer-tools__json-schema",
      "mcp__developer-tools__cidr",
      "mcp__developer-tools__user-agent",
      "mcp__developer-tools__color-palette",
      "mcp__developer-tools__totp",
      "mcp__developer-tools__data-size",
      "mcp__developer-tools__mime",
      "mcp__developer-tools__sort-lines",
      "mcp__developer-tools__jwt-encode",
      "mcp__developer-tools__ulid",
      "mcp__developer-tools__string-escape",
      "mcp__developer-tools__ascii",
      "mcp__developer-tools__roman-numeral",
      "mcp__developer-tools__morse-code",
      "mcp__developer-tools__markdown-table",
      "mcp__developer-tools__hmac",
      "mcp__developer-tools__css-units",
      "mcp__developer-tools__json-xml",
      "mcp__developer-tools__char-inspector",
      "mcp__developer-tools__semver",
      "mcp__developer-tools__duration",
      "mcp__developer-tools__nanoid",
      "mcp__developer-tools__base-n",
      "mcp__developer-tools__x509",
      "mcp__developer-tools__env-json",
      "mcp__developer-tools__toml-json",
      "mcp__developer-tools__csp",
      "mcp__developer-tools__security-headers",
      "mcp__developer-tools__ipv6",
      "mcp__developer-tools__utm",
      "mcp__developer-tools__aspect-ratio",
      "mcp__developer-tools__html-jsx",
      "mcp__developer-tools__jsonc",
      "mcp__developer-tools__date-calc",
      "mcp__developer-tools__svg-data-uri",
      "mcp__developer-tools__id-decoder",
      "mcp__developer-tools__docker-compose",
      "mcp__developer-tools__glob-tester",
      "mcp__developer-tools__punycode",
      "mcp__developer-tools__html-markdown",
      "mcp__developer-tools__robots-txt",
      "mcp__developer-tools__compress",
      "mcp__developer-tools__saml-decoder"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as developer-tools. Review it before you use it.