list_contacts
List and search contacts in the application, paginated, newest first. Read-only. Filters combine as AND; search matches name, username, email, phone, and platformId; tags / tagIds keep only contacts carrying at least one of those tags (UTM attribution tags are named "utm: " — discover them with list_contact_tags). total is the full match count, so limit: 1 counts an audience cheaply. Returns compact contact summaries without variable values — use get_contact for one contact's variables. Remember platformId is unique only per bot, so the same person talking to two bots appears as two contacts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Defaults to 1. | |
| tags | No | Only contacts carrying at least one of these tags, by exact tag name (case-insensitive), e.g. ["utm: tgads_official_0905"]. A name no contact in scope carries is an error listing what is missing. Combine with tagIds (union). | |
| botId | No | Only contacts belonging to this bot (must be one of the application's bots). Omit for all bots in the application. | |
| limit | No | Contacts per page, between 1 and 100. Defaults to 20. | |
| search | No | Case-insensitive substring matched against first/last name, username, email, phone, and platformId. Omit to list without searching. | |
| status | No | Only contacts with this subscription status ("subscribed" or "unsubscribed"). Omit for both. | |
| tagIds | No | Same as `tags`, by tag id (from list_contact_tags). | |
| isActive | No | True for active contacts only, false for deactivated only. Omit for both. | |
| applicationId | No | Application (workspace) id. Optional: an application-scoped key (app_...) defaults to its own application, but a personal key (usr_...) has no default and omitting it fails with MCP_APPLICATION_REQUIRED. Call list_applications to get the id. |