List Tools
curl --request GET \
--url https://api.example.com/api/tools/import requests
url = "https://api.example.com/api/tools/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/tools/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/tools/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/tools/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/tools/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/tools/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"tools": [
{
"id": "<string>",
"user_id": "<string>",
"name": "<string>",
"meta": {},
"access_grants": [
{
"principal_type": "<string>",
"principal_id": "<string>",
"permission": "<string>"
}
],
"write_access": true,
"updated_at": 123,
"created_at": 123
}
]
}Functions & Tools
List Tools
Retrieve tools including local tools, OpenAPI servers, and MCP servers
GET
/
api
/
tools
/
List Tools
curl --request GET \
--url https://api.example.com/api/tools/import requests
url = "https://api.example.com/api/tools/"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/tools/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/tools/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/tools/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/tools/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/tools/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"tools": [
{
"id": "<string>",
"user_id": "<string>",
"name": "<string>",
"meta": {},
"access_grants": [
{
"principal_type": "<string>",
"principal_id": "<string>",
"permission": "<string>"
}
],
"write_access": true,
"updated_at": 123,
"created_at": 123
}
]
}Get Tools
curl -X GET "https://your-instance.com/api/tools/" \
-H "Authorization: Bearer YOUR_API_KEY"
- Local tools (Python-based tools stored in the database)
- OpenAPI tool servers
- MCP (Model Context Protocol) tool servers
Response
array
Array of tool objects
Show ToolUserResponse properties
Show ToolUserResponse properties
string
required
Unique identifier for the tool. Server tools use format
server:{id} or server:mcp:{id}string
required
ID of the user who created the tool (for local tools) or server ID (for server tools)
string
required
Display name of the tool
boolean
Whether the tool has user-configurable valves (local tools only)
boolean
OAuth authentication status (MCP servers with OAuth 2.1 only)
integer
required
Unix timestamp of last update
integer
required
Unix timestamp of creation
Access Control
- Admin users (with
BYPASS_ADMIN_ACCESS_CONTROL): See all tools - Regular users: See only:
- Tools they created
- Tools with read access grants
- Server tools with appropriate access grants
Get Tool List
curl -X GET "https://your-instance.com/api/tools/list" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
array
Array of tool objects with access information
Show ToolAccessResponse properties
Show ToolAccessResponse properties
string
required
Tool identifier
string
required
Creator user ID
string
required
Tool name
object
required
Tool metadata
array
required
boolean
required
Whether the current user has write access to this tool
integer
required
Last update timestamp
integer
required
Creation timestamp
Access Determination
Write access is granted if:- User is an admin (with
BYPASS_ADMIN_ACCESS_CONTROL) - User is the tool creator
- User has a write permission grant
- User is in a group with write permission grant
Export Tools
curl -X GET "https://your-instance.com/api/tools/export" \
-H "Authorization: Bearer YOUR_API_KEY"
workspace.tools_export permission for non-admin users.
Response
Returns an array of completeToolModel objects including:
- Tool ID, name, and metadata
- Full source code content
- Tool specifications
- Access grants
Permissions
- Admin users (with
BYPASS_ADMIN_ACCESS_CONTROL): Export all tools - Non-admin users: Requires
workspace.tools_exportpermission, exports only tools with read access
Tool Types
Local Tools
Python-based tools stored in the database:- Identified by simple string IDs (e.g.,
"calculator") - Created and managed through the API
- Support user valves for customization
OpenAPI Tool Servers
External OpenAPI-compliant tool servers:- ID format:
server:{id} - Configured in
TOOL_SERVER_CONNECTIONS - Access controlled via server configuration
MCP Tool Servers
Model Context Protocol servers:- ID format:
server:mcp:{id} - Support OAuth 2.1 authentication
- Access controlled via server configuration
- Return
authenticatedfield for OAuth status