> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sendora.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills and tools

> Give voice agents reliable actions, lookups, and custom HTTP capabilities.

## Overview

In the Sendora product, a **skill** is the capability an agent can use at the right moment. The public API exposes skills through the **Tools** resource so the same lifecycle works for dashboard-created and API-created capabilities.

The lifecycle is:

1. Read the catalog and choose a built-in capability, or prepare a custom HTTP contract.
2. Create a workspace tool with the configuration for your use case.
3. Assign it to one or more voice agents.
4. Update or remove the assignment independently from the tool itself.

<Note>
  Creating a skill does not automatically put it on every agent. Assign it explicitly to each voice agent that should be allowed to use it.
</Note>

## Choose a capability

```bash theme={"dark"}
curl https://api.sendora.ai/api/v1/public/tools/catalog \
  -H "X-API-Key: sk_live_..."
```

The catalog returns the supported built-in tool names and their configuration requirements. Use those values rather than guessing a built-in name.

## Create a built-in skill

```bash theme={"dark"}
curl -X POST https://api.sendora.ai/api/v1/public/tools \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "builtin",
    "builtin_tool_name": "book_meeting",
    "display_name": "Book a demo",
    "description": "Offer a meeting when the lead asks for a walkthrough.",
    "config": {
      "calendar_connection_id": "conn_google_cal_abc",
      "meeting_duration_minutes": 30
    }
  }'
```

The response contains the workspace tool ID. Keep it for assignment and later updates.

## Create a custom HTTP skill

Custom HTTP skills let an agent call an endpoint you control. The endpoint, method, timeout, authentication values, and parameter mappings are part of the tool configuration.

```bash theme={"dark"}
curl -X POST https://api.sendora.ai/api/v1/public/tools \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "custom_http",
    "display_name": "Check account status",
    "description": "Look up the lead account before offering an upgrade.",
    "http_url": "https://api.example.com/account-status",
    "http_method": "POST",
    "timeout_seconds": 10,
    "dynamic_parameters": [
      { "name": "email", "type": "string", "description": "Lead email" }
    ],
    "static_parameters": [],
    "automatic_parameters": [
      { "name": "call_id", "location": "query", "known_value": "KNOWN_PARAM_CALL_ID" }
    ]
  }'
```

Keep secrets in `auth_tokens`; do not put API keys in dynamic or static parameters that the model can see or change.

## Assign a skill to an agent

```bash theme={"dark"}
curl -X POST "https://api.sendora.ai/api/v1/public/tools/{tool_id}/assignments" \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "agent_id": "agent_xyz" }'
```

Assignment is idempotent, so retrying the same request is safe. The capability is available to the agent's next call.

To remove it from that agent while keeping the workspace tool:

```bash theme={"dark"}
curl -X DELETE "https://api.sendora.ai/api/v1/public/tools/{tool_id}/assignments/{agent_id}" \
  -H "X-API-Key: sk_live_..."
```

## Update, inspect, and delete

```bash theme={"dark"}
# Inspect the tool and current assignments
curl "https://api.sendora.ai/api/v1/public/tools/{tool_id}" \
  -H "X-API-Key: sk_live_..."

# Change its description or runtime configuration
curl -X PATCH "https://api.sendora.ai/api/v1/public/tools/{tool_id}" \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "description": "Use only after the lead confirms the account email." }'

# Delete the workspace tool and its assignments
curl -X DELETE "https://api.sendora.ai/api/v1/public/tools/{tool_id}" \
  -H "X-API-Key: sk_live_..."
```

Use the [Voice Agents guide](/guides/voice-agents) to combine a skill with an agent, voice, and knowledge base. Use [Knowledge Bases](/guides/knowledge-bases) when the capability should retrieve source material rather than call an external action.

## Production checklist

* Keep the skill description specific about when it should run and what success looks like.
* Validate required configuration against the catalog before creating the tool.
* Set the shortest practical HTTP timeout and make your endpoint safe to retry.
* Assign a new skill to a test agent first.
* Remove unused assignments before deleting or rotating a tool.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.