Skip to main content
Glama

Duo Data Utilities

Unicode normalisation, script detection and confusable/homoglyph analysis

text_unicode
Read-onlyIdempotent

Analyse a string at the Unicode level: apply NFC, NFD, NFKC or NFKD normalisation, report which normalisation forms it is already in, list the scripts present, and flag confusable and homoglyph characters — Cyrillic а in a Latin word, zero-width joiners, bidirectional overrides, invisible characters. Returns per-character detail for anything suspicious, with code points, names and the ASCII character each one imitates. Price: $0.05 per successful call, paid over x402 (USDC on Base).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formNoNormalisation form to apply, default nfc. Accepted: nfc, nfd, nfkc or nfkd.
textYesText to analyse, at most 1024 characters. Accepted: at most 1024 characters.
detailNosummary (default) or full per-code-point detail (capped at 256 entries). Accepted: summary, full.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: a per-call price ($0.05 via x402/USDC on Base) and the shape of suspicious-character output (code points, names, imitated ASCII). It stops short of describing pagination or how the 256-entry cap is surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, and the three sentences each carry information. The em-dash enumeration of confusable examples is dense but justified; the trailing pricing sentence is logically last but reads slightly bolted-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so adequately, explaining per-character detail fields. Combined with annotations covering the read-only nature and the stated cost and caps, an agent has nearly everything needed, missing only explicit routing guidance versus siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the schema already documents form, text and detail with their enums. The description modestly enriches this by spelling out what each normalisation form means in practice and clarifying that 'full' detail returns per-code-point records, though it adds no format syntax beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (analyse) plus resource (a string at the Unicode level), and it enumerates the exact operations: normalisation forms, script listing, and confusable/homoglyph flagging. An agent can distinguish this from text_similarity, text_slug, and text_transliterate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use cases are strongly implied (detecting Cyrillic а in Latin words, zero-width joiners, bidirectional overrides), which tells the agent what scenario this serves. However, it never states when to prefer this over sibling tools like text_transliterate or text_similarity, and gives no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources