[BUG] Claude Code v2.1.237 does not advertise URL-mode elicitation on MCP 2026-07-28 (InputRequiredResult cannot be fulfilled)
Claude Code v2.1.237 does not advertise URL-mode elicitation on MCP 2026-07-28
On the 2026-07-28 handshake, Claude Code v2.1.237 advertises an empty elicitation capability:
"capabilities": { "roots": { "listChanged": true }, "elicitation": {} }
Per the 2026-07-28 spec, an empty elicitation: {} means "form mode only." So URL-mode elicitation is never usable: when a server drives the MRTR flow — returning an InputRequiredResult whose input_requests carries an elicitation/create with mode:"url" — no URL is ever surfaced to the user. This blocks OAuth / third-party auth / payment / credential flows.
How this was verified (two independent ways)
- Remote server + wire-logging proxy. Placed a logging proxy between Claude Code and a remote Streamable-HTTP MCP server and captured the
server/discoverhandshake on protocol2026-07-28. The client-capabilities envelope it sent containedelicitation: {}— nourl. - Local minimal server. A thin
mcp>=2stdio server whose one tool returns anInputRequiredResultcarrying amode:"url"elicitation/create(below). When the tool is called, the client cannot fulfill the URL elicitation and the call fails — no URL is surfaced.
Minimal repro server (official Python SDK v2 / 2026-07-28)
pip install "mcp>=2"
url-elicit-repro.py:
#!/usr/bin/env python3
"""Minimal MCP server (SDK v2 / protocol 2026-07-28): one tool that requires a
URL-mode elicitation, via the MRTR InputRequiredResult flow."""
from mcp.server.mcpserver import MCPServer
from mcp.types import ElicitRequest, ElicitRequestURLParams, InputRequiredResult
server = MCPServer("url-elicit-repro")
@server.tool()
def try_url_elicitation() -> InputRequiredResult:
"""Requires a URL-mode elicitation (authorization link) before proceeding."""
return InputRequiredResult(
input_requests={
"authorize": ElicitRequest(
params=ElicitRequestURLParams(
message="Open this URL to authorize (URL-mode elicitation reproduction).",
url="https://example.com/authorize?repro=1",
)
)
},
request_state="url-elicit-repro-1",
)
if __name__ == "__main__":
server.run() # stdio
Steps
claude mcp add url-elicit-repro -- python /absolute/path/to/url-elicit-repro.py- Start Claude Code, then prompt:
Call the try_url_elicitation tool from the url-elicit-repro server.
Expected vs actual
- Expected: Claude Code surfaces the URL from the
elicitation/createand asks for consent to open it. - Actual: the tool call fails and no URL is surfaced, because the client advertised
elicitation: {}(nourl). (An SDK v2 client with no URL support returns-32600 "Elicitation not supported"against this same server.)
Notably the CLI ships URL-elicitation UI (elicitation_url_dialog) and handlers, so the client can render URL mode — it just never advertises elicitation.url, so spec-compliant servers never send it.
Environment: Claude Code v2.1.237 (released 2026-08-20), negotiated MCP protocol 2026-07-28.
Fix: advertise elicitation: { "form": {}, "url": {} } and surface the URL for user consent.
3 Comments
Do you happen to know the latest version of claude code which does properly support MCP elicitation? Thanks!
@dhruvrajan v2.1.237 supports the 2025-11-25 iteration of URL elicitation, just not the 2026-07-28 iteration.
Claude Code would need to advertise in its capabilites that it supports URL elicitation, and process the InputRequireResult response that underlies the 2026-07-28 iteration of URL elicitation.
Let me know if you have any more questions, thanks!
Thank you for raising this, this really needs to be fixed. URL elicitation has so many applications!