vercel/ai · error · MCPClientError
Server requested additional input, but multi round-trip requ
Error message
Server requested additional input, but multi round-trip requests are not supported yet
What it means
MCPClientError thrown inside DefaultMCPClient.request when a modern-protocol server responds with resultType 'input_required', meaning the server needs additional user input (elicitation) before it can complete the request. This SDK does not yet implement multi round-trip requests, so it throws instead of continuing the exchange.
Source
Thrown at packages/mcp/src/tool/mcp-client.ts:867
cleanup();
return rejectWithAbortError();
}
if (response instanceof Error) {
return rejectAndCleanup(response);
}
try {
if (
this.protocolEra === 'modern' &&
response.result.resultType == null
) {
throw new MCPClientError({
message: 'Modern MCP result is missing resultType',
});
}
if (response.result.resultType === 'input_required') {
throw new MCPClientError({
message:
'Server requested additional input, but multi round-trip requests are not supported yet',
});
}
const result = resultSchema.parse(response.result);
cleanup();
resolve(result);
} catch (error) {
const parseError = MCPClientError.isInstance(error)
? error
: new MCPClientError({
message: 'Failed to parse server response',
cause: error,
});
rejectAndCleanup(parseError);
}
});View on GitHub (pinned to 69428b1f8b)
Solutions
- Upgrade @ai-sdk/mcp to the latest version to check whether multi round-trip/elicitation support has shipped
- Restructure the tool call to provide all required input up front so the server never needs to elicit more (pass all arguments in params)
- Disable or avoid tools that rely on elicitation, or ask the server maintainer for a non-interactive variant
- Handle the error explicitly in your app and surface the missing-input prompt in your own UI, then re-call with complete arguments
Example fix
// before: tool elicits missing parameter mid-run
await client.callTool({ name: 'bookFlight', arguments: { from: 'SFO' } });
// after: supply everything up front
await client.callTool({
name: 'bookFlight',
arguments: { from: 'SFO', to: 'JFK', date: '2026-09-01', confirm: true },
}); Defensive patterns
Strategy: try-catch
Validate before calling
// pre-flight: ensure the tool's declared inputs are fully provided so the server never elicits
const missing = requiredToolInputs.filter(k => !(k in args));
if (missing.length > 0) {
throw new Error(`Missing arguments required to avoid elicitation: ${missing.join(', ')}`);
} Type guard
function isElicitationUnsupported(error: unknown): error is MCPClientError {
return MCPClientError.isInstance(error) && error.message.includes('multi round-trip requests are not supported');
} Try / catch
try {
const result = await client.callTool({ name, arguments });
} catch (error) {
if (isElicitationUnsupported(error)) {
// collect the missing input in your own UI, then re-call with complete arguments
} else {
throw error;
}
} Prevention
- Pass all required tool arguments up front so servers never request elicitation
- Upgrade @ai-sdk/mcp and check release notes for elicitation/multi round-trip support
- Avoid tools that depend on interactive elicitation until support lands
When it happens
Trigger: Calling a tool (or reading a resource/prompt) whose server-side implementation requests elicitation — e.g. a tool that asks for confirmation or missing parameters mid-execution — while connected via the modern protocol. Any request routed through DefaultMCPClient.request can hit this when the server returns resultType 'input_required'.
Common situations: Interactive tools (booking flows, approval workflows, tools that prompt for credentials) used through this client; server-side tools updated to use MCP elicitation while the client SDK is still on a version without multi round-trip support.
Related errors
- '${functionality}' functionality not supported.
- Anthropic Message Batches do not support per-request betas (
- imageModel
- AI_NoSuchModelError
- Cartesia Ink 2 currently supports English only.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/76bbd587cac448f6.
Report an issue: GitHub.