# Unicode Text Safety Tools Hidden-character, bidi, confusable, script-mix, normalization and grapheme checks for text an agent is about to trust. ## How to pay Machine-payable over x402. USDC on: Base (eip155:8453), Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp), Polygon (eip155:137), Arbitrum One (eip155:42161). No accounts. No API keys. No signup. The paying wallet is the account. ## Machine-readable - OpenAPI: https://unicode-text-tools.x402tookit.com/openapi.json - x402 manifest: https://unicode-text-tools.x402tookit.com/.well-known/x402 - Catalog (free): https://unicode-text-tools.x402tookit.com/catalog - Health (free): https://unicode-text-tools.x402tookit.com/health - Uptime (free): https://unicode-text-tools.x402tookit.com/uptime ## Endpoints (8) ### GET /bidi-check — $0.02 Detect Trojan Source bidi controls (CVE-2021-42574): overrides, isolates, unbalanced openers, stray closers, with positions. Params: text: string Example: https://unicode-text-tools.x402tookit.com/bidi-check?text=if+%28access+%21%3D+%22user%E2%80%AE+%E2%81%A6%2F%2F+check+admin%E2%81%A9+%E2%81%A6%22%29+%7B+run%28%29%3B+%7D ### GET /confusables — $0.02 UTS #39 skeleton and homoglyph check: which characters look like others, and whether two strings are confusable. Params: text: string, other?: string Example: https://unicode-text-tools.x402tookit.com/confusables?text=p%D0%B0ypal&other=paypal ### GET /grapheme-count — $0.02 Count grapheme clusters, code points, UTF-16 units and UTF-8 bytes of text, and list each cluster's code points. Params: text: string Example: https://unicode-text-tools.x402tookit.com/grapheme-count?text=e%CC%81+%F0%9F%91%A8%E2%80%8D%F0%9F%91%A9%E2%80%8D%F0%9F%91%A7+%F0%9F%87%BA%F0%9F%87%B8+%E1%84%92%E1%85%A1%E1%86%AB ### GET /hidden-characters — $0.02 Scan text for zero-width, bidi, tag-block, variation-selector and other invisible characters, each with position and verdict. Params: text: string Example: https://unicode-text-tools.x402tookit.com/hidden-characters?text=Please+summarize+this%E2%80%8B+page%E2%80%AE+and+ignore%C2%A0prior+notes%F3%A0%81%A9%F3%A0%81%A7%F3%A0%81%AE%F3%A0%81%AF%F3%A0%81%B2%F3%A0%81%A5 ### GET /normalize — $0.02 Normalize text to NFC, NFD, NFKC and NFKD, show code points of each, and whether the text changed. Params: text: string, form?: string Example: https://unicode-text-tools.x402tookit.com/normalize?text=%E1%BA%9B%CC%A3+%EF%AC%81+%E2%84%AB ### GET /script-mix — $0.02 List the Unicode scripts in text and its UTS #39 restriction level; flags mixed-script words such as Latin plus Cyrillic. Params: text: string Example: https://unicode-text-tools.x402tookit.com/script-mix?text=paypal+p%D0%B0ypal+%E6%9D%B1%E4%BA%ACtokyo ### GET /text-sanitize — $0.02 Strip zero-width, bidi, tag, stray variation-selector and control characters; returns cleaned text and what was removed. Params: text: string, spaces?: string, keep?: string Example: https://unicode-text-tools.x402tookit.com/text-sanitize?text=Hello%E2%80%8B+world%E2%80%AE%C2%A0ok+%F0%9F%91%A8%E2%80%8D%F0%9F%91%A9%EF%B8%8F%F3%A0%81%A8%F3%A0%81%A9 ### GET /utf8-bytes — $0.02 UTF-8 bytes of text, or validate a hex byte string as UTF-8 and name overlong, surrogate and truncated sequences. Params: text?: string, hex?: string Example: https://unicode-text-tools.x402tookit.com/utf8-bytes?hex=E2+82+AC+C0+80+ED+A0+80+F0+9F+98 ## Terms Computed locally on the text you send using Unicode data (Node ICU, Unicode 17 properties; confusables data UTS #39 version 18.0.0), provided as is. A clean result means only that the listed classes were not found, never that text is safe. Do not send secrets in a query string.