Menu

AI

MCP Elicitation: When a Server Asks the User

What MCP elicitation is, how form and URL modes work in the stateless 2026-07-28 spec, a JSON example, what changed since 2025, and the mistakes to avoid.

By: Irina ShvayaOctober 28, 2026

MCP Elicitation: When a Server Asks the User

This page is part of our MCP specification reference, a plain-English guide to the Model Context Protocol spec (version 2026-07-28), within The MCP Guide. Building a server? See MCP development.

Status in the 2026-07-28 spec: core (optional client feature)

Elicitation is the part of the Model Context Protocol (MCP) that lets a server ask the user for more information mid-request. The server explains what it needs. The AI app (the client) shows the user a form or a link, and the answer goes back to the server.

As of October 2026, elicitation is the only client feature in the 2026-07-28 specification that is not deprecated. Roots and Sampling, the other two, are on their way out. This page explains how elicitation works now, what changed, and where teams go wrong.

Key Takeaways

  • Elicitation lets a server pause a tool call, prompt or resource read to ask the user a question.
  • It has two modes: form mode for ordinary data and URL mode for anything sensitive.
  • In the 2026-07-28 spec, the server returns an "input required" result and the client retries with the answer.
  • Servers must never use form mode to ask for passwords, API keys, tokens or payment details.
  • The user can accept, decline or cancel, and the server must handle all three.

Why elicitation exists

Many real tasks need a human decision in the middle. A booking tool may need a date. A deployment tool may need a "yes, go ahead". A server that connects to a third-party service may need the user to sign in to that service.

Without elicitation, the server has two bad options. It can fail and make the AI guess, or it can ask the model to relay the question in chat. Elicitation gives the server a structured, visible way to ask the user directly, while the client stays in control of what is shown. The elicitation page of the spec says this lets "clients maintain control over user interactions and data sharing."

How elicitation works in 2026-07-28

The 2026-07-28 spec made MCP stateless. Servers can no longer send their own requests to the client mid-call. The patterns overview says plainly that "Servers MUST NOT initiate JSON-RPC requests."

Elicitation now rides on Multi Round-Trip Requests (MRTR):

  1. The client sends a request, such as tools/call.
  2. The server replies with a result whose resultType is input_required. Inside, an inputRequests map holds one or more elicitation/create requests.
  3. The client shows the question to the user and collects the answer.
  4. The client retries the original request with a new ID, adding the answers in inputResponses and echoing any requestState the server sent.
  5. The server finishes the work and returns a normal result.

According to the MRTR page, only tools/call, prompts/get and resources/read may return an input-required result.

Declaring the capability

A client that supports elicitation declares it on every request, inside _meta. It lists the modes it handles, form, url or both. An empty elicitation object means form mode only. Servers must not send a mode the client did not declare.

Example: a form-mode request

This is the form-mode example from the spec. The server places it inside inputRequests:

{
  "method": "elicitation/create",
  "params": {
    "mode": "form",
    "message": "Please provide your GitHub username",
    "requestedSchema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" }
      },
      "required": ["name"]
    }
  }
}

The client returns the user's answer inside inputResponses on the retry:

{
  "action": "accept",
  "content": { "name": "octocat" }
}

Form mode vs URL mode

Form modeURL mode
What the user seesA form built from a simple JSON SchemaA link the user agrees to open
Who sees the dataThe client sees the answersThe client does not see what the user enters
Good forNames, dates, choices, confirmationsSign-ins to third parties, API keys, payments
Schema limitsFlat object; string, number, boolean and enum fields onlyNo schema; just url and message

Form schemas are kept simple on purpose. The spec says nested objects and other advanced JSON Schema features "are intentionally not supported to simplify client user experience."

URL mode sends the user to a page the server controls. When the user agrees, the client replies accept. That only means the user consented, not that the task is done. The server checks on the retry whether the out-of-band step finished.

Three possible answers

Every response carries an action:

  • accept: the user submitted (form mode includes content).
  • decline: the user said no.
  • cancel: the user closed the dialog without choosing.

The spec says servers "MUST handle cases where the user declines or cancels."

What changed across spec versions

VersionChange
2025-06-18Elicitation added as a new client feature, form-based (changelog)
2025-11-25URL mode added; enum schemas reworked; default values allowed (changelog)
2026-07-28Delivered through MRTR instead of a server-sent elicitation/create request; notifications/elicitation/complete and elicitationId removed (changelog)

In 2025-11-25, the server sent elicitation/create as its own JSON-RPC request. Under 2026-07-28 that is gone. The changelog explains that servers which need to track an elicitation across retries now "encode their own identifier in requestState." The wider shift is covered in why MCP became stateless.

Common mistakes

  • Asking for secrets in a form. The spec says servers "MUST NOT use form mode elicitation to request sensitive information such as passwords, API keys, access tokens, or payment credentials." Use URL mode.
  • Using URL mode to sign users in to your own server. URL mode is for third-party access. Sign-in to the MCP server itself belongs to MCP authorization.
  • Trusting requestState blindly. It passes through the client. The MRTR page says servers must treat it as attacker-controlled and protect it (for example with HMAC) if it affects access or business logic.
  • Putting personal data in the URL. Servers must not include credentials or personal information in a URL-mode link, or send a pre-authenticated URL.
  • Skipping the identity check. The spec describes a phishing attack where one user tricks another into finishing a sign-in. The server must confirm that the person who opens the URL is the person who started the request.
  • Treating "accept" in URL mode as "done". It only means the user agreed to open the link.

Who needs to care

If you run an AI app, elicitation is how third-party servers will ask your users things. Check that your client shows which server is asking, as the spec requires. If you build servers, elicitation replaces ad-hoc "please tell the assistant" text with a clean, auditable step. The MCP security checklist covers the related approval controls.

Next step

Elicitation sits on top of the multi-round-trip pattern, so read MCP multi-round-trip requests explained next. To build it hands-on, try Lesson 18 of Learn MCP, or browse the rest of the MCP specification reference.

Frequently asked questions

Is elicitation deprecated in the 2026-07-28 MCP spec?

No. Roots and Sampling were deprecated in 2026-07-28, but elicitation was not. It remains a core, optional client feature. Only its delivery changed: it now uses the multi-round-trip pattern instead of a server-sent request.

Can an MCP server ask for a password with elicitation?

Not through form mode. The spec forbids form mode for passwords, API keys, access tokens and payment credentials. The server must use URL mode, so the user types the secret on the server's own secure page and the client never sees it.

What happens if the user declines?

The client returns action: "decline" (or cancel if the user simply closed the dialog). The server must handle both cases, for example by offering an alternative or ending the task cleanly. Servers should never assume an elicitation will succeed.

Does elicitation work with every AI app?

Only with clients that declare the elicitation capability on their requests. Servers must not send elicitation requests, or a mode, that the client did not declare. As of October 2026, check each client's documentation for its support.

How is elicitation different from MCP Apps?

Elicitation is a simple, client-rendered form or link defined in the core spec. MCP Apps is an optional extension that lets a server ship its own interactive HTML interface, rendered in a sandboxed frame.

You Might Also like to Read

Get a FREE Website Audit

Enter your website and get a 20–30 page SEO, GEO, AEO & CRO audit within 24 hours. Completely free.

Don't have a site yet? Get in touch →

Ready to speak with a marketing expert?
Give us a call! (916) 866-7893

Websites Launched
1407
Websites Launched
Marketing Experts
29
Marketing Experts
Hours of Dedicated Work
204533
Hours of Dedicated Work
Irina S.Benjamin G.Jeanette M.David G.