Agent team teammates fail to use ToolSearch / MCP tools despite having them

Resolved 💬 2 comments Opened Feb 9, 2026 by LaughingKuma Closed Feb 9, 2026

Bug Description

Teammates spawned via agent teams have ToolSearch and deferred MCP tools in their tool list, but consistently fail to use them. They attempt Skill(ToolSearch) (which fails), then fall back to curl or WebSearch instead of calling ToolSearch as a direct tool.

Environment

  • Claude Code version: 2.1.37
  • OS: Linux 6.17.0-12-generic
  • MCP server: FastMCP 2.14.5, streamable-http transport, Dockerized on port 8080
  • .mcp.json configured with "type": "http" pointing to http://localhost:8080/mcp

Steps to Reproduce

  1. Configure an MCP server with HTTP transport in .mcp.json
  2. Create an agent team with TeamCreate
  3. Spawn a teammate with a prompt instructing it to use ToolSearch to load MCP tools
  4. Observe the teammate's behavior

Expected Behavior

Teammate calls ToolSearch directly (like Read or Grep), loads deferred MCP tools, and uses them.

Actual Behavior

Teammate consistently:

  1. Tries Skill(ToolSearch) → fails with "Unknown skill: ToolSearch"
  2. Falls back to WebSearch("+awl") or curl to the MCP server directly
  3. Only discovers ToolSearch is a direct tool after explicit correction from the team lead ("list your tools, you will find ToolSearch")

When a teammate is asked to list its own tools, it correctly shows ToolSearch as tool #23 with description "Load deferred MCP tools". But when prompted to use ToolSearch, it misidentifies it as a Skill.

Evidence

Subagents work fine: A subagent (Task without team_name) correctly uses ToolSearch and MCP tools on the first try, every time.

Teammates have the tools: When a teammate is asked to enumerate its tools, ToolSearch appears in the list alongside all deferred mcp__awl__* tools. The tools are there — the model just doesn't use them correctly.

Manual intervention works: When a user directly interacts with a teammate (via Shift+Up/Down) and tells it to call ToolSearch, it works. The issue is that spawned teammates with task prompts don't use ToolSearch unprompted.

Prompts Tried (all failed on first attempt)

  1. "Call ToolSearch with query '+awl'" → Skill(ToolSearch)
  2. "Use the ToolSearch tool (NOT WebSearch!) with query '+awl'" → Grep search, then curl
  3. "YOUR FIRST ACTION MUST BE: Call the tool named 'ToolSearch'" → Skill(ToolSearch)
  4. "Before doing anything, list your tools. You will find ToolSearch." → still Skill(ToolSearch) first
  5. Explicit correction message from lead → then works

Hypothesis

The model doesn't recognize "ToolSearch" as a built-in tool when processing the spawn prompt. It pattern-matches the name to the Skill invocation mechanism. Subagents don't have this problem because they run in-process and inherit the parent's tool environment with full context about what ToolSearch is.

The teammate session loads the tools correctly (they're in the tool list), but the model's prompt processing doesn't give ToolSearch the same recognition as familiar tools like Read, Grep, or Bash.

Workaround

After the teammate fails with Skill(ToolSearch), send it a direct message: "You DO have ToolSearch. It's a direct tool like Read or Grep. Just call it." The teammate then uses it correctly for the rest of the session.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗