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

# Tools

> Every Audalis MCP tool, with its parameters, what it returns, and its limits.

Audalis MCP has seven tools, and all of them are read-only (`readOnlyHint: true`). Every MCP client sees the same set. An assistant can chain them, for example to find a contact, open their latest call, and list the follow-ups it created.

Tool names and parameter names are stable identifiers.

<Tip>
  Your assistant should call `get_workspace_info` first. It returns the workspace's time zone, so "today" and "this week" are turned into the right dates.
</Tip>

## Workspace

### `get_workspace_info`

Returns the connected workspace's name, time zone, and the current time. Takes no parameters.

| Returns | |
| - | - |
| `name` | Workspace name |
| `timezone` | IANA time zone, such as `America/Chicago` |
| `now` | Current time, ISO 8601 UTC |

> "What time zone is my workspace in?"

## Calls

### `list_calls`

Phone calls in a date range, newest first, with caller, outcome, sentiment, and a short summary. Covers calls handled by your team and by Arlo. Test calls are left out.

| Parameter | Type | Description |
| - | - | - |
| `from` | ISO 8601 date-time | Start, inclusive. Default: 7 days before `to`. |
| `to` | ISO 8601 date-time | End, exclusive. Default: now. |
| `missed_only` | boolean | Only calls nobody answered, staff or Arlo. Default `false`. |
| `limit` | integer | 1–50. Default 20. |
| `cursor` | string | `nextCursor` from the previous page. |

Each call includes `callId`, `startedAt`, `direction`, `status`, `missed`, `from`, `to`, `contactName`, `durationSeconds`, `handledByArlo`, `outcome`, `sentiment`, and `summary`. Summaries are cut to 300 characters; use `get_call` for the full text. The result also includes `nextCursor`, which is `null` when there are no more pages.

> "What calls did we miss yesterday?"
>
> "Which calls did Arlo handle this week, and how did they go?"

### `get_call`

One call in full: the complete summary, a customer-experience rating with its reasoning, the booked appointment time (if any), and the follow-up tasks the call created.

| Parameter | Type | Description |
| - | - | - |
| `call_id` | UUID | **Required.** A `callId` from `list_calls`, `list_bookings`, or `get_contact`. |

> "Open the call from (512) 555-0142 this morning. Did the caller book?"

## Bookings

### `list_bookings`

Appointments Arlo booked in a date range: Jobber jobs it scheduled and Square bookings it confirmed. Also returns Arlo calls where the caller asked for service but didn't end up booked, which is your callback list.

| Parameter | Type | Description |
| - | - | - |
| `from` | ISO 8601 date-time | Start, inclusive. Default: 7 days before `to`. |
| `to` | ISO 8601 date-time | End, exclusive. Default: now. |
| `limit` | integer | 1–50. Default 20. |

| Returns | |
| - | - |
| `bookings` | Each has `system` (`jobber` or `square`), `bookedAt`, `appointmentStart`, `callId`, and `contactName`. |
| `serviceRequestsWithoutBooking` | Each has `callId`, `startedAt`, `contactName`, `from`, and `summary`. |
| `truncated` | `true` when more results exist. This tool doesn't page: ask again with a narrower date range. |

> "Which callers asked for service this week but didn't book? Who should I call back first?"
>
> "How many jobs did Arlo book in Jobber last month?"

## Contacts

### `search_contacts`

Finds contacts by the start of any word in their name or company, or by the start of their email address or phone number. For example, `smi` finds "John Smith" and "Smithfield Plumbing".

| Parameter | Type | Description |
| - | - | - |
| `query` | string | **Required.** 1–100 characters. |
| `limit` | integer | 1–50. Default 20. |

Each match includes `contactId`, `name`, `company`, `phoneNumber`, `email`, `lastContactAt`, and `url`, a link that opens the contact in Audalis.

> "Find the contact for Northside Dental."

### `get_contact`

One contact's details and AI summary, their 10 most recent calls, and their open tasks.

| Parameter | Type | Description |
| - | - | - |
| `contact_id` | UUID | **Required.** A `contactId` from `search_contacts`. |

Returns `name`, `company`, `phoneNumber`, `email`, `summary`, `firstContactAt`, `lastContactAt`, `totalInteractions`, `url`, `recentCalls`, and `openTasks`.

> "Catch me up on Maria Lopez before I call her back."

## Follow-ups

### `list_open_tasks`

Open follow-up tasks (pending, in progress, or waiting on a supervisor), soonest due first. Tasks without a due date come last.

| Parameter | Type | Description |
| - | - | - |
| `due_before` | ISO 8601 date-time | Only tasks due before this time. |
| `limit` | integer | 1–50. Default 20. |
| `cursor` | string | `nextCursor` from the previous page. |

Each task includes `taskId`, `title`, `description`, `status`, `priority`, `dueDate`, `callId`, `contactName`, and `createdAt`.

> "What follow-ups are due before Friday?"

## Dates and time zones

* Pass dates as **ISO 8601 date-times with an offset**, such as `2026-10-13T00:00:00-04:00` or `2026-10-13T04:00:00Z`. A date without a time or offset is rejected.
* `from` is inclusive and `to` is exclusive. To cover "yesterday," pass midnight to midnight in the workspace's time zone.
* A date range can cover **at most 92 days**, and `from` must come before `to`.
* Results use UTC timestamps. Assistants should convert them to the workspace's time zone before showing them.

## Paging

* `list_calls` and `list_open_tasks` page with `nextCursor`. Pass it back as `cursor` and **keep every other argument the same**. Treat it as opaque, and don't edit or build one yourself.
* `list_open_tasks` stops paging after the first 1,000 tasks. Use `due_before` to narrow it down.
* `list_bookings` doesn't page. When `truncated` is `true`, use a narrower date range.

## Limits

| Limit | Value |
| - | - |
| Requests per connection | 60 per minute |
| Requests per workspace (all connected apps) | 240 per minute |
| Items per page | 20 by default, 50 max |
| Date range | 92 days max |
| Summary length in lists | 300 characters (full text in `get_call`) |

Over the limit, the server returns `429` with `Retry-After: 60`.

## Errors

When a tool can't run, it returns `isError: true` with a plain-language message the assistant can act on, such as "The date range can be at most 92 days." or "No call with that id." Unexpected failures return "Audalis could not complete this request. Try again shortly." with no internal details.


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