zoxaAI
Homepage
API ReferenceTools

Update a tool

PUT /api/v1/tools/{tool_uuid} — partial update of a tool's metadata or definition.

PUT /api/v1/tools/{tool_uuid}

Update fields on an existing tool. All body fields are optional — only those you include are changed.

Replacing `definition` swaps the whole thing

If you send definition, the entire object replaces the old one — there's no partial nested merge for tool configs. To change one HTTP url, send the full definition.config.* you want to keep.

Request body

FieldTypeNotes
namestring (≤ 255)Display name. The LLM sees it as a function name: lowercased, with every run of other characters turned into _ ("Book Slot" → book_slot). A name with no English letters or digits, or longer than 64 characters, gets a short unique suffix ("स्टोर खोजें" → tool_41ac1a6b).
descriptionstringTool description shown to the LLM.
iconstring (≤ 50)Lucide icon name.
icon_colorstring (≤ 7)Hex color.
definitiondiscriminated objectFull tool definition. Same shape as on create.
statusenumactive, archived, draft.

Response

200 OK with the updated tool. Same shape as GET /tools/{tool_uuid}.

Examples

curl -X PUT https://dashboard.zoxa.ai/api/v1/tools/abc12345-6789-0123-4567-89abcdef0123 \
  -H "X-API-Key: zsk_..." \
  -H "Content-Type: application/json" \
  -d '{ "description": "Updated description.", "status": "active" }'
await fetch(`https://dashboard.zoxa.ai/api/v1/tools/${toolUuid}`, {
  method: "PUT",
  headers: { "X-API-Key": "zsk_...", "Content-Type": "application/json" },
  body: JSON.stringify({ description: "Updated description.", status: "active" }),
});
import httpx
httpx.put(
    f"https://dashboard.zoxa.ai/api/v1/tools/{tool_uuid}",
    headers={"X-API-Key": "zsk_..."},
    json={"description": "Updated description.", "status": "active"},
)

Errors

StatusdetailWhen
400"No organization selected for the user"Auth missing org.
400"Invalid status '...'. Must be one of: ..."Unknown status.
404"Tool not found"UUID not in your org.
422arrayValidation failure on definition discriminator/sub-config.

On this page