---
title: "Agent Setup Playbook"
description: "Step-by-step guide for external AI agents provisioning Voicetta via the Setup API, MCP, or REST."
publishedAt: "2026-07-15"
modifiedAt: "2026-07-15"
category: "LLM"
tags: "Voicetta, setup API, MCP, agent provisioning, tools"
navOrder: "93"
canonical: "https://voicetta.com/docs/agent-setup-playbook"
---

# Agent Setup Playbook

This playbook is for **external AI agents** (Claude, ChatGPT, Cursor, custom bots) that provision Voicetta on behalf of a human Guest.

## Why it matters for your business

- **Save money:** one agent session replaces repeated manual onboarding support.
- **Work faster:** profile, assistant, knowledge, phone, and tools in one guided flow.
- **Standardize service:** every host uses the same Setup API contract.
- **Delight every Guest:** the human receives a ready handoff card with login and forwarding steps.

## Terminology bridge

When human-facing docs say **Connections** in `app.voicetta.com`, the Setup API uses **Tools**:

| Human UI | Agent API | After enable |
|----------|-----------|--------------|
| Connection | Setup Tool (`tool_id`) | Capability (voice action) |

Examples:

- UI: "Connect Guesty" → API: `tool_id: guesty` → Capability: `guesty_search_reservations`
- UI: "SMS channel" → API: `tool_id: sms` → Capability: `send_sms_confirmation`

Do **not** send `connection` or `integration` in Setup API requests. Use `tool_id` from the catalog.

## Discovery

| Resource | URL |
|----------|-----|
| LLM index | https://voicetta.com/llms.txt |
| OpenAPI | https://voicetta.com/setup-openapi.json |
| MCP package | `@voicetta/setup-mcp` |
| Host guides | [Setup Host Guides](/docs/setup-host-guides) |

Base API URL: `https://api.voicetta.com/v1/setup`

## AgentEnvelope

Every authenticated step returns an **AgentEnvelope**:

```json
{
  "session_id": "ses_...",
  "status": "awaiting_consent",
  "message_for_user_agent": "Ask the user to open the consent URL.",
  "actions_completed": ["session_created"],
  "human_required": {
    "type": "consent",
    "url": "https://app.voicetta.com/setup/consent?...",
    "instructions": "Authorize Voicetta setup in the browser."
  },
  "handoff": null
}
```

When `human_required` is present, pause automation and instruct the human. Resume after they complete the step.

## Setup flow

```mermaid
flowchart LR
    A[Create session] --> B[Human consent]
    B --> C[Profile]
    C --> D[Assistant]
    D --> E[Knowledge]
    E --> F[Phone]
    F --> G[Select tools]
    G --> H[Enable tools]
    H --> I[Test call]
    I --> J[Handoff]
```

### 1. Create session

```http
POST /v1/setup/sessions
Content-Type: application/json
X-Partner-Agent: claude

{"partner_agent": "claude"}
```

Response: `session_id`, `consent_url`, `status`.

### 2. Human consent

Send the human to `consent_url`. After login and authorization, Voicetta issues a scoped Bearer token:

```
Authorization: Bearer setup_...
```

TTL: 24 hours, bound to one `session_id`.

### 3. Profile → assistant → knowledge

```http
POST /v1/setup/sessions/{session_id}/profile
POST /v1/setup/sessions/{session_id}/assistant
POST /v1/setup/sessions/{session_id}/knowledge
```

Each step returns an updated envelope with the next `message_for_user_agent`.

### 4. Phone (optional)

```http
POST /v1/setup/sessions/{session_id}/phone
```

May return `human_required` for payment (`type: payment`) or forwarding instructions. Poll `GET /v1/setup/sessions/{session_id}` until `status` advances.

### 5. Tool catalog and selection

```http
GET /v1/setup/tools/catalog
GET /v1/setup/tools/catalog?category=PMS&industry=Hospitality
POST /v1/setup/sessions/{session_id}/tools/select
```

List only `available` tools. UI label for each item is **Connection**.

### 6. Enable or skip tools

```http
POST /v1/setup/sessions/{session_id}/tools/{tool_id}/enable
POST /v1/setup/sessions/{session_id}/tools/{tool_id}/skip
GET /v1/setup/sessions/{session_id}/tools
```

OAuth and marketplace tools often return `human_required` with a URL. Credentials-based tools may accept `payload` from the agent when `agent_can_submit_credentials` is true.

### 7. Test call and handoff

```http
POST /v1/setup/sessions/{session_id}/test-call
GET /v1/setup/sessions/{session_id}/handoff
```

Return the handoff JSON to the human: login URL, Voicetta phone, forwarding instructions, tool status, and next steps.

## MCP mirror

The `@voicetta/setup-mcp` package exposes one MCP tool per Setup API step:

- `voicetta_create_setup_session`
- `voicetta_get_session_status`
- `voicetta_list_tools_catalog`
- `voicetta_submit_business_profile`
- `voicetta_configure_assistant`
- `voicetta_upload_knowledge`
- `voicetta_request_phone_number`
- `voicetta_select_tools`
- `voicetta_enable_tool`
- `voicetta_skip_tool`
- `voicetta_get_tools_status`
- `voicetta_run_test_call`
- `voicetta_get_handoff_summary`

Set `VOICETTA_SETUP_SESSION_ID` and `VOICETTA_SETUP_ACCESS_TOKEN` after consent.

## Webhooks (optional)

Agents without push support can poll `GET /sessions/{id}`. For async steps (phone provisioning, OAuth), register:

```http
POST /v1/setup/sessions/{session_id}/webhooks/register
{"webhook_url": "https://your-agent.example/hooks/voicetta"}
```

Events: `phone.provisioned`, `tool.enabled`, `test_call.completed`.

## Rules

- Only document and call tools Voicetta can actually perform.
- Never include passwords in handoff — reference Google OAuth or the password set at consent.
- Use `X-Partner-Agent` or `partner_agent` for attribution (`claude`, `chatgpt`, `cursor`, `custom`).
- When status is `completed`, stop and deliver the handoff.

## Related pages

- [Setup Host Guides](/docs/setup-host-guides)
- [LLM and MCP Readiness](/docs/llm-and-mcp-readiness)
- [Glossary](/docs/glossary)
- [Agent Tools](/docs/agent-tools)
- [Integrations Overview](/docs/integrations-overview)
