Skip to content

Commit adf14e2

Browse files
authored
Merge pull request modelcontextprotocol#1825 from ArcadeAI/elicitation/expect-server-flag
fix: Clearer language around new feature status of URL elicitation
2 parents 970851e + f9acb6e commit adf14e2

File tree

2 files changed

+26
-19
lines changed

2 files changed

+26
-19
lines changed

docs/specification/draft/changelog.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ the previous revision, [2025-06-18](/specification/2025-06-18).
1414
3. Enhance authorization flows with incremental scope consent via `WWW-Authenticate` ([SEP-835](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/835))
1515
4. Provide guidance on tool names ([SEP-986](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1603))
1616
5. Update `ElicitResult` and `EnumSchema` to use a more standards-based approach and support titled, untitled, single-select, and multi-select enums ([SEP-1330](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1330)).
17-
6. Added support for [URL mode elicitation](/specification/draft/client/elicitation#url-elicitation-requests)([SEP-1036](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/887))
17+
6. Added support for [URL mode elicitation](/specification/draft/client/elicitation#url-elicitation-requests) ([SEP-1036](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/887))
1818
7. Add tool calling support to sampling via `tools` and `toolChoice` parameters ([SEP-1577](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1577))
1919
8. Add support for OAuth Client ID Metadata Documents as a recommended client registration mechanism ([SEP-991](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/991), PR [#1296](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1296))
2020
9. Add experimental support for [tasks](/specification/draft/basic/utilities/tasks) to enable tracking durable requests with polling and deferred result retrieval ([SEP-1686](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1686)).

docs/specification/draft/client/elicitation.mdx

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,23 @@ Note that complex nested structures, arrays of objects (beyond enums), and other
324324

325325
### URL Mode Elicitation Requests
326326

327+
<Note>
328+
329+
**New feature:** URL mode elicitation is introduced in the `2025-11-25` version of the MCP specification. Its design and implementation may change in future protocol revisions.
330+
331+
</Note>
332+
327333
URL mode elicitation enables servers to direct users to external URLs for out-of-band interactions that must not pass through the MCP client. This is essential for auth flows, payment processing, and other sensitive or secure operations.
328334

335+
URL mode elicitation requests **MUST** specify `mode: "url"`, a `message`, and include these additional parameters:
336+
337+
| Name | Type | Description |
338+
| --------------- | ------ | ----------------------------------------- |
339+
| `url` | string | The URL that the user should navigate to. |
340+
| `elicitationId` | string | A unique identifier for the elicitation. |
341+
342+
The `url` parameter **MUST** contain a valid URL.
343+
329344
<Note>
330345
**Important**: URL mode elicitation is *not* for authorizing the MCP client's
331346
access to the MCP server (that's handled by [MCP
@@ -336,15 +351,6 @@ URL mode elicitation enables servers to direct users to external URLs for out-of
336351
elicitation URL the server wants them to open.
337352
</Note>
338353

339-
URL mode elicitation requests **MUST** specify `mode: "url"` and include these additional parameters:
340-
341-
| Name | Type | Description |
342-
| --------------- | ------ | ----------------------------------------- |
343-
| `url` | string | The URL that the user should navigate to. |
344-
| `elicitationId` | string | A unique identifier for the elicitation. |
345-
346-
The `url` parameter **MUST** contain a valid URL. The `message` parameter **MUST NOT** contain a URL.
347-
348354
#### Example: Request Sensitive Data
349355

350356
This example shows a URL mode elicitation request directing the user to a secure URL where they can provide sensitive information (an API key, for example).
@@ -384,18 +390,19 @@ of band and the client is not aware of the outcome until and unless the server s
384390

385391
### Completion Notifications for URL Mode Elicitation
386392

387-
Servers **SHOULD** send a `notifications/elicitation/complete` notification when an
393+
Servers **MAY** send a `notifications/elicitation/complete` notification when an
388394
out-of-band interaction started by URL mode elicitation is completed. This allows clients to react programmatically if appropriate.
389395

390-
- The notification **MUST** only be sent to the client that initiated the elicitation request.
391-
- The notification **MUST** include the `elicitationId` established in the original
392-
`elicitation/create` request.
393-
- Clients **MUST** ignore notifications referencing unknown or already-completed IDs.
394-
- If a completion notification never arrives, clients **SHOULD** provide a manual
395-
way for the user to continue the interaction.
396+
Servers sending notifications:
397+
398+
- **MUST** only send the notification to the client that initiated the elicitation request.
399+
- **MUST** include the `elicitationId` established in the original `elicitation/create` request.
400+
401+
Clients:
396402

397-
Clients **MAY** use the notification to automatically retry requests that received a [URLElicitationRequiredError](#error-handling), update the user interface, or otherwise continue an interaction.
398-
However, because delivery of the notification is not guaranteed, clients must not wait indefinitely for a notification from the server.
403+
- **MUST** ignore notifications referencing unknown or already-completed IDs.
404+
- **MAY** wait for this notification to automatically retry requests that received a [URLElicitationRequiredError](#error-handling), update the user interface, or otherwise continue an interaction.
405+
- **SHOULD** still provide manual controls that let the user retry or cancel the original request (or otherwise resume interacting with the client) if the notification never arrives.
399406

400407
#### Example
401408

0 commit comments

Comments
 (0)