Delete tool
DELETE
https://app.sulus.ai/api/tools/{id}
Delete a tool (live first for published; drafts are local-only)
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Path parameters
id
string
Required
The tool's public id.
Validation:
the tool's external_tool_id (UUID, or draft_… slug for drafts)Stored in
tools.external_tool_idErrors
| Status | Meaning | Body |
|---|---|---|
404 |
Tool not found, or outside your account scope | {"success":false,"message":"Tool not found"} |
403 |
Global tool mutation attempted by a non-super-admin | {"success":false,"message":"Global tools are read-only and cannot be edited or deleted."} |
403 |
Workspace permission denied | |
401 |
Missing or invalid bearer token | |
403 |
Feature tools not enabled for the account |
Notes
- The local row is removed even if the live delete fails, so a tool can never get stuck.
curl --request DELETE \
--url https://app.sulus.ai/api/tools/{id} \
--header 'Authorization: Bearer <YOUR_API_KEY>'
import requests
url = "https://app.sulus.ai/api/tools/{id}"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
response = requests.delete(url, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://app.sulus.ai/api/tools/{id}"
req, _ := http.NewRequest("DELETE", 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,
"message": "Tool \"Check Order Status\" deleted."
}
Response — DELETE
/tools/{id}
200
{
"success": true,
"message": "Tool \"Check Order Status\" deleted."
}