smartchat

save_contact

Creates a contact from a phone number or an email; the opt-in status starts as none and only the contact can confirm it. Returns the contact or contact_already_exists with existing_id.

Tool namesave_contact
Permissioncontacts:write
readOnlyHintfalse
destructiveHintfalse
idempotentHinttrue
openWorldHintfalse
REST callPOST /v1/contacts, PATCH /v1/contacts/{contact_id}

#What it does

  • Changes data in your account. It does not send messages to contacts.
  • May start automations of the account, and an automation may send messages. The call itself sends nothing.
  • Safe to repeat with the same idempotency_key.

#Input

The tool takes one flat object. Path, query and body fields of the REST call are merged into it.

Create contact (POST /v1/contacts)

NameTypeRequiredDescription
namestringnoName of the contact. up to 120 characters
phonestringnoPhone number in E.164 format, for example +4915112345678. up to 16 characters; format e164
emailstringnoEmail address. up to 254 characters; format email
purposestringnoWhy the contact is created: marketing (default), automation or service. one of: marketing, automation, service; default "marketing"

Update contact (PATCH /v1/contacts/{contact_id})

NameTypeRequiredDescription
contact_idstringyesContact ID.
namestring or nullnoNew name. Null removes the name. up to 120 characters
phonestring or nullnoNew phone number in E.164 format. Null removes it. up to 16 characters; format e164
emailstring or nullnoNew email address. Null removes it. up to 254 characters; format email

Arguments added by the MCP server (see Special arguments)

NameTypeRequiredDescription
idempotency_keystringnoOptional. Unique key, for example a UUID. Same key and arguments within 24 hours: first result. Without a key only an identical call within 1 minute counts as a repeat. up to 255 characters

#Result

The result has the same content as the REST answer. Lists have at most 50 items per page (default 20); use cursor for the next page.

Errors come back as a tool result with isError: true. The error codes are the ones in Errors.