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
dismissed
LLM, confidence 0.97
A Japanese documentation sentence about replicas and buses, flagged for mixed scripts.
Reasoning
The flagged identifier is ordinary Japanese prose ("レプリカごとに別々のバスを持つからです" = "because each replica has its own separate bus") in a translated documentation page. Mixing Katakana, Hiragana and Han is normal for Japanese, so the unicode-mixed-script signal is a false positive from natural language.
-
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
Truncated example JWT header in an OAuth jwt-bearer documentation snippet.
Reasoning
The blob is the header of an example JWT assertion in a documentation code block, with a truncated signature (...). It is illustrative text for a jwt-bearer grant, not a payload.
-
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
Base64-encoded test image and audio constants in an example server.
Reasoning
The constants are labelled as test data and hold a small PNG and WAV sample used to exercise image and audio content in an example MCP server. No execution or decoding of hidden code is shown.
-
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 copy of the example JWT assertion snippet in documentation.
Reasoning
This is the same truncated example JWT header in a translated documentation page.
-
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 copy of the example JWT assertion snippet in documentation.
Reasoning
This is the same truncated example JWT header in a translated documentation page.
-
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 copy of the example JWT assertion snippet in documentation.
Reasoning
This is the same truncated example JWT header in a translated documentation page.
-
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 containing Latin technical terms next to Devanagari particles.
Reasoning
The Hindi prose mixes Latin technical terms with Devanagari postpositions and the snippet is a style guide showing forbidden forms with ✗. Mixed scripts are natural in this translation and there is no executable content.
-
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 example of a bad Devanagari suffix on a Latin word.
Reasoning
The flagged word is a deliberately incorrect example in a Hindi style guide, shown with ✗. The script mixing is part of the documented prose.
-
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 copy of the example JWT assertion snippet in documentation.
Reasoning
This is the same truncated example JWT header in a translated documentation page.
-
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)
dismissed
LLM, confidence 0.90
Japanese explanatory prose flagged because the tokenizer merged kana and kanji into one identifier.
Reasoning
The flagged token is ordinary Japanese prose. The tokenizer treats a run of Hiragana, Han and punctuation as one identifier, which is a false positive on natural text.
-
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 copy of the example JWT assertion snippet in documentation.
Reasoning
This is the same truncated example JWT header in a translated documentation page.
-
identifier `つは別々のリストになっています` mixes scripts: Hiragana + Han + Other + Katakana (raw pass, confidence 0.80)
* `list_resource_templates()` は**パラメーター化された**ものを返します。ここでは `['catalog://genres/{genre}']` です。テンプレートは値を埋めるまで読み取れないため、2 つは別々のリストになっています。
dismissed
LLM, confidence 0.90
Japanese documentation sentence flagged by a tokenizer artifact on natural text.
Reasoning
The snippet is ordinary Japanese documentation prose about list_resource_templates, with the mixed-script flag caused by the tokenizer merging text runs. No code or hidden content is involved.
-
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)。そのため、単に「まだ終わっていない」と言っているだけのサーバーをビジーポーリングすることはありません。
dismissed
LLM, confidence 0.90
Japanese documentation sentence about backoff polling flagged as mixed script.
Reasoning
The snippet is Japanese prose about polling backoff timing. The flagged run is ordinary text, and the replacement characters look like encoding damage rather than obfuscation.
-
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 つの世代が別々の経路で待ち受けているからです。
dismissed
LLM, confidence 0.97
A Japanese documentation sentence about legacy clients, flagged for mixed scripts.
Reasoning
The snippet is normal Japanese prose describing two generations listening on separate paths. Hiragana, Han and punctuation mixing is standard for Japanese text, and nothing in it is hidden or executable.
-
identifier `ありもしない天気を自信満々に読み上げる代わりに` mixes scripts: Hiragana + Han + Other (raw pass, confidence 0.80)
を受け取るので、モデルは、ありもしない天気を自信満々に読み上げる代わりに、呼び出しが失敗したと分かります。フィールド名は開発者向けに、サーバーログの `ERROR` レベルに出力されます。
dismissed
LLM, confidence 0.97
A Japanese documentation paragraph on tool-call failure reporting, flagged for mixed scripts.
Reasoning
The snippet is Japanese explanatory prose about structured output errors and log levels. The script mix is the ordinary result of writing Japanese, not obfuscation.
-
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)
dismissed
LLM, confidence 0.97
A Japanese documentation paragraph on URI templates, flagged for mixed scripts.
Reasoning
The snippet is Japanese documentation about URI template expansion, with inline code for the template syntax. The mixed scripts are natural Japanese text.
-
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.
dismissed
LLM, confidence 0.96
A Korean style-guide line discussing formal sentence endings, flagged for mixed scripts.
Reasoning
This is a Korean style guide describing sentence endings such as -습니다 and -ㅂ니다. The Hangul jamo in '-ㅂ니다' is a deliberate linguistic example in a writing instruction, not an identifier hiding code.
-
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 -세요:
dismissed
LLM, confidence 0.96
A Korean style-guide bullet about sentence endings, flagged for mixed scripts.
Reasoning
This is Korean style guidance listing sentence endings. The jamo sequence is a linguistic example, so the mixed-script signal is a false positive.
-
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
A truncated base64url JWT header in an OAuth token-request example in a Korean docs page.
Reasoning
The blob is the header of a JWT example (eyJhbGciOiJIUzI1NiIsInR5cCI6...), which decodes to a standard alg/typ header. It is truncated with '...' in an OAuth jwt-bearer example, so it is a documentation sample rather than 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.93
A truncated base64url JWT header in an OAuth token-request example in a Portuguese docs page.
Reasoning
This is the same OAuth jwt-bearer example as the Korean page: a truncated JWT header with an ellipsis, used to illustrate a token request. It is documentation, not a concealed payload.
-
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.96
A Russian style-guide line with a Cyrillic preposition, flagged as a Latin homoglyph.
Reasoning
The flagged 'с' is the Cyrillic letter used in Russian prose ('мы с вами'). It is a style-guide example, so the homoglyph signal reflects the language itself, not spoofing in code.
-
identifier `с` contains homoglyph candidates: с (0441)→c (raw pass, confidence 0.70)
с помощью, через; в случае если → если; функционал → возможности; and no
chains of verbal nouns (для обеспечения возможности выполнения запуска →
чтобы запустить).
dismissed
LLM, confidence 0.96
A Russian style-guide list item with a Cyrillic preposition, flagged as a Latin homoglyph.
Reasoning
The 'с' is the ordinary Cyrillic preposition in Russian style guidance ('с помощью'). The homoglyph flag is a false positive for natural-language text.
-
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.96
A Russian translation example beginning with a Cyrillic capital, flagged as a Latin homoglyph.
Reasoning
The 'В' is the Cyrillic capital in 'В ответ приходит' ('the response returns'), normal Russian text in a translation example. There is no spoofed 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.96
A Russian style-guide bullet about dash usage, flagged as a Latin homoglyph.
Reasoning
The 'с' is the Cyrillic preposition in 'с которым говорит пользователь', ordinary Russian in a style-guide bullet about dashes. The homoglyph signal is a false positive.
-
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.97
Cyrillic с in a Russian unit abbreviation (5 с = seconds) in a localization guide.
Reasoning
Cyrillic letter с inside Russian prose in a translation style guide is ordinary; homoglyph flag is a false positive on natural-language text in a markdown doc.
-
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.97
Cyrillic а within Russian prose in a markdown style guide.
Reasoning
Cyrillic а in Russian words like 'сервер' is normal Russian text, not a spoofed Latin identifier.
-
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.97
Cyrillic е within Russian prose in a markdown style guide.
Reasoning
Cyrillic е in Russian prose is expected; no code identifier is involved.
-
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
Illustrative truncated JWT assertion in an OAuth jwt-bearer documentation example.
Reasoning
Truncated JWT header example in OAuth jwt-bearer docs with an ellipsis; a documentation placeholder, not a payload hiding anything.
-
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
Illustrative truncated JWT assertion in a Turkish OAuth jwt-bearer documentation example.
Reasoning
Same truncated JWT example in the Turkish translation of the OAuth docs; benign documentation placeholder.
-
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.95
Turkish troubleshooting paragraph about MCPServer imports.
Reasoning
Turkish prose troubleshooting text with no code obfuscation; compression ratio on natural language is not meaningful.
-
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 letter і in a sentence of a style guide.
Reasoning
Ukrainian conjunction і in prose; homoglyph flag is a false positive.
-
identifier `у` contains homoglyph candidates: у (0443)→y (raw pass, confidence 0.70)
itself (здійснює надсилання → надсилає); з метою → щоб; у випадку якщо →
якщо; no chains of verbal nouns (для забезпечення можливості запуску → щоб
dismissed
LLM, confidence 0.97
Ukrainian letter у in a style guide sentence.
Reasoning
Ukrainian preposition у in prose; expected letter in the language.
-
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 letter і in a style guide discussing alphabet letters.
Reasoning
Ukrainian letter і appears in a sentence explicitly listing Ukrainian letters; natural text.
-
identifier `і` contains homoglyph candidates: і (0456)→i (raw pass, confidence 0.70)
та конфігурування. Необхідно лише виконати відповідний запит.
- Not this either (familiar): Ти його не створюєш і не налаштовуєш. Просто
просиш.
dismissed
LLM, confidence 0.97
Ukrainian letter і in a conversational example.
Reasoning
Ukrainian conjunction і in prose; false positive.
-
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 letter і in translation examples.
Reasoning
Ukrainian letter і in prose examples; false positive.
-
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 letter у in translation guidance text.
Reasoning
Ukrainian preposition у in prose; false positive.
-
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.95
Ukrainian prose containing the Cyrillic letter у flagged as a homoglyph.
Reasoning
Cyrillic letter у in Ukrainian prose (у липні) is legitimate; the homoglyph signal fires on natural-language Cyrillic text in a translation document, not an identifier.
-
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.95
Ukrainian date abbreviation р. flagged as homoglyph.
Reasoning
Cyrillic р is the normal abbreviation 'р.' for 'року' in Ukrainian dates; this is ordinary localized documentation text.
-
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.95
Ukrainian unit abbreviation с flagged as homoglyph.
Reasoning
Cyrillic с is the standard abbreviation for секунди in a style guide; benign natural-language text.
-
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.95
Ukrainian conjunction і flagged as homoglyph.
Reasoning
Cyrillic і is the regular Ukrainian conjunction 'і' ('and'); the finding is a false positive on legitimate translated prose.
-
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
dismissed
LLM, confidence 0.95
Ukrainian letter а in prose flagged as homoglyph.
Reasoning
Cyrillic а is ordinary Ukrainian text in a style-guide sentence about declining Latin-script words; no code or identifier involved.
-
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 a truncated JWT header (eyJhbGciOi... is a standard JWT prefix) followed by '...' in a documentation example of a jwt-bearer token request; it is illustrative, not a 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.90
Truncated example JWT assertion in a translated OAuth documentation snippet.
Reasoning
Same truncated example JWT assertion in a translated OAuth documentation page; illustrative and benign.
-
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.90
Truncated example JWT assertion in a translated OAuth documentation snippet.
Reasoning
Same truncated example JWT assertion in a translated OAuth documentation page; illustrative content with no executable payload.
-
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.85
Version-probe subprocess call using shell=True in an MCP CLI helper.
Reasoning
The shell=True call runs a loop variable cmd with a fixed --version argument to probe installed tools; it is a mild risk pattern but the command is a constant-style probe, not an obfuscated or malicious dropper. Shell use with a list argument is poor practice but common in CLI tooling.
-
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"],
dismissed
LLM, confidence 0.95
Base64-encoded 1x1 PNG used as test icon data.
Reasoning
A base64-encoded 1x1 PNG data URI in a unit test for icon metadata; a standard, benign test fixture.
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.