Create Tool
workspace.tools or workspace.tools_import permission for non-admin users.
Request Body
string
required
Unique identifier for the tool. Must be alphanumeric with underscores only (will be converted to lowercase).
string
required
Display name for the tool
string
required
Python source code for the tool. Must define a
Tools class with tool methods. The system will:- Replace imports with internal versions
- Load and validate the tool module
- Extract tool specifications from the class
- Parse frontmatter manifest
object
required
Tool metadata
array
Access control configuration
Response
Returns the createdToolResponse object with ID, metadata, and specifications.
Get Tool by ID
Path Parameters
string
required
The tool identifier
Response
ReturnsToolAccessResponse with the complete tool data and write_access flag.
Update Tool
Request Body
Same as Create Tool request body.Update Tool Access
Request Body
array
required
Array of access grant objects. Replaces existing grants.
sharing.public_tools permission.
Delete Tool
Response
boolean
true if deletion was successful, false otherwiseValve Management
Get Tool Valves
Get Valves Schema
Valves class).
Update Tool Valves
User Valves
Get User Valves
Get User Valves Schema
UserValves class).
Update User Valves
Load Tool from URL
Request Body
string
required
GitHub URL to the tool file or folder. URLs are automatically converted to raw.githubusercontent.com format.
Response
string
Suggested tool name extracted from the filename/folder
string
Tool source code
Python Tool Pattern
Tools should follow this pattern:- Extracts tool specifications from the
Toolsclass methods - Parses frontmatter as manifest
- Validates valve schemas
- Generates API documentation from docstrings
Error Responses
400 Bad Request- Invalid tool ID format
- Tool ID already exists
- Invalid Python code
- Failed to load tool module
- Missing authentication
- Insufficient permissions
- Tool does not exist
Authentication & Permissions
- Most operations require verified user authentication
- Creating tools requires
workspace.toolsorworkspace.tools_importpermission - Exporting tools requires
workspace.tools_exportpermission - Write operations require tool ownership, write grant, or admin privileges
- Loading from URL requires admin privileges