# AI Appointment Setter

How the AI Appointment Setter handles a reply, when it hands off to a person, and how integrations configure it and hear about replies.

The AI Appointment Setter is the reply agent on a campaign. When a prospect replies, it decides what to do next and works toward 1 goal: a meeting booked through your booking link.

## What it does with a reply

On every reply, the agent decides 1 of 5 actions: reply, wait, nudge, escalate, or close. It records the reply's sentiment and whether the reply is an out-of-office message. A campaign runs it in 1 of 2 modes: autonomous, where it sends its own replies, or notify-only, where it reads each reply and leaves the sending to you.

It books through your booking link and never proposes times itself. By default it sends up to 5 follow-ups to a prospect who goes quiet, on days 2, 3, 5, 7 and 10 after the last message; the schedule is configurable in the app, up to 10 follow-ups.

## When it hands off to a person

The agent escalates the conversation when the prospect:

- asks for a person;
- raises pricing, legal, security or a complaint;
- asks about something outside the material the agent was given;
- names a colleague to talk to instead.

It also stops after a reply limit, 12 replies per conversation by default. The reason is recorded with the conversation and delivered in the webhook as `escalation_reason`.

A meeting booked through the link is detected by the app's calendar integration and listed on the campaign's bookings, described below.

## Configure it by API

The agent is configured per campaign. [`GET /v1/campaigns/{campaign_id}/responder`](https://docs.versionseven.ai/api-reference/campaigns/get-responder) reads the configuration and [`PATCH /v1/campaigns/{campaign_id}/responder`](https://docs.versionseven.ai/api-reference/campaigns/update-responder) changes it: `is_enabled`, `goal_link` (an `https` URL the agent sends an interested prospect to), up to 10 `assets` (a `link` with a `description` of when to share it), `tone` (`friendly`, `direct` or `formal`), `custom_instructions`, `campaign_description`, `company_name` and `agent_name`.

`is_enabled` also sets the campaign's `responder_enabled` flag, the one [`PATCH /v1/campaigns/{campaign_id}`](https://docs.versionseven.ai/api-reference/campaigns/update-campaign) toggles, so the two never disagree.

The configuration the API returns also carries `mode`, `max_replies` and `agent_version`, but the update endpoint doesn't accept them: the mode, the reply limit and the follow-up schedule are set in the app.

[`GET /v1/campaigns/{campaign_id}/bookings`](https://docs.versionseven.ai/api-reference/campaigns/list-bookings) lists the meetings booked from a campaign, newest first: calendar bookings with a `start_time` and `status`, and confirmations, where the agent or a person marked a lead as booked without a calendar event. Send `since` to count only bookings made at or after a time. [`GET /v1/campaigns/{campaign_id}/analysis`](https://docs.versionseven.ai/api-reference/campaigns/get-campaign-analysis) reports reply sentiment as aggregate counts.

## Hear about replies

A prospect's reply is delivered to the campaign's webhooks as a [`prospect_response`](https://docs.versionseven.ai/api-reference/webhooks/prospect-response) event, once per lead per campaign and again when a later reply turns positive, with the prospect's message, the lead, and the agent's reading of the reply under `ai_response`:

- `sentiment` and `out_of_office`;
- `agent_action`: `reply`, `wait`, `nudge`, `escalate`, `close` or `skip`;
- `conversation_status`: `awaiting_prospect`, `awaiting_followup`, `closed_won`, `closed_lost`, `closed_escalated` or `closed_no_response`;
- `goal_status`: `not_sent`, `link_sent`, `soft_commit`, `confirmed` or `declined`;
- `responder_message`, the reply the agent sent, or `null` when it sent nothing;
- `escalation_reason`, when it handed off;
- `sdr_brief`, a 1-line summary for a person.

`agent_version` is `2` when the Appointment Setter handled the reply; feature-detect on it. When the agent didn't run, every field is `null` except `goal`, which carries the reason. [Receiving webhooks](https://docs.versionseven.ai/guides/webhooks) covers registration, retries and duplicates.

## The Unified Inbox is app-only

There is no API or MCP endpoint that reads or sends inbox messages. The REST API exposes no conversation or message resource, and the MCP server lists no inbox tool. An integration that needs the conversation uses the webhook: each delivery carries the prospect's message and the agent's reply, and a later positive reply from the same lead arrives as a further event.
