Agent Tools
Tools are the actions an assistant can take. They power the chat agent and are the same set exposed over MCP. Tools come in three layers — built-in platform tools, capability-scoped domain tools, and your own custom tools.
Tool layers
Platform tools
Built-in actions — knowledge-base search, send email, tasks, contacts, web search, image generation, handoff to a human, and more.
Domain tools (capability-scoped)
Generated from the platform’s services and gated by capability scopes. These are the ones you grant per assistant.
Custom & connection tools
Your own llm_transform / api_call tools, plus REST API Connections registered as tools and gated by credential grants.
Capability-scoped domain tools
These are gated by capability scopes — grant inventory:read and the read tools below appear; grant inventory:write for the mutating ones.
| Domain | Tools |
|---|---|
| Inventory | inventory_list_items, inventory_get_item, inventory_list_categories, inventory_list_tags, inventory_create_item, inventory_update_item, inventory_delete_item |
| Contacts (CRM) | contacts_list, contacts_get, contacts_list_groups, contacts_upsert, contacts_update, contacts_delete |
| Orders | orders_list, orders_get, orders_update_status |
| Tasks | tasks_list, tasks_create, tasks_update |
| Appointments | appointments_list, appointments_get, appointments_availability, appointments_create, appointments_update, appointments_cancel |
| Knowledge Base | kb_search, kb_list_entries, kb_stats |
Inspect available tools
Resolve the tools available for the current context (platform, plan, assistant settings):
GET https://api.cognitiondesk.com/tools/available?platform=web
Authorization: Bearer <firebase-id-token>Create a custom tool
Custom tools let an assistant call your own logic. api_call tools make an HTTP request (with {{variable}} templating); llm_transform tools run a prompt over an input. Attach them to an assistant via its customToolIds.
POST https://api.cognitiondesk.com/custom-tools
Authorization: Bearer <firebase-id-token>
Content-Type: application/json
{
"name": "shorten_url",
"displayName": "Shorten URL",
"description": "Shorten a long URL via our internal service",
"type": "api_call",
"config": {
"url": "https://api.example.com/shorten",
"method": "POST",
"body": { "url": "{{url}}" }
},
"inputSchema": { "url": { "type": "string", "required": true } }
}Identity & tenancy
Every tool derives the caller identity from the request context, never from model-supplied IDs, and is scoped to the owner’s organization/data. Model-provided resource IDs are ownership-checked before any mutation.