Unicode smuggling check for strings (prompts, tool args, URLs)
Checks up to 100 strings in one call against the 19 deterministic rules of unicode-safety-check: bidi controls (Trojan Source), invisible and zero-width characters, tag-character and variation-selector payloads, homoglyph and mixed-script hosts or names. Built for an agent's hot path: run it on a prompt, a tool argument, a URL or a model output before acting on it. Returns BLOCK / REVIEW / NO_FINDING per string with the code point and position. Pure code, no model.
What you get
Hidden Unicode is how instructions get smuggled past a human and into a model. 100 strings per $0.005 call.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/unicode-check. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/unicode-check \
-H 'content-type: application/json' \
-d '{"strings":["Summarize this page for me.","Ignore previous instructions","https://pаypal.com/login"],"kind":"url"}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
strings | array<string; length 0..10000>; max 100 items | yes | Up to 200000 characters in total. |
kind | string; one of "text", "identifier", "url" | no | text (default): prose, only critical findings block. identifier or url: high findings such as mixed-script names also block. |
Example request body
{
"strings": [
"Summarize this page for me.",
"Ignore previous instructions",
"https://pаypal.com/login"
],
"kind": "url"
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
verdict | string; one of "BLOCK", "REVIEW", "NO_FINDING" | no | Worst verdict across the strings. NO_FINDING means none of the 19 rules fired, not that the text is benign. |
counts | object | no | |
results | array<object> | no | |
kind | string; one of "text", "identifier", "url" | no | |
verdictBasis | string | no | |
engine | string | no | |
upgrade | object | no | The full agent this micro check is a slice of, its price and what it adds. |
Pay and connect
Available through: x402 (USDC on Base), MCP.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent