Logo
Search
Docs

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.name
status string Optional Nullable
Validation: only draft or published are honoured
Stored in tools.status
type string Optional Nullable
Validation: in: apiRequest, function, transferCall, endCall, dtmf, voicemail, handoff, query, mcp
Stored in tools.type
scope string Optional Nullable
Validation: global (user_id is null) or account (user_id is not null)
Stored in tools.user_id
sort_by string Optional Default: created_at
Validation: in: name, created_at, updated_at (fallback created_at)
sort_order string Optional Default: desc
Validation: asc|desc
per_page integer Optional Default: 15
Validation: integer

Errors

StatusMeaningBody
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
    }
}