# X_AGENT_TOOL_UNEXPOSED

## Means

an agent lists a tool that is neither in-process nor an MCP-exposed action

## Typical cause

an `agent({ tools })` entry that is an action declaring no `mcp` block, or `mcp: { expose: false }`, and is not an `inProcessTool()`. Refused at **declaration** rather than filtered at the call, because a silently dropped tool is the worst of both: the declaration reads as if the model can call it, and the model is never offered it

## Fix

`inProcessTool({ name, description, input, execute })` for a tool only this agent may call; or add `mcp: { expose: true }` to the action to offer it to MCP clients too; or drop it from the agent's `tools`

[MCP and AI](/error-codes#mcp-and-ai)
