tag_contacts
Adds tags to up to 100 contacts and removes tags from them; removing a tag never deletes the contact. System tags cannot be set or removed. Returns one result per distinct contact ID, and one failed contact does not stop the others.
| Tool name | tag_contacts |
| Permission | contacts:write |
readOnlyHint | false |
destructiveHint | true |
idempotentHint | true |
openWorldHint | false |
| REST call | POST /v1/contacts/tags |
#What it does
- Changes data in your account. It does not send messages to contacts.
- Removes data. Only allowed for the few removals that keys may do (remove a tag, unsubscribe a webhook endpoint).
- 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.
| Name | Type | Required | Description |
|---|---|---|---|
contact_ids | array of string | yes | The contacts to change (1 to 100). up to 100 items |
add_tags | array of string | no | Tags to add. Case does not matter; stored in lower case. up to 20 items |
remove_tags | array of string | no | Tags to remove. A tag must not be in both add_tags and remove_tags. up to 20 items |
Arguments added by the MCP server (see Special arguments)
| Name | Type | Required | Description |
|---|---|---|---|
idempotency_key | string | no | Optional. Unique key, for example a UUID. Same key and arguments within 24 hours: first result. 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.