MCP tools — Contacts
Seven tools to list, fetch, create, update, delete, tag, and bulk-import contacts.
The Contacts tool group covers the full lifecycle: discovery, lookup, mutation, and bulk operations.
| Tool | Annotation | Purpose |
|---|---|---|
list_contacts |
IsReadOnly, IsIdempotent |
Search/list with pagination and filters |
get_contact |
IsReadOnly, IsIdempotent |
Fetch one with tags + recent messages |
create_contact |
IsDestructive(false) |
New contact (E.164 phone) |
update_contact |
IsDestructive(false), IsIdempotent |
Update name/email/phone |
tag_contact |
IsDestructive(false), IsIdempotent |
Add or remove tags |
delete_contact |
IsDestructive |
Permanent delete |
import_contacts |
IsDestructive(false) |
Bulk upsert from a list of records |
list_contacts
Search and list contacts. Supports filtering by name/phone/email, tag, and opt-in status.
| Input | Type | Default | Notes |
|---|---|---|---|
search |
string | — | Substring match against name/phone/email |
tag |
string | — | Exact tag name |
opted_in_only |
boolean | true |
Skip opted-out contacts |
page |
integer | 1 |
|
per_page |
integer | 25 |
Capped at 100 |
Returns { data: Contact[], meta: { current_page, last_page, per_page, total } }.
get_contact
Get detailed contact info with tags and recent messages.
| Input | Type | Notes |
|---|---|---|
id |
UUID | Required if phone/email not provided |
phone |
string | E.164 |
email |
string |
Returns the contact + tag list + last N messages in both directions.
create_contact
Create a new contact. Phone number should be in E.164 format.
| Input | Type | Required |
|---|---|---|
phone |
string | yes |
name |
string | no |
email |
string | no |
tags |
string[] | no |
metadata |
object | no |
locale |
string | no |
source |
string | no |
Upserts on (tenant_id, phone).
update_contact
Update contact fields such as name, email, or phone.
| Input | Type |
|---|---|
id |
UUID (required) |
name, email, phone, locale, metadata |
optional |
Only provided fields are written. metadata is merged shallowly.
tag_contact
Add or remove tags on a contact.
| Input | Type | Notes |
|---|---|---|
id |
UUID | required |
add_tags |
string[] | tags to attach (created on the fly) |
remove_tags |
string[] | tags to detach (the tag definition stays) |
delete_contact
Permanently delete a contact.
IsDestructive — the agent client will prompt every time.
import_contacts
Bulk import or upsert contacts from a list of records. Each record must have a phone number; matched on tenant_id + phone. Existing contacts are updated, missing ones created. Tags are added without removing existing ones. Returns counts: imported / updated / skipped, plus per-row errors.
| Input | Type |
|---|---|
contacts |
array of {phone, name?, email?, tags?, metadata?} records |
Returns { imported, updated, skipped, errors: { row, message }[] }. No CSV file needed — pass the records directly. Practical limit: a few thousand per call. For very large imports, break into batches client-side.
