This is an OpenAI MCP extension, built on MCP form elicitation. Only ChatGPT shows these forms, on desktop and web.
requestFormInput lets a tool ask the user for input before it finishes. ChatGPT shows a native form, then calls the tool again with the answer. On top of standard MCP forms, it supports suggested values, option descriptions, thumbnails and resource pickers.
Example
A CAD app asks which part to inspect before opening it.Parameters
extra
The second argument of the tool handler.
params
Each property of
requestedSchema is an MCP form field (string, number, integer, boolean, single or multiple choice), with these additions:
Resource picker
options lists the resources you offer, and userOptions lets users add their own files or directories. In an array field, selection: "explicit" (the default) lets users select and deselect options, while "implicit" keeps every item that remains when the form is submitted. Implicit selection always lets users add files. On web, directory selection isn’t supported, and a form opened from a view only allows explicit selection without uploads.
Returns
requestFormInput returns an input_required result: return it from the handler so ChatGPT shows the form. When ChatGPT calls the tool again with the answer, it returns what the user did. content is only set when the user accepts.
How it works
The form uses MCP’s multi-round-trip requests, which ChatGPT requires for forms. The tool returns anelicitation/create input request whose own requestedSchema is empty, and the OpenAI form goes in _meta["openai/elicitation"].requestedSchema.
requestFormInput throws when the connection is older than MCP 2026-07-28, or when the client doesn’t declare both elicitation.form and the openai/elicitation form extension. It also throws when the answer has no valid action, doesn’t match requestedSchema, or names a resource you didn’t offer in a picker that allows no uploads.
registerTool
Register the tool that asks for input
McpServer
Every method of the server