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

# Introduction

> CallVA is an operations platform for AI voice agents. Reach it from your own system over the API, from an AI agent over MCP, or from a terminal with the CLI.

CallVA is an operations platform for AI voice agents. The voice agent holds the conversation; CallVA runs everything around it: queues and scheduling, the data model each call is recorded in, outcome tracking, recordings, transcripts, knowledge bases, billing and analytics.

Calls run on CallVA's own LiveKit-based voice engine, or on a voice provider you connect, such as Vapi or Retell, so you keep your choice of vendor. Whichever runs the call, it lands in CallVA as a call record of the same shape, in the same project, under the same permissions.

Each project defines its own data model. You decide which fields a call carries - an appointment date, a callback flag, an outcome with your own options - and CallVA stores, filters, sorts and reports on them as if they were built in. A call record returns every field at the top level, by its key.

## Three ways in

CallVA is built to be operated by software as well as by people. The same platform the dashboard shows is reachable three ways:

> [card] [External API](https://docs.callva.io/quickstart.md)
>
> REST over HTTPS with a bearer token. For your own backend, integrations and scripts. Start with the quickstart, then the [API reference](https://docs.callva.io/api-reference/introduction.md).

> [card] [MCP](https://docs.callva.io/mcp.md)
>
> Connect any MCP-capable AI agent to `https://mcp.callva.io/mcp`. It signs in with OAuth; no API key to copy.

> [card] [CLI](https://docs.callva.io/cli.md)
>
> The `callva` command line, for terminals, shell scripts and coding agents.

An autonomous agent can run a project end to end through these: configure voice agents and their prompts, place calls, read outcomes and transcripts, and adjust what it learned. What any caller may do is decided by the permissions behind its credential - see [Authentication and permissions](https://docs.callva.io/authentication.md).

## How it fits together

```mermaid theme={null}
flowchart LR
  subgraph you["Your side"]
    sys["Your system"]
    ai["AI agent"]
    cli["callva CLI"]
  end
  subgraph callva["CallVA"]
    mcp["MCP server<br/>mcp.callva.io/mcp"]
    api["External API<br/>/api/v1/external"]
    core["Projects, agents,<br/>call records, custom fields,<br/>transcripts, recordings"]
    auto["Webhook schedules<br/>and automations"]
  end
  engine["CallVA voice engine<br/>(LiveKit)"]
  prov["Connected provider<br/>(Vapi, Retell)"]
  line(("Phone line<br/>or browser"))

  sys -- "API token" --> api
  cli -- "API token" --> api
  ai -- "OAuth" --> mcp --> api
  api --> core
  core -- "agent config" --> engine
  core -- "agent config" --> prov
  engine --> line
  prov --> line
  engine -- "call results" --> core
  prov -- "call results" --> core
  core --> auto
  auto -- "webhooks" --> sys
```

Your system and the CLI call the External API with an API token. An AI agent connects to the MCP server, which calls the same API on its behalf. Before a call, the voice engine or provider fetches the agent's configuration from CallVA; during and after it, the results - status, fields, transcript, recording - flow back into the call record. Webhook schedules call your endpoints on the timetable you set, and automations run your own scripts against call records.

## Concepts

| Concept | What it is |
| - | - |
| **Organization** | Your account: its members, roles, API keys, phone numbers, telephony providers and billing. The API and its identifiers call it the *tenant* (`tenant_id`). |
| **Project** | A workspace inside an organization, with its own agents, calls, data model, prompts, automations and settings. Almost every API request acts in exactly one project. |
| **Agent** | A voice agent in a project: its prompt, the tools it can call, and the speech stack (preset) it runs on. |
| **Call** | The record of one conversation - inbound, outbound, or a test call from the browser - with its field values, transcript and recording. |
| **Custom fields** | The project's data model for calls. System fields such as `status`, `direction`, `started_at` and `duration` sit beside the fields you add, and every one is addressed by its key. |
| **Token** | An API key. It belongs to one organization, may be bound to one project, and carries one role - a named set of permissions such as `calls.read` - that decides which endpoints it may call. |

## Guides

> [card] [Quickstart](https://docs.callva.io/quickstart.md)
>
> Create a token, talk to your agent in the browser, read the call back.

> [card] [Authentication and permissions](https://docs.callva.io/authentication.md)
>
> Organization and project tokens, roles, and why a request is refused.

> [card] [Calls](https://docs.callva.io/guides/calls.md)
>
> Place outbound calls, list and filter call records, read transcripts and recordings.

> [card] [Custom fields](https://docs.callva.io/guides/custom-fields.md)
>
> Shape the data model your calls are recorded in.

> [card] [Webhooks](https://docs.callva.io/guides/webhooks.md)
>
> Call your endpoints on a schedule with rule-driven webhooks, and read the log of webhook traffic.

> [card] [Automations](https://docs.callva.io/guides/automations.md)
>
> Run your own scripts against call records.


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