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

  1. Upgrade @ai-sdk/mcp to the latest version to check whether multi round-trip/elicitation support has shipped
  2. Restructure the tool call to provide all required input up front so the server never needs to elicit more (pass all arguments in params)
  3. Disable or avoid tools that rely on elicitation, or ask the server maintainer for a non-interactive variant
  4. 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

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


AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30). Data as JSON: /api/errors/76bbd587cac448f6. Report an issue: GitHub.