Hidden Unicode Check vs. MCP-Scan
Related tools, different jobs. MCP-Scan connects to the MCP servers in your client configuration and judges their live tool descriptions for poisoning, shadowing, and rug pulls. This checker answers one narrower, purely mechanical question about any text you paste — does it contain a specific invisible Unicode codepoint — entirely in your browser, with nothing to install.
What each tool is for
MCP-Scan (github.com/invariantlabs-ai/mcp-scan, run with
uvx mcp-scan@latest) is an open-source security scanner from Invariant Labs. Per its own
documentation, it searches your MCP client configuration files for configured servers, connects to each one,
retrieves its live tool descriptions, and scans them — combining local checks with a call to
Invariant's own Guardrailing API — for tool poisoning attacks, prompt injection in tool descriptions,
cross-origin tool-shadowing attacks, and rug pulls (a tool's description changing after you already approved
it, detected via hashing). Its proxy mode can also monitor and log live MCP traffic.
This checker does one narrower thing: you paste any text — an MCP tool description, a
CLAUDE.md, an AGENTS.md, a README, a PR body — and it lists every zero-width
or invisible-joiner character, every Unicode Tag-character run (decoded back to the hidden ASCII message it
spells out), every bidirectional-override control character, and every smuggling-pattern variation selector,
each with its codepoint, name, line/column, and byte offset. It runs entirely in your browser: no install,
no account, and no network call of its own.
| Question | Where to answer it |
|---|---|
| Which MCP servers do I have configured, and does a live audit of their tool descriptions flag poisoning, shadowing, or a rug pull since I last approved them? | MCP-Scan — that is its entire job, and this tool does not attempt any of it. |
| Does this specific piece of text I already have in hand contain a zero-width character, a hidden Tag-character message, or a bidi override? | This checker — a codepoint-level list, offline, with nothing installed or connected. |
I don't have uv/Python set up, or I just want to check one string before deciding whether to run a fuller audit. | This checker — open the page, paste the text, done. |
| I want ongoing, judged monitoring of live MCP servers, including techniques beyond invisible Unicode (semantic prompt injection, tool shadowing, rug pulls). | MCP-Scan — this checker's codepoint list does not attempt semantic judgement at all. |
The two are complementary, not competing: MCP-Scan's own stated scope already covers prompt injection in tool descriptions generally, of which invisible Unicode is one technique. This checker is a fast, offline, independently verifiable second opinion on that one specific technique — useful with or without MCP-Scan installed, and on text that has nothing to do with MCP at all.
Common questions
Should I use this checker or MCP-Scan?
Different shapes of tool for a related but different question. MCP-Scan (uvx mcp-scan@latest, from Invariant Labs) reads your MCP client configuration, connects to each configured server, retrieves its live tool descriptions, and judges them for tool poisoning, prompt injection, cross-origin tool shadowing, and rug pulls (a tool's description changing after you approved it) — combining local checks with a call to Invariant's own Guardrailing API. This checker does one narrower, purely mechanical thing: you paste any text — a tool description, a README, a CLAUDE.md, a PR body — and it lists the exact zero-width, Unicode-Tag, bidi-override, or variation-selector codepoints in it, entirely in your browser, with no install and no network call of its own. If you want a live, judged audit of every MCP server you have configured, MCP-Scan is built for exactly that and this tool does not attempt it. If you want to check one piece of pasted text for this specific invisible-character technique with nothing to install and no data leaving your browser, this is the tool for that question.
Wouldn't MCP-Scan already catch hidden Unicode in a tool description?
Likely often, since MCP-Scan's own stated scope covers prompt injection in tool descriptions generally, and hidden Unicode is one way to carry it. What this checker adds is not broader coverage of MCP — it is a specific, verifiable, offline second opinion: given the same text, it reports the exact codepoint, name, and byte offset of every invisible character on its list, with nothing sent anywhere and no dependence on a live server connection or an external API call being reachable or trusted. That is useful on its own even outside the MCP context this comparison is framed around — the same technique appears in a pasted README, a PR description, or any other text handed to an AI agent.
Why would I need a separate checker if MCP-Scan already exists?
Two reasons. First, scope: MCP-Scan's job is auditing the MCP servers you have configured, which requires installing it and letting it connect to those servers and call Invariant's API; this tool's job is checking one piece of already-in-hand text for one specific, mechanical technique, with nothing to install and no server connection at all — useful the moment you are staring at a tool description and want a fast, local answer before deciding whether to run a fuller audit. Second, this checker is not MCP-specific: it is built to check any pasted text — a CLAUDE.md, an AGENTS.md, a README, a PR description — for the same invisible-character techniques, not only MCP tool descriptions.
Is this page affiliated with MCP-Scan or Invariant Labs?
No. This site is not affiliated with, endorsed by, or sponsored by Invariant Labs or the MCP-Scan project. MCP-Scan is an open-source security scanner, named here only to describe what this checker is and is not, using facts drawn from its own public documentation and source repository at github.com/invariantlabs-ai/mcp-scan.