Relax monolith ElicitRequestURLParams.elicitation_id for 2026-07-28#2913
Merged
Claude / Claude Code Review
completed
Jun 19, 2026 in 12m 58s
Code review found 2 potential issues
Found 5 candidates, confirmed 2. See review comments for details.
Details
| Severity | Count |
|---|---|
| 🔴 Important | 0 |
| 🟡 Nit | 1 |
| 🟣 Pre-existing | 1 |
| Severity | File:Line | Issue |
|---|---|---|
| 🟡 Nit | src/mcp/types/_types.py:1868-1876 |
Docstring 'same direction' sentence now contradicts the new 2026-07-28 note |
| 🟣 Pre-existing | src/mcp/types/_types.py:1958-1968 |
Example url_elicitation_client.py reads non-existent 'elicitationId' attribute (pre-existing, related) |
Annotations
Check warning on line 1876 in src/mcp/types/_types.py
claude / Claude Code Review
Docstring 'same direction' sentence now contradicts the new 2026-07-28 note
The unchanged sentence "This MUST correspond to the ID of a request previously issued in the same direction" now contradicts the new 2026-07-28 clause added directly below it, which says the field must name a request the *client* previously issued (a server-sent cancellation terminating a `subscriptions/listen` stream names a request issued in the opposite direction). Consider qualifying the same-direction sentence as applying through 2025-11-25, matching the vendored `v2026_07_28` surface which
Check notice on line 1968 in src/mcp/types/_types.py
claude / Claude Code Review
Example url_elicitation_client.py reads non-existent 'elicitationId' attribute (pre-existing, related)
Pre-existing issue (not introduced by this PR, but adjacent to the field being relaxed): `examples/snippets/clients/url_elicitation_client.py:73` reads `getattr(params, "elicitationId", None)`, but pydantic only exposes the snake_case attribute `elicitation_id`, so the example always prints `Elicitation ID: None` even when the server supplied one. Now that `elicitation_id` can also legitimately be `None` at 2026-07-28, the example should read `params.elicitation_id` and handle a real `None` expl
Loading