Skip to main content
Glama

Tanod Text

utilpeek: inspect a text for hidden or look-alike Unicode

text_unicode_inspect
Read-onlyIdempotent

utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. Returns a security-oriented Unicode inspection: risk (low / medium / high) with reasons; invisible characters (zero-width, tag characters that can smuggle prompt-injection text, controls) with positions; bidi controls (Trojan Source, CVE-2021-42574); UTS #39 confusables and mixed-script words (pаypal with a Cyrillic а); combining-mark floods; scripts and normalization status; optionally the text normalized or with invisible characters stripped. Input: text, optional normalize, strip_invisible, list_chars and skeleton. Typically under 1 s. Price: USD 0.001. Free: 10 utilpeek calls per IP per UTC day. Tanod does not log or store the submitted text; it is processed in memory for this answer. Docs: https://tanod.dev/learn/detect-ascii-smuggling-invisible-unicode-api.html

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe text (at most 200,000 characters).
skeletonNoUTS #39 confusable skeleton of the whole text.
normalizeNoAlso return the text in this normalization form: NFC, NFD, NFKC or NFKD (default none).
list_charsNoList the first N code points with name / category.
strip_invisibleNoReturn the text without bidi / zero-width / tag / control characters.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
bidiNo
riskNo
textNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
lengthNo
sourceNo
reasonsNo
scriptsNo
skeletonNo
combiningNo
invisibleNo
categoriesNo
utf8_bytesNo
confusablesNo
utf16_unitsNo
normalizationNo
unicode_versionNo
mixed_script_textNo
mixed_script_wordsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / normalize / description
      Added value: +"Also return the text in this normalization form: NFC, NFD, NFKC or NFKD (default none)."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "bidi": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "categories": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "combining": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "confusables": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "description": "Only on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object."
      +    },
      +    "invisible": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "length": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "mixed_script_text": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "mixed_script_words": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "normalization": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "reasons": {
      +      "items": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "risk": {
      +      "enum": [
      +        "low",
      +        "medium",
      +        "high",
      +        null
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "scripts": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "skeleton": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "source": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "text": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "unicode_version": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utf16_units": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "utf8_bytes": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources