Understanding Tool Registration
Every API tool in HandsAI consists of three layers:- Provider - The API service (base URL, authentication)
- Tool - A specific endpoint within that API
- Parameters - Input fields the endpoint requires
Tool Properties
When registering a tool, you’ll configure these core properties:| Property | Type | Description |
|---|---|---|
name | String | Human-readable tool name (e.g., “Send Email via Resend”) |
code | String | Unique identifier for MCP discovery (e.g., resend-send-email) |
description | String | What the tool does - shown to AI agents |
endpointPath | String | API path, supports {param} placeholders (e.g., /repos/{owner}/{repo}/issues) |
httpMethod | Enum | GET, POST, PUT, DELETE, or PATCH |
providerId | Long | ID of the parent API provider |
enabled | Boolean | Whether the tool is active (default: true) |
isExportable | Boolean | Can be included in exports (default: false) |
ApiTool.java:23-44 and CreateApiToolRequest.java:14-24
Registration Methods
- Admin API (Manual)
- Batch Registration
Step 1: Create the API Provider
First, register the external API service:id (e.g., 3) - you’ll need it for the next step.Source: ProviderController.java:30-34Step 2: Register the Tool
Now create a tool endpoint for that provider:AdminToolController.java:30-35Step 3: Verify Registration
Check that your tool was registered correctly:handsai-go-bridge.Parameter Types
HandsAI supports five parameter types:- STRING - Text values (email addresses, titles, descriptions)
- NUMBER - Integers or decimals (limits, page numbers)
- BOOLEAN - True/false flags (
true,false) - ARRAY - JSON arrays (e.g.,
["linkedin", "twitter"]) - OBJECT - Complex JSON objects (currently experimental)
ParameterType.java:3-9
Parameter Schema
ToolParameter.java:18-26
Path Parameters
Use curly braces{paramName} in endpointPath for dynamic URL segments:
ToolExecutionService.java:237-252
Testing Your Tool
Manual Health Check
AdminToolController.java:67-70
Execute via MCP
Once registered, tools appear in the MCP tools list:Best Practices
Use Descriptive Code Names
Use Descriptive Code Names
Choose
code values that indicate both provider and action:- ✅
resend-send-email - ✅
github-create-issue - ❌
send(too vague) - ❌
tool1(not descriptive)
Write Clear Descriptions
Write Clear Descriptions
Descriptions are shown to AI agents. Be specific:
- ✅ “Creates a new issue in a GitHub repository”
- ❌ “GitHub tool” (too vague)
Mark Optional Parameters
Mark Optional Parameters
Set
required: false for optional fields and provide sensible defaults:Enable Export for Reusable Tools
Enable Export for Reusable Tools
Set
isExportable: true for tools you want to share or back up:Common Issues
Next Steps
Import/Export Tools
Learn batch operations for tool management
Parameter Types
Deep dive into parameter handling
Provider Management
Configure authentication and base URLs
API Reference
Complete endpoint documentation