Prime Agent's tool system is now ipython-only at the core; bash and edit were removed as first-class tools in v0.2.6, leaving ToolName as a single constant value. The pi runtime API lets you query all registered tools (built-in and extension) and switch the active subset dynamically via setActiveTools, getActiveTools, and getAllTools. The ipython tool executes Python code in an embedded IPython kernel, providing a persistent, stateful execution environment across invocations.
The only ToolName recognized by packages/coding-agent/src/core/tools/index.ts is "ipython"; bash and edit have been removed as first-class tool names, consistent with their removal in v0.2.6.[1] createAllToolDefinitions and createAllTools in packages/coding-agent/src/core/tools/index.ts return a Record<ToolName, ToolDef> / Record<ToolName, Tool> containing only an ipython entry, each accepting an optional ToolsOptions for per-tool configuration.[1] The ToolsOptions interface has a single optional property ipython?: IpythonToolOptions, which is threaded through to all createAll* helpers.[1] ACP-provided MCP tools are registered as first-class callable tools in Prime Agent's native tool-dispatch path via a CPython-proxy adapter in src/core/tools/acp-mcp.ts, making them invocable without a full MCP round-trip. src/core/mcp/mcp-manager.ts routes ACP-origin MCP tools to the CPython-proxy adapter in src/core/tools/acp-mcp.ts rather than the generic MCP handler. New ACP tool categories should follow the src/core/tools/acp-mcp.ts pattern to ensure registration in the native dispatch table.
pi.setActiveTools(toolNames: string[]) changes the active tool set at runtime; pi.getActiveTools() returns the currently active tool names; and pi.getAllTools() returns all registered ToolInfo objects, covering both built-in and extension tools — see Extension API and lifecycle for extension tool registration.[2]
Sources