Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
identifier `レプリカごとに別々のバスを持つからです` mixes scripts: Katakana + Hiragana + Han + Other (raw pass, confidence 0.80)
デフォルトのバスでは届きません。レプリカごとに別々のバスを持つからです。
```mermaid
likely benign
LLM, confidence 0.95
Japanese prose about per-replica buses flagged for mixed scripts.
Reasoning
Ordinary Japanese explanatory sentence in documentation; script mixing is inherent to Japanese orthography.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Markdown docs example showing a truncated JWT assertion in an OAuth token request.
Reasoning
The flagged string is a truncated JWT header example in an OAuth jwt-bearer documentation snippet, followed by an ellipsis. It is illustrative documentation, not an encoded payload, and the raw base64 signal is a false positive.
-
line length 551 characters (raw pass, confidence 0.50)
- `server.create_initialization_options(notification_options=..., experimental_capabilities=...)`, `server.get_capabilities(...)` (its arguments are now optional), and `NotificationOptions(prompts_changed=, resources_changed=, tools_changed=)`. Both methods gained an optional `extensions=` argument. `create_initializat
-
line length 626 characters (raw pass, confidence 0.50)
- Import paths: `from mcp.server import Server` (preferred), `from mcp.server.lowlevel import Server`, and `from mcp.server.lowlevel.server import Server` all resolve; only the `request_ctx` contextvar left `mcp.server.lowlevel.server` (see [`request_context` property removed](#lowlevel-server-request_context-property-
-
line length 653 characters (raw pass, confidence 0.50)
Server-side transport entry points (`stdio_server()`, `SseServerTransport`, `StreamableHTTPSessionManager`) keep their v1 import paths and signatures (see [Lowlevel `Server`: what did not change](#lowlevel-server-what-did-not-change)), so the sections below are client-side apart from [`stdio_server` keeps the protocol
-
base64-like blob (96 bytes, compression ratio 0.99) (raw pass, confidence 0.60)
TEST_IMAGE_BASE64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=="
TEST_AUDIO_BASE64 = "UklGRiYAAABXQVZFZm10IBAAAAABAAEAQB8AAAB9AAACABAAZGF0YQIAAAA="
likely benign
LLM, confidence 0.95
Test fixture constants holding base64-encoded sample image and audio data in an example server.
Reasoning
The blobs are labelled test data: a tiny PNG and a tiny WAV header used as fixtures in an example MCP test server. This is ordinary sample content, and the raw signal fires on any base64 string.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Translated docs example of a truncated JWT assertion in an OAuth jwt-bearer request.
Reasoning
This is the same truncated JWT documentation example repeated in the German translation. It is a documentation snippet, not an obfuscated payload.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Translated docs example of a truncated JWT assertion in an OAuth jwt-bearer request.
Reasoning
This is the same truncated JWT documentation example repeated in the Spanish translation. It is documentation text, not a hidden or encoded payload.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Translated docs example of a truncated JWT assertion in an OAuth jwt-bearer request.
Reasoning
This is the same truncated JWT documentation example repeated in the French translation. It is documentation text, not a hidden or encoded payload.
-
identifier `Pythonमें` mixes scripts: Latin + Other (raw pass, confidence 0.80)
ordinary space before it — Python में, MCP का, `ctx` को, `add` से, server
पर, tools की सूची — never glued (Pythonमें ✗), never hyphenated (Python-में
✗), and never a Devanagari ending grafted onto a Latin word (serverों ✗).
likely benign
LLM, confidence 0.90
Hindi style-guide prose showing a Latin word next to a Devanagari particle, presented as a negative example.
Reasoning
The flagged token is Hindi prose where a Devanagari postposition ('में') is written directly after the Latin word 'Python'. The text is an explicit style guide that uses the glued form as a counterexample to show what not to write. Mixed scripts in natural-language prose are normal, and this is not an identifier-level obfuscation.
-
identifier `serverों` mixes scripts: Latin + Other (raw pass, confidence 0.80)
पर, tools की सूची — never glued (Pythonमें ✗), never hyphenated (Python-में
✗), and never a Devanagari ending grafted onto a Latin word (serverों ✗).
Compound labels keep their space too: MCP server, tool call. Line breaks
likely benign
LLM, confidence 0.90
Hindi style-guide prose with a Latin word and a Devanagari suffix, shown as a counterexample.
Reasoning
This is the same kind of Hindi prose from a style guide, where 'serverों' appears as a marked-wrong example of grafting a Devanagari ending onto a Latin word. Its context is documentation, not code, so the mixed-script hit is a tokenization artifact.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Translated docs example of a truncated JWT assertion in an OAuth jwt-bearer request.
Reasoning
This is the same truncated JWT documentation example in the Hindi translation. It is documentation text, not a hidden payload.
-
line length 619 characters (raw pass, confidence 0.50)
* `on_call_tool`、`on_get_prompt`、`on_read_resource` は、通常の結果の代わりに `InputRequiredResult` を返して呼び出しを一時停止し、クライアントに入力を求めることができます。**[マルチラウンドトリップ(multi-round-trip)リクエスト](../handlers/multi-roun
-
identifier `つの別々の権限主体が関わっています` mixes scripts: Hiragana + Han + Other (raw pass, confidence 0.80)
ここには 2 つの別々の権限主体が関わっています。両者を区別して呼び分けられれば、このページの大半は理解できたも同然です。**エンタープライズ IdP** は組織の ID プロバイダーです。従業員が誰であるかを知っており、ポリシーが置… (340 bytes total)
likely benign
LLM, confidence 0.90
Japanese documentation prose that mixes scripts and digits in a normal sentence.
Reasoning
The flagged 'identifier' is ordinary Japanese prose mixing Hiragana, Han characters, and a few ASCII or digit characters, as in '2 つの'. This is standard Japanese typography in a documentation paragraph, not an identifier obfuscation attempt.
-
line length 795 characters (raw pass, confidence 0.50)
SDK がアサーションをデコードすることは決してありません。どの IdP を信頼し、その IdP がどの鍵を公開しているかを知っているのはデプロイメントだけなので、`exchange_identity_assertion` の中身はすべてが安全性を支える要です。[RFC 7523](
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.95
Translated docs example of a truncated JWT assertion in an OAuth jwt-bearer request.
Reasoning
This is the same truncated JWT documentation example in the Japanese translation. It is documentation text, not an encoded or hidden payload.
-
identifier `つは別々のリストになっています` mixes scripts: Hiragana + Han + Other + Katakana (raw pass, confidence 0.80)
* `list_resource_templates()` は**パラメーター化された**ものを返します。ここでは `['catalog://genres/{genre}']` です。テンプレートは値を埋めるまで読み取れないため、2 つは別々のリストになっています。
likely benign
LLM, confidence 0.95
Japanese documentation sentence about list_resource_templates flagged for mixed scripts.
Reasoning
Japanese prose mixing hiragana, kanji and punctuation is normal; the 'mixed script' signal fires on ordinary Japanese sentences in a markdown doc.
-
line length 883 characters (raw pass, confidence 0.50)
フレームワークは、ネゴシエートされたプロトコルバージョンから質問のトランスポートを選びます。上のコードはどちらでも同じです。**2026-07-28** 以降では、質問はマルチラウンドトリップ(multi-round-trip)の `tools/call` の中で運ばれ… (340 bytes total)
-
line length 532 characters (raw pass, confidence 0.50)
`@mcp.tool()` では、これを手で組み立てることはめったにありません。ユーザーに尋ねる依存関係(`Elicit`)、クライアントの LLM をサンプリングする依存関係(`Sample`)、クライアントのルート(roots)を一覧する依存関係(`ListRoots`)のい… (339 bytes total)
-
identifier `から倍々に増えて上限` mixes scripts: Hiragana + Han + Other (raw pass, confidence 0.80)
��に短くスリープします(50ms から倍々に増えて上限 250ms)。そのため、単に「まだ終わっていない」と言っているだけのサーバーをビジーポーリングすることはありません。
likely benign
LLM, confidence 0.95
Japanese doc text about polling backoff timing flagged for mixed scripts.
Reasoning
Normal Japanese prose describing polling backoff; mixed Hiragana/Han is standard Japanese text.
-
line length 519 characters (raw pass, confidence 0.50)
* **認証されたプリンシパル。** SDK が検証した OAuth アクセストークンをリクエストが載せている場合、状態はトークンのクライアント、発行者、サブジェクトに束縛されます。あるユーザー向けに発行された状態は、両者が 1 つの OAuth ク… (340 bytes total)
-
identifier `つの世代が別々の経路で待ち受けているからです` mixes scripts: Hiragana + Han + Other (raw pass, confidence 0.80)
残るのはちょうど 1 つ、**変更通知**です。2 つの世代が別々の経路で待ち受けているからです。
likely benign
LLM, confidence 0.95
Japanese prose about two protocol generations flagged for mixed scripts.
Reasoning
Standard Japanese sentence in a translated docs page; no obfuscation present.
-
identifier `ありもしない天気を自信満々に読み上げる代わりに` mixes scripts: Hiragana + Han + Other (raw pass, confidence 0.80)
を受け取るので、モデルは、ありもしない天気を自信満々に読み上げる代わりに、呼び出しが失敗したと分かります。フィールド名は開発者向けに、サーバーログの `ERROR` レベルに出力されます。
likely benign
LLM, confidence 0.95
Japanese prose about structured output error handling flagged for mixed scripts.
Reasoning
Normal Japanese documentation prose; mixed scripts are expected in Japanese text.
-
identifier `パスの各セグメントを別々のリスト要素として受け取りたい場合は` mixes scripts: Katakana + Hiragana + Han + Other (raw pass, confidence 0.80)
�りの 1 つの文字列ではなく、パスの各セグメントを別々のリスト要素として受け取りたい場合は `{/name*}` を使います。`shelves://browse{/path*}` なら、クライアントが `shelves://browse/fiction/sci-fi` を読むと `browse_shelf(["fiction", "sci-fi"])` が呼び出さ… (341 bytes total)
likely benign
LLM, confidence 0.95
Japanese doc on URI template path segments flagged for mixed scripts.
Reasoning
Japanese documentation explaining URI template explode syntax; the mixed-script detection is a false positive on natural language.
-
line length 523 characters (raw pass, confidence 0.50)
同じ質問、クライアント側も同じ `elicitation_callback` です。違いは内部にあります。リゾルバーを使うと、サーバーは質問を押し込むのではなく呼び出しから「返す」ことができるので、サーバーからクライアントへ流れるものは何もなく… (339 bytes total)
-
line length 789 characters (raw pass, confidence 0.50)
`Client` が受け取るのは、URL(Streamable HTTP)、`StdioServerParameters`(stdio のサブプロセス)、`sse_client(...)` のようなそれ以外の任意のトランスポートのコンテキストマネージャー、またはテストで使うサーバーオブジェクトそのもの(インメモ
-
identifier `ㅂ니다` mixes scripts: Other + Hangul (raw pass, confidence 0.80)
Write 합쇼체 (formal-polite, sentence endings in -습니다 / -ㅂ니다) as the one
register for the whole page.
likely benign
LLM, confidence 0.95
Korean style instructions mentioning sentence endings flagged for mixed scripts.
Reasoning
Korean style guide text; the Hangul jamo ㅂ in the -ㅂ니다 ending is a legitimate writing convention, not obfuscation.
-
identifier `ㅂ니다` mixes scripts: Other + Hangul (raw pass, confidence 0.80)
- Body prose, list items, table cells and admonition bodies end in -습니다 /
-ㅂ니다: "The SDK does the rest." → SDK가 나머지를 처리합니다.
- Short imperatives (steps, instructions, calls to action) use -세요:
likely benign
LLM, confidence 0.95
Korean style bullet describing -습니다/-ㅂ니다 endings flagged for mixed scripts.
Reasoning
Same benign Korean style guidance using the jamo ㅂ in an ending pattern description.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.90
Truncated JWT assertion example in an OAuth jwt-bearer docs snippet.
Reasoning
The blob is a truncated JWT header (eyJhbGciOi... decodes to JSON with alg/typ) in an OAuth example with an ellipsis; it is a documentation sample, not a payload.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.90
Truncated JWT assertion example in a Portuguese OAuth docs snippet.
Reasoning
Identical truncated JWT example in the Portuguese translation of the same OAuth docs page; benign illustrative content.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
- The authorial "we" is fine where the English has it (Рекомендуем …), but no
мы с вами or давайте. One page, one register: a page that drifts between
imperatives and officialese, or between вы and Вы, is wrong even when each
sentence is acceptable on its own.
dismissed
LLM, confidence 0.95
Russian style-guide prose containing the Cyrillic letter 'с' (as in 'с вами').
Reasoning
The flagged character is Cyrillic 'с' inside ordinary Russian prose in a markdown style guide, not an identifier. Russian text naturally uses Cyrillic letters that look like Latin ones, so the homoglyph signal is a false positive from a raw-pass check.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
с помощью, через; в случае если → если; функционал → возможности; and no
chains of verbal nouns (для обеспечения возможности выполнения запуска →
чтобы запустить).
dismissed
LLM, confidence 0.95
Russian documentation text using the Cyrillic word 'с' (with).
Reasoning
The match is the Cyrillic preposition 'с' in Russian prose about wording choices. This is normal Russian text in a documentation file, with no code or identifier context.
-
identifier `В` contains homoglyph candidates: В (0412)→B (raw pass, confidence 0.70)
весь API. / Вот и весь протокол.; "That's it. It's just Python." → Вот и
всё. Это обычный Python.; "You get `3` back. ✨" → В ответ приходит `3`. ✨
- Idioms take the plain meaning, not the picture: "Out of the box the app
dismissed
LLM, confidence 0.95
Russian translation example with the capital Cyrillic 'В' beginning a sentence.
Reasoning
The flagged 'В' is the capitalized Cyrillic word 'Вот'/'В' starting a Russian sentence in a translation example. It is ordinary language, not an obfuscated identifier.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
- Dashes: the grammatical dash is an em dash with a space on each side (Хост —
это приложение, с которым говорит пользователь); a hyphen only joins
compounds (MCP-сервер, HTTP-запрос); numeric ranges use an en dash without
dismissed
LLM, confidence 0.95
Russian guidance on dashes containing the Cyrillic word 'с'.
Reasoning
The character is the Cyrillic 'с' in Russian punctuation guidance prose ('Хост — это приложение, с которым…'). It is a legitimate use of Cyrillic in a Russian document.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
changes (2.5 seconds → 2,5 секунды); when in doubt keep the number as
written. A space separates a number from its unit (100 МБ, 30 секунд, 5 с);
% attaches with no space (100%). Numerals govern the noun the Russian way:
dismissed
LLM, confidence 0.95
Russian style text using the Cyrillic unit abbreviation 'с' (seconds).
Reasoning
The match is the Cyrillic abbreviation 'с' (seconds) in Russian units guidance, e.g. '5 с'. This is correct Russian typography in a documentation file and not an identifier.
-
identifier `а` contains homoglyph candidates: а (0430)→a (raw pass, confidence 0.70)
- Never decline a Latin-script word with an apostrophe or a glued ending
(API'шка, SDK-а, в `Client`'е). Let a Russian word carry the case instead: a
hyphenated head noun (MCP-сервер, MCP-клиент, HTTP-запрос, JSON-объект,
dismissed
LLM, confidence 0.93
Russian style text with a Cyrillic vowel in case endings.
Reasoning
The flagged 'а' is the Cyrillic case ending in Russian words such as 'SDK-а' and 'API'шка'. The surrounding text is Russian prose, so the Cyrillic vowel is expected and the homoglyph warning is a false positive.
-
identifier `е` contains homoglyph candidates: е (0435)→e (raw pass, confidence 0.70)
- Never decline a Latin-script word with an apostrophe or a glued ending
(API'шка, SDK-а, в `Client`'е). Let a Russian word carry the case instead: a
hyphenated head noun (MCP-сервер, MCP-клиент, HTTP-запрос, JSON-объект,
dismissed
LLM, confidence 0.93
Russian style text with a Cyrillic 'е' in a case ending.
Reasoning
The flagged 'е' is a Cyrillic letter in a Russian grammar sentence about declining Latin-script words. This is legitimate Russian prose in a documentation file.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.90
Truncated example JWT assertion in an OAuth jwt-bearer documentation snippet.
Reasoning
The blob is the header of a JWT (eyJhbGciOi... is base64 for a JSON header), shown in an OAuth jwt-bearer example and cut off with '...'. It is a placeholder in documentation, not a payload or dropper.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.90
Truncated example JWT assertion in a Turkish OAuth jwt-bearer documentation snippet.
Reasoning
This is the same truncated example JWT assertion as the Russian copy, shown in a documentation code block with a '...' placeholder. It is benign documentation content.
-
string literal compression ratio 0.953 (128 bytes) (raw pass, confidence 0.60)
* **Araç, host'un çalıştırdığı `mcp` üzerinde mi?** Başka bir modüldeki ikinci bir `MCPServer(...)` farklı, boş bir sunucudur. Host'un komutunun gerçekte hangi nesneyi içe aktardığını kontrol edin.
dismissed
LLM, confidence 0.90
Turkish troubleshooting prose sentence about checking the MCP server object.
Reasoning
The flagged item is a long Turkish prose sentence in a troubleshooting bullet, which naturally has a high compression ratio. The text is an ordinary explanation and contains no executable or obfuscated code.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
- Steps and instructions are plain imperatives in the ви form: "Install the
SDK, then run the server" → Встановіть SDK і запустіть сервер. A purpose
clause is the other natural shape: "To run it: …" → Щоб запустити: …. Not
dismissed
LLM, confidence 0.97
Ukrainian prose in a translation style guide containing the legitimate letter і.
Reasoning
Markdown style guide for Ukrainian translation; the Cyrillic і is the legitimate Ukrainian letter used in the sample text, not an identifier. Raw-pass homoglyph flag is a false positive on natural-language prose.
-
identifier `у` contains homoglyph candidates: у (0443)→y (raw pass, confidence 0.70)
itself (здійснює надсилання → надсилає); з метою → щоб; у випадку якщо →
якщо; no chains of verbal nouns (для забезпечення можливості запуску → щоб
dismissed
LLM, confidence 0.97
Ukrainian example text in a localization style guide using the letter у.
Reasoning
Cyrillic у is a normal Ukrainian word/letter in the documentation's example translations; prose in a markdown guide, not code or an identifier.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
- Avoid russianisms and суржик of every kind — vocabulary, calqued phrases,
and Russian letters (ы, э, ъ, ё never appear in Ukrainian text; ґ, є, і, ї
do where the orthography requires). §5 pins the common traps.
dismissed
LLM, confidence 0.97
Ukrainian guidance text mentioning the orthographic letters ґ, є, і, ї.
Reasoning
The file is a Ukrainian localization guide; the і here is genuine Ukrainian orthography, explicitly discussed in the text. Homoglyph warning is a false positive.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
та конфігурування. Необхідно лише виконати відповідний запит.
- Not this either (familiar): Ти його не створюєш і не налаштовуєш. Просто
просиш.
dismissed
LLM, confidence 0.97
Ukrainian example sentence in a translation guide with the conjunction і.
Reasoning
Ordinary Ukrainian sentence in a markdown style guide; і is the conjunction 'and'. No code context and no obfuscation.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
**[X](…)**.; "That's the whole API." / "That's the whole protocol." → Оце й
увесь API. / Оце й увесь протокол.; "That's it. It's just Python." → От і
все. Це звичайний Python.; "You get `3` back. ✨" → У відповідь приходить
`3`. ✨
dismissed
LLM, confidence 0.97
Ukrainian translation examples in a style guide.
Reasoning
Plain Ukrainian translation examples in a markdown document; the flagged letters are native Ukrainian characters, not spoofed identifiers.
-
identifier `у` contains homoglyph candidates: у (0443)→y (raw pass, confidence 0.70)
застосунок відповідає **лише** на запити, адресовані localhost. — not з
коробки; "under the hood" → усередині, not під капотом; "on the wire" → у
переданих даних / мережею, never по дроту.
dismissed
LLM, confidence 0.97
Ukrainian documentation text using the letter у.
Reasoning
Ukrainian prose with the native letter у in a documentation file. The homoglyph heuristic misfires on legitimate non-Latin text.
-
identifier `у` contains homoglyph candidates: у (0443)→y (raw pass, confidence 0.70)
headers capitalise the first word and proper nouns only. No capital after a
colon. Language names, weekdays and months are lowercase (у липні).
- Digits stay ASCII. Protocol revision strings such as `2026-07-28` and
`2025-11-25` are identifiers, copied byte for byte — never 28.07.2026, never
dismissed
LLM, confidence 0.97
Ukrainian guidance on date formatting containing у.
Reasoning
Ukrainian month/weekday guidance (у липні) in a markdown style guide; legitimate language content, no code or spoofing.
-
identifier `р` contains homoglyph candidates: р (0440)→p (raw pass, confidence 0.70)
`2025-11-25` are identifiers, copied byte for byte — never 28.07.2026, never
28 липня 2026 р. Version numbers, ports, HTTP status codes, error codes, RFC
and SEP numbers are copied exactly.
- Prose quantities take the decimal comma only when nothing but the separator
dismissed
LLM, confidence 0.97
Ukrainian date example in a style guide with the abbreviation р.
Reasoning
Ukrainian date example '28 липня 2026 р.' in documentation; р is the native Cyrillic letter used in the abbreviation р. (рік). Benign prose.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
changes (2.5 seconds → 2,5 секунди); when in doubt keep the number as
written. A space separates a number from its unit (100 МБ, 30 секунд, 5 с);
% attaches with no space (100%). Numerals govern the noun the Ukrainian way:
dismissed
LLM, confidence 0.97
Ukrainian unit example '5 с' in a style guide.
Reasoning
Ukrainian unit abbreviation 'с' (секунди) in a localization style guide; standard Cyrillic text, not an obfuscated identifier.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
1 інструмент, 3 інструменти, 5 інструментів.
- e.g. → наприклад; i.e. → тобто; etc. → тощо; "&" → і / та. Emphasis lands on
the same words the source emphasises, and a bolded negation ("**not**" →
dismissed
LLM, confidence 0.97
Ukrainian translation list containing the conjunction і.
Reasoning
Ukrainian conjunction і in the 'e.g./i.e.' translation list of a markdown guide. Native orthography; homoglyph flag is a false positive.
-
identifier `а` contains homoglyph candidates: а (0430)→a (raw pass, confidence 0.70)
- Never decline a Latin-script word with an apostrophe or a glued ending
(API'шка, SDK-а). Let a Ukrainian word carry the case instead: a hyphenated
head noun (MCP-сервер, HTTP-запит, JSON-об'єкт, ASGI-застосунок) or the kind
likely benign
LLM, confidence 0.90
Ukrainian documentation text using a Cyrillic letter in a hyphenated grammatical suffix.
Reasoning
The flagged character is Cyrillic 'а' used inside Ukrainian prose, such as 'SDK-а', which is the correct grammatical ending. Homoglyph checks fire on ordinary Ukrainian text, and nothing here deceives a reader or hides code.
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.93
Truncated example JWT assertion in an OAuth jwt-bearer documentation snippet.
Reasoning
The blob is a truncated JWT header (eyJhbGciOiJIUzI1NiIsInR5cCI6...) followed by '...' in an OAuth jwt-bearer grant example. It is documentation placeholder text, not a live credential or payload.
-
line length 532 characters (raw pass, confidence 0.50)
* `on_call_tool`、`on_get_prompt` 和 `on_read_resource` 可以回傳 `InputRequiredResult` 取代正常結果,暫停呼叫並向用戶端要求輸入;請見 **[多輪往返(multi-round-trip)請求](../handlers/multi-round-trip.md)**。忠於這一層的風格,沒有任何東西會替你裝好:`MCPServer`
-
line length 544 characters (raw pass, confidence 0.50)
上面的 `idp_issue_id_jag` **不是你的程式碼**。它代替身分提供者,在處理程序內簽署斷言,讓這個檔案能完整執行,你也能讀到 ID-JAG 帶有的每一個 claim。真正的 `fetch_id_jag` 會改發上一節的第一個權杖請求:對你的 IdP 做一次 [RFC 8693](https://datatra
-
line length 635 characters (raw pass, confidence 0.50)
SDK 從不解碼斷言:只有你的部署知道它信任哪一個 IdP、那個 IdP 發布哪些金鑰,所以 `exchange_identity_assertion` 裡的每一行都至關重要。依 [RFC 7523](https://datatracker.ietf.org/doc/html/rfc7523) §3,用 IdP 發布的金鑰(它的 JWKS;這裡的共享密鑰只是示… (339 bytes total)
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.93
Truncated example JWT assertion in a traditional Chinese OAuth documentation page.
Reasoning
This is the same truncated example JWT assertion in another translation of the OAuth documentation, with the same '...' placeholder.
-
line length 617 characters (raw pass, confidence 0.50)
框架依協商出的協定版本決定問題走哪種傳輸;上面的程式碼在兩種情況下完全相同。在 **2026-07-28** 及之後,問題搭在一個多輪往返(multi-round-trip)的 `tools/call` 裡:伺服器回傳問題,用戶端的 `elicitation_callback` 回答它,`Client` 替你重試這
-
line length 621 characters (raw pass, confidence 0.50)
`Client` 接受一個 URL(Streamable HTTP)、一個 `StdioServerParameters`(stdio 子處理程序)、任何其他傳輸 context manager(例如 `sse_client(...)`),或者在測試裡直接接受伺服器物件本身(記憶體內、沒有傳輸)。進入 `async with` 就會連線並協商協定版本,… (340 bytes total)
-
line length 532 characters (raw pass, confidence 0.50)
* `on_call_tool`、`on_get_prompt` 和 `on_read_resource` 可以返回 `InputRequiredResult` 而不是正常结果,来暂停调用并向客户端索要输入;见 **[多轮往返(multi-round-trip)请求](../handlers/multi-round-trip.md)**。符合这一层的风格,没有任何东西替你装好:`MCPServer`
-
line length 536 characters (raw pass, confidence 0.50)
它上面的 `idp_issue_id_jag` **不是你的代码**。它替身份提供方出场,在进程内签发断言,这样文件是完整的,你也能读到 ID-JAG 携带的每一个声明。真正的 `fetch_id_jag` 发的是上一节里的第一个令牌请求:对你的 IdP 做一次 [RFC 8693](https://datatracker.i
-
line length 614 characters (raw pass, confidence 0.50)
SDK 从不解码断言:只有你的部署知道它信任哪个 IdP、那个 IdP 发布哪些密钥,所以 `exchange_identity_assertion` 里的每一步都是承重的。按 [RFC 7523](https://datatracker.ietf.org/doc/html/rfc7523) §3,用 IdP 发布的密钥(它的 JWKS;这里的共享密钥只是演示… (339 bytes total)
-
base64-like blob (64 bytes, compression ratio 1.17) (raw pass, confidence 0.60)
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
client_id=finance-agent
resource=http://localhost:8001/mcp
likely benign
LLM, confidence 0.93
Truncated example JWT assertion in a translated OAuth documentation page.
Reasoning
This is the same truncated example JWT assertion in a translated copy of the same OAuth documentation. The '...' marks it as a placeholder.
-
line length 627 characters (raw pass, confidence 0.50)
框架根据协商出的协议版本选择问题走哪种传输方式;上面的代码在两种情况下完全相同。在 **2026-07-28** 及之后,问题搭载在一次多轮往返(multi-round-trip)的 `tools/call` 里——服务器返回问题,客户端的 `elicitation_callback` 回答它,`Client` 替
-
line length 619 characters (raw pass, confidence 0.50)
`Client` 接受一个 URL(Streamable HTTP)、一个 `StdioServerParameters`(stdio 子进程)、其他任意传输上下文管理器(比如 `sse_client(...)`),或者在测试里直接接受服务器对象本身(内存直连,没有传输)。进入 `async with` 就会建立连接并协商协议版本… (339 bytes total)
-
`subprocess.run` called with `shell=True` and a literal command (ast pass, confidence 0.70)
try:
subprocess.run([cmd, "--version"], check=True, capture_output=True, shell=True)
return cmd
except subprocess.CalledProcessError:
likely benign
LLM, confidence 0.70
A version probe that runs a candidate CLI command with shell=True inside a try block.
Reasoning
shell=True is risky, but the command is a loop variable over candidate executable names and is probed with a fixed '--version' argument. This is a standard tool-availability check, not an injected or downloaded payload. The list-plus-shell combination is sloppy but does not show malicious intent.
-
identifier `κόσμε` contains homoglyph candidates: κ (03BA)→k (in string/comment) (raw pass, confidence 0.35)
"hebrew": "שלום עולם - זה מבחן",
"greek": "Γεια σου κόσμε - αυτό είναι δοκιμή",
"emoji": "Hello 👋 World 🌍 - Testing 🧪 Unicode ✨",
"math": "∑ ∫ √ ∞ ≠ ≤ ≥ ∈ ∉ ⊆ ⊇",
-
identifier `κόσμε` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
"hebrew": "שלום עולם - זה מבחן",
"greek": "Γεια σου κόσμε - αυτό είναι δοκιμή",
"emoji": "Hello 👋 World 🌍 - Testing 🧪 Unicode ✨",
"math": "∑ ∫ √ ∞ ≠ ≤ ≥ ∈ ∉ ⊆ ⊇",
-
identifier `δοκιμή` contains homoglyph candidates: ο (03BF)→o, κ (03BA)→k (in string/comment) (raw pass, confidence 0.35)
"hebrew": "שלום עולם - זה מבחן",
"greek": "Γεια σου κόσμε - αυτό είναι δοκιμή",
"emoji": "Hello 👋 World 🌍 - Testing 🧪 Unicode ✨",
"math": "∑ ∫ √ ∞ ≠ ≤ ≥ ∈ ∉ ⊆ ⊇",
-
identifier `δοκιμή` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)
"hebrew": "שלום עולם - זה מבחן",
"greek": "Γεια σου κόσμε - αυτό είναι δοκιμή",
"emoji": "Hello 👋 World 🌍 - Testing 🧪 Unicode ✨",
"math": "∑ ∫ √ ∞ ≠ ≤ ≥ ∈ ∉ ⊆ ⊇",
-
identifier `Привет안녕مرحباשלום` mixes scripts: Cyrillic + Hangul + Arabic + Hebrew (in string/comment) (raw pass, confidence 0.40)
"accented": "Café, naïve, résumé, piñata, Zürich",
"mixed": "Hello世界🌍Привет안녕مرحباשלום",
"special": "Line\nbreak\ttab\r\nCRLF",
"quotes": '«French» „German" "English" 「Japanese」',
-
identifier `Привет안녕مرحباשלום` mixes scripts: Cyrillic + Hangul + Arabic + Hebrew (in string/comment) (raw pass, confidence 0.40)
role="user",
content=types.TextContent(type="text", text="Hello世界🌍Привет안녕مرحباשלום"),
)
]
-
identifier `Привет안녕مرحباשלום` mixes scripts: Cyrillic + Hangul + Arabic + Hebrew (in string/comment) (raw pass, confidence 0.40)
assert message.content.type == "text"
assert message.content.text == "Hello世界🌍Привет안녕مرحباשלום"
-
base64-like blob (96 bytes, compression ratio 0.97) (raw pass, confidence 0.60)
test_icon = Icon(
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
mime_type="image/png",
sizes=["1x1"],
likely benign
LLM, confidence 0.95
Test fixture with an inline base64-encoded 1x1 PNG data URI for an icon.
Reasoning
The base64 is a standard 1x1 PNG data URI used as a test fixture for icon metadata. It is a normal image encoding with no execution or hidden payload.
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.