The same reads are available to agents as MCP tools:
list_contacted_people, get_contact,
get_call_transcripts, get_text_history and get_email_history (see MCP server).
1. Find the person
contact_id is null for someone you reached who has no contact record yet.
2. Get their details
data.contact.id. crm is set when the contact is synced with a CRM, and holds the provider and
its record id.
3. Read the conversation
Name the person with exactly one ofcontact_id or their address: phone_number (E.164) for
calls and texts, email for emails.
sender:
Emails carry a
source of inbox or quick (sent with Quick Email).
4. Calls: transcripts, tags and recordings
Each call fromGET /v1/history/calls (or one call from GET /v1/history/calls/{id}) carries:
Tags
Tags come from the AI’s review after the call ends, so a call that just finished may have none for
a few seconds.
Download the recording
recording_url needs the same API key as every other request:
audio/mpeg), never cached. It returns 404 when the call
has no recording, when recording was turned off for it by your compliance settings, or when the call
is not in your workspace. Every download is written to your compliance audit log, attributed to the
API key’s owner.
Pagination
Results come newest first. Passmeta.cursor from one response as cursor on the next request;
there are no more pages when meta.cursor is absent. limit defaults to 20 and caps at 100 (50 for
calls, since each one carries a full transcript).
Keeping up to date
Rather than polling/v1/history/texts, register an inbound SMS webhook
to be told the moment someone texts you, then fetch the thread when you need context.
Likewise, a call webhook sends you each call’s full transcript as
soon as the call ends, so you never need to poll /v1/history/calls for new calls.