List tools
GET
https://app.sulus.ai/api/tools
List tools you can access
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Query parameters
search
string
Optional
Nullable
Validation:
string (name contains-filter)Stored in
tools.namestatus
string
Optional
Nullable
Validation:
only draft or published are honouredStored in
tools.statustype
string
Optional
Nullable
Validation:
in: apiRequest, function, transferCall, endCall, dtmf, voicemail, handoff, query, mcpStored in
tools.typescope
string
Optional
Nullable
Validation:
global (user_id is null) or account (user_id is not null)Stored in
tools.user_idsort_by
string
Optional
Default: created_at
Validation:
in: name, created_at, updated_at (fallback created_at)sort_order
string
Optional
Default: desc
Validation:
asc|descper_page
integer
Optional
Default: 15
Validation:
integerErrors
| Status | Meaning | Body |
|---|---|---|
401 |
Missing or invalid bearer token | |
403 |
Feature tools not enabled for the account |
Notes
- user and creator are eager-loaded and always present in list rows (id, name, email only).
- The scope switcher isolates platform Global Tools (scope=global) from the caller's own tools (scope=account); omitting it returns both.
- coreData is always null on list rows — only the local mirror is returned.
curl --request GET \
--url https://app.sulus.ai/api/tools \
--header 'Authorization: Bearer <YOUR_API_KEY>'
import requests
url = "https://app.sulus.ai/api/tools"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
response = requests.get(url, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://app.sulus.ai/api/tools"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Response
200
{
"success": true,
"data": [
{
"name": "Check Order Status",
"user_id": 42,
"external_tool_id": "d4e5f6a7-8b9c-4a1d-9e2f-3a4b5c6d7e8f",
"status": "published",
"created_by": 42,
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"workspace_id": "9a8b7c6d-5e4f-4a3b-9c8d-7e6f5a4b3c2d",
"type": "apiRequest",
"description": "Looks up an order by ID and returns its current status.",
"function_def": {
"name": "check_order_status"
},
"server": {
"url": "https://api.example-business.com/orders/lookup",
"method": "POST",
"timeoutSeconds": 20,
"credentialId": "3f9c2a10-6b4e-4a2d-9f0a-1c2d3e4f5a6b"
},
"variable_extraction_plan": {
"properties": [
{
"name": "orderStatus",
"type": "string",
"description": "Current status of the order",
"required": false
}
]
},
"destinations": null,
"rejection_plan": null,
"messages": [
{
"type": "request-start",
"content": "Let me check on that order for you."
}
],
"metadata": {
"category": "orders"
},
"async": false,
"created_at": "2026-06-01T14:22:03+00:00",
"updated_at": "2026-07-15T09:10:44+00:00",
"user": {
"id": 42,
"name": "Jane Cooper",
"email": "[email protected]"
},
"creator": {
"id": 42,
"name": "Jane Cooper",
"email": "[email protected]"
},
"read_only": false,
"coreData": null
}
],
"pagination": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 1,
"from": 1,
"to": 1
}
}
Response — GET
/tools
200
{
"success": true,
"data": [
{
"name": "Check Order Status",
"user_id": 42,
"external_tool_id": "d4e5f6a7-8b9c-4a1d-9e2f-3a4b5c6d7e8f",
"status": "published",
"created_by": 42,
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"workspace_id": "9a8b7c6d-5e4f-4a3b-9c8d-7e6f5a4b3c2d",
"type": "apiRequest",
"description": "Looks up an order by ID and returns its current status.",
"function_def": {
"name": "check_order_status"
},
"server": {
"url": "https://api.example-business.com/orders/lookup",
"method": "POST",
"timeoutSeconds": 20,
"credentialId": "3f9c2a10-6b4e-4a2d-9f0a-1c2d3e4f5a6b"
},
"variable_extraction_plan": {
"properties": [
{
"name": "orderStatus",
"type": "string",
"description": "Current status of the order",
"required": false
}
]
},
"destinations": null,
"rejection_plan": null,
"messages": [
{
"type": "request-start",
"content": "Let me check on that order for you."
}
],
"metadata": {
"category": "orders"
},
"async": false,
"created_at": "2026-06-01T14:22:03+00:00",
"updated_at": "2026-07-15T09:10:44+00:00",
"user": {
"id": 42,
"name": "Jane Cooper",
"email": "[email protected]"
},
"creator": {
"id": 42,
"name": "Jane Cooper",
"email": "[email protected]"
},
"read_only": false,
"coreData": null
}
],
"pagination": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 1,
"from": 1,
"to": 1
}
}