# Tool Registration ## Interface ```typescript // Without agent context api.registerTool({ name: "my-tool", description: "Does something", inputSchema: { type: "object", properties: { param: { type: "string", description: "..." }, }, required: ["param"], }, execute: async (toolCallId, params) => { const { param } = params as { param: string }; return { result: "ok" }; }, }); // With agent context (factory function) api.registerTool((ctx) => ({ name: "my-contextual-tool", description: "...", inputSchema: { /* ... */ }, execute: async (toolCallId, params) => { const agentId = ctx.agentId; return { result: agentId }; }, })); ``` ## Key Points - Interface is `execute: async (toolCallId, params)`, NOT `handler:` - Use `inputSchema` (JSON Schema), NOT `parameters` - Return `{ result: "..." }` object - Factory form `(ctx) => ({...})` gives access to agent context (agentId, sessionKey, etc.)