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

# Setup and call tools

> See what's left to set up, and how recent calls went.

## get\_setup\_status

List what is done and what is left before an agent can take or make calls. Without `agent_id` it checks the whole organization.

**Scope:** `agents.read` · **Hints:** read-only

### Inputs

**agent\_id** `string`

The `agent_id` from `list_agents`. Leave it out to check the organization.

### Checklist items

| `key` | Done when |
| - | - |
| `agent` | The organization has at least one agent. Only when no `agent_id` is given. |
| `phone_number` | Inbound: a number is connected to the agent. Outbound: the organization has an active number. Organization: any agent has a number. |
| `credits` | The organization has credits to spend. |
| `web_widget` | The agent (or any agent) has a widget, and the plan lets it take visitors. |
| `campaign` | Outbound agents only: a campaign uses this agent. |

### Returns

**agent** `object | null`

The agent checked (`id`, `name`, `url`), or `null` for the organization.

**direction** `string | null`

`inbound` or `outbound`; `null` for the organization.

**ready** `boolean`

Every item is done.

**items** `object[]`

**item**

**key** `string`

See the table above.

**label** `string`

**done** `boolean`

**todo** `string | null`

What to do, in plain words, when not done.

```json Example theme={null}
{
  "agent": { "id": "VmF3TmF0aXZlQWdlbnRUeXBlOng3azJt", "name": "Lakeside Dental Receptionist", "url": "https://dashboard.voiceaiwrapper.app/en/..." },
  "direction": "inbound",
  "ready": false,
  "items": [
    { "key": "phone_number", "label": "Phone number", "done": false, "todo": "Connect one of your free numbers: ask me to do it." },
    { "key": "credits", "label": "Credits", "done": true, "todo": null },
    { "key": "web_widget", "label": "Web widget", "done": false, "todo": "Add a web widget: ask me to create one and I will give you its embed code." }
  ]
}
```

***

## list\_recent\_calls

Show the latest 20 calls of the organization, or of one agent, newest first.

For privacy, caller numbers and names, transcripts, recordings and costs are never returned.

**Scope:** `agents.read` · **Hints:** read-only

### Inputs

**agent\_id** `string`

The `agent_id` from `list_agents`. Leave it out for all agents.

### Returns

**calls** `object[]`

**call**

**time** `string | null`

When the call started (ISO 8601).

**when** `string`

How long ago, for example `3 hours ago`.

**duration\_seconds** `integer | null`

Talk time; `null` when never answered.

**length** `string`

Talk time, for example `2m 05s`, or `not answered`.

**direction** `string`

`incoming`, `outgoing` or `browser`.

**agent\_id** `string | null`

**agent\_name** `string`

**outcome** `string`

For example `Success`, `Unanswered`, `Failed`, `Canceled`, `Ended` or `In progress`.

**ended\_because** `string | null`

How the call ended.

**summary** `string`

The call's summary, or how it ended while there is none.


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