allMcpTool schema missing arguments field causes agents to call MCP tools without required params

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Product / feature

  • Cursor MCP integration
  • CallMcpTool tool used by agents

Description

There is a mismatch between the schema exposed to the agent for CallMcpTool and the actual runtime behavior.

  • The schema shown to the agent only exposes:
    {
      server: string;
      toolName: string;
    }
    
  • In reality, the runtime also supports and requires an arguments payload for many MCP tools:
    CallMcpTool({ server, toolName, arguments: { ... } })
    

Because the arguments field is missing from the schema, agents assume they cannot pass any parameters and end up calling MCP tools without required inputs, which triggers input validation errors on the MCP server.

This is not a problem with the MCP server itself — the MCP tool descriptors correctly declare required fields. The problem is that the schema/signature presented to the agent is incomplete, so the agent makes systematically wrong calls.


Reproduction steps

Actual behavior

  • CallMcpTool schema exposed to the agent does not include an arguments field.

  • Agents therefore call MCP tools with no arguments, even when the tool’s input schema requires them.

  • MCP tools return validation errors like:

    Invalid arguments for tool X: expected string, received undefined, message: “Required”

  • Only when the agent (or user) manually adds an undocumented arguments field do the calls succeed.

Why this matters

  • MCP tools often have non-optional input fields (e.g. action, id, key, etc.).
  • As long as arguments is missing from the schema, agents will systematically under-supply inputs and generate noisy validation errors, even though the MCP server and descriptors are correct.
  • This affects any MCP server that relies on required parameters, including CloudBase MCP and custom servers.

Steps to Reproduce

  1. Configure a standard MCP server with a tool that has a required input field.
    Example: CloudBase MCP envQuery:

    type EnvQueryInput = {
      action: 'list' | 'info' | 'domains' | 'hosting'; // required
    };
    
  2. Let the agent call this tool via CallMcpTool using only the schema it sees (no arguments field):

    {"server":"user-cloudbase","toolName":"envQuery"}
    
  3. The MCP server returns an error similar to:

    {
      "error": "MCP error -32602: MCP error -32602: Invalid arguments for tool envQuery: [
        {
          \"expected\": \"'list' | 'info' | 'domains' | 'hosting'\",
          \"received\": \"undefined\",
          \"code\": \"invalid_type\",
          \"path\": [\"action\"],
          \"message\": \"Required\"
        }
      ]"
    }
    
  4. Now manually call CallMcpTool with an arguments payload, even though it is not in the schema:

    {
      "server": "user-cloudbase",
      "toolName": "envQuery",
      "arguments": { "action": "info" }
    }
    
  5. This time the MCP tool works as expected and returns a valid response (in CloudBase’s case, an AUTH_REQUIRED with a suggested auth flow, then a device-code login challenge, etc.).

This proves that:

  • The runtime does support and forward arguments.
  • The schema shown to the agent is simply incomplete, leading it to omit required parameters.

Expected Behavior

  • The CallMcpTool tool signature exposed to the agent should include an arguments field, e.g.:

    {
      server: string;
      toolName: string;
      arguments?: Record<string, unknown>;
    }
    
  • The schema presented to the agent and the runtime behavior should be consistent, so that agents can correctly infer how to call MCP tools with required inputs.

Operating System

MacOS

Version Information

Version: 2.6.19 (Universal)
VSCode Version: 1.105.1
Commit: 224838f96445be37e3db643a163a817c15b36060
Date: 2026-03-12T04:07:27.435Z
Build Type: Stable
Release Track: Default
Electron: 39.4.0
Chromium: 142.0.7444.265
Node.js: 22.22.0
V8: 14.2.231.22-electron.0
OS: Darwin arm64 24.6.0

For AI issues: which model did you use?

Auto

For AI issues: add Request ID with privacy disabled

4f814b68-79ad-4e44-8d5a-a0c915c23a4c

Does this stop you from using Cursor

Yes - Cursor is unusable

Hey, this is a known issue. A few users have already run into it.

Quick clarification: the CallMcpTool schema actually does include an optional arguments field. The issue isn’t that the schema is missing the field. It’s that the model sometimes doesn’t populate it during MCP tool auto-calls. So the infra supports passing arguments, the model just skips them.

These threads describe the same issue:

As a workaround, try being super explicit in your skills and prompts about the call format:

ALWAYS call envQuery with arguments: {"action": "<action>"}
NEVER call envQuery without the "action" argument.

You can also try a different model. This behavior varies.

Let me know if the workaround helps.

A post was merged into an existing topic: MCP tool called without required “key” arg during Agent auto-call, manual call works