{"version":"2.1.323","anchor":"mcp-calls-now-run-toollist-hooks-before-the-call","canonical_anchor":"mcp-calls-now-run-toollist-hooks-before-the-call","heading":"MCP tool calls are refused when a hook has removed the tool","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.323\/e\/mcp-calls-now-run-toollist-hooks-before-the-call","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.323","markdown":"### MCP tool calls are refused when a hook has removed the tool\n\nBefore an MCP tool call runs, tool.list hooks are now consulted, and the call is refused if one of them removed the tool\n\n**What**\n\nMCP servers supply extra tools to Claude Code. A hook is a script or rule that runs at a set point. Hooks that run when the tool list is built, called tool.list hooks, can remove tools from that list.\n\nBefore an MCP tool call goes ahead, Claude Code now checks those hooks. If one removed the tool, the call is refused with \"mcp_call refused: a tool.list hook removed the tool\". Before, only a check for the cloud browser ran at that point.\n\n**Why**\n\nRemoving a tool with a hook now also blocks calls to it, not only its appearance in the list.\n\n- Area: Hooks\n- Names: `tool.list`\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}