Develop tools for SpoonOS agents. Use when creating custom tools, MCP servers, toolkit extensions, or configuring tool managers.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add jiayaoqijia/cryptoskill --skill xspoonai-official-spoon-tool-development --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Xspoonai Official Spoon Tool Development?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jiayaoqijia-xspoonai-official-spoon-tool-development)More formats (shields.io, HTML) on the badges page.
---
name: spoon-tool-development
description: Develop tools for SpoonOS agents. Use when creating custom tools, MCP servers, toolkit extensions, or configuring tool managers.
---
# Tool Development
Build tools for SpoonOS agents using BaseTool and FastMCP.
## Tool Types
| Type | Use Case |
|------|----------|
| `BaseTool` | Local Python tools |
| `MCPTool` | External MCP servers |
| `FastMCP` | Build MCP servers |
## Quick Start
```python
from spoon_ai.tools.base import BaseTool
from pydantic import Field
class MyTool(BaseTool):
name: str = "my_tool"
description: str = "Tool description"
parameters: dict = Field(default={
"type": "object",
"properties": {
"param": {"type": "string"}
},
"required": ["param"]
})
async def execute(self, param: str) -> str:
return f"Result: {param}"
```
## Scripts
| Script | Purpose |
|--------|---------|
| [base_tool.py](scripts/base_tool.py) | BaseTool implementation |
| [mcp_tool.py](scripts/mcp_tool.py) | MCPTool configuration |
| [fastmcp_server.py](scripts/fastmcp_server.py) | FastMCP server |
| [tool_manager.py](scripts/tool_manager.py) | ToolManager usage |
## References
| Reference | Content |
|-----------|---------|
| [error_handling.md](references/error_handling.md) | Error patterns |
| [testing.md](references/testing.md) | Testing tools |
## ToolManager Methods
| Method | Description |
|--------|-------------|
| `add_tool(tool)` | Add single tool |
| `remove_tool(name)` | Remove by name |
| `execute(name, input)` | Execute tool |
| `to_params()` | Get OpenAI specs |
## Best Practices
1. Use async for all I/O operations
2. Return ToolResult/ToolFailure
3. Validate inputs before execution
4. Implement proper error handling
5. Use environment variables for secrets
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!