Why Native Tools?
Claude usescomputer_20250124. OpenAI uses computer_use_preview. Gemini uses function calling. You don’t want to maintain three implementations.
Add a tool to your environment, and HUD adapts it to whatever agent connects:
computer_20250124 and bash_20250124. OpenAI gets compatible function calls. Same environment, every agent.
How It Works
Tools declarenative_specs that tell agents how to register with their provider:
- SDK checks for native specs matching the agent type
- If found, registers using the provider’s native format
- If not, falls back to standard function calling
role are mutually exclusive—you can’t have both BashTool (Claude) and ShellTool (OpenAI) active. When one is accepted natively, the other is excluded.
Choosing Tools
Match tools to your agent:| Agent | Computer | Shell | Editor | Memory |
|---|---|---|---|---|
| Claude | AnthropicComputerTool | BashTool | EditTool | ClaudeMemoryTool |
| OpenAI | OpenAIComputerTool | ShellTool | ApplyPatchTool | SessionMemoryTool |
| Gemini | GeminiComputerTool | GeminiShellTool | GeminiEditTool | GeminiMemoryTool |
| Style | Read | Search | Glob | List |
|---|---|---|---|---|
| OpenCode | ReadTool | GrepTool | GlobTool | ListTool |
| Gemini CLI | GeminiReadTool | GeminiSearchTool | GeminiGlobTool | GeminiListTool |
Customizing Tools
Need different behavior? Subclass:bash_20250124, but with your restrictions.
Tool Hooks
For simpler customization without subclassing, use@tool.before and @tool.after:
@tool.before runs before execution:
- Receives all tool arguments as kwargs
- Return modified kwargs to change arguments
- Return
Noneto proceed unchanged - Raise an exception to block execution
@tool.after runs after execution:
- Receives tool arguments plus
result= - Return modified result to change output
- Return
Noneto keep original result
Creating New Tools
For entirely new capabilities:For Model Training
Training your own model? Three options:- Use existing tools — Train your model on HUD’s standard schemas
- Subclass and adapt — Modify behavior, keep compatible schemas
- Define new specs — Create schemas optimized for your model