development: absorbed openclaw-plugin-dev as a workflow, with reference docs for plugin structure, hooks, tools, state, config. hf-hangman-lab: hf-wakeup workflow — full agent wakeup lifecycle: set busy → check due slots → select & defer → identify task → plan work → create work channel → execute. All branches end with status reset to idle. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
41 lines
962 B
Markdown
41 lines
962 B
Markdown
# 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.)
|