Customer.io MCP by usefulapi
Server Details
Query people, segments, campaigns, and message deliveries; send transactional email or broadcasts.
- Status
- Healthy
- Uptime
- 69.6% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 13 tools
Each tool maps to a distinct resource and action: campaign, customer, segment, message, collection, export, or send. The potentially similar pairs like list_messages/get_customer_messages and list_segments/get_customer_segments are clearly differentiated by workspace-wide vs per-customer scope.
All tools consistently use a customerio_ prefix with verb_noun snake_case naming. get_ is used for single-resource operations, list_ for collections, and send_/trigger_ for actions, creating a predictable pattern.
13 tools is well within the ideal range for an API integration and each tool represents a meaningful endpoint. There is no obvious redundancy or padding; campaigns, customers, messages, segments, collections, exports, and sends all have coverage.
The surface is solid for reading Customer.io data and triggering sends, but it lacks common lifecycle operations like creating/updating/deleting customers, tracking events, or listing transactional templates. These are notable gaps that can force agents to rely on out-of-band IDs for send workflows.
Available Tools
13 toolscustomerio_get_campaignGet campaignRead-onlyInspect
Get a single campaign by id. App API: GET /v1/campaigns/{campaign_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign id. |
customerio_get_campaign_metricsGet campaign metricsRead-onlyInspect
Get delivery/engagement metrics for a campaign over time. App API: GET /v1/campaigns/{campaign_id}/metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Metric type filter (e.g. email, push, sms). | |
| steps | No | Number of periods to return. | |
| period | No | Bucket size. Default days. | |
| campaign_id | Yes | Campaign id. |
customerio_get_customer_attributesGet customer attributesRead-onlyInspect
Get a single person's attributes (profile fields). App API: GET /v1/customers/{customer_id}/attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The person's id (or cio_id / email, per your identifier setup). |
customerio_get_customer_messagesGet customer messagesRead-onlyInspect
List messages (deliveries) sent to a single person. App API: GET /v1/customers/{customer_id}/messages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return. | |
| start | No | Pagination cursor from a previous response's `next`. | |
| customer_id | Yes | The person's id. |
customerio_get_customer_segmentsGet customer segmentsRead-onlyInspect
List the segments a single person belongs to. App API: GET /v1/customers/{customer_id}/segments.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The person's id. |
customerio_list_campaignsList campaignsRead-onlyInspect
List all campaigns in the workspace. App API: GET /v1/campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
customerio_list_collectionsList collectionsRead-onlyInspect
List reusable data collections in the workspace. App API: GET /v1/collections.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
customerio_list_exportsList exportsRead-onlyInspect
List data exports in the workspace. App API: GET /v1/exports.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
customerio_list_messagesList messagesRead-onlyInspect
List sent messages (deliveries) across the workspace, filterable by type/campaign/newsletter. App API: GET /v1/messages.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Message type filter, e.g. email | push | sms | in_app | webhook | slack | twilio. | |
| limit | No | Max messages to return. | |
| start | No | Pagination cursor from a previous response's `next`. | |
| drafts | No | Include drafts. | |
| campaign_id | No | Filter to a specific campaign. | |
| newsletter_id | No | Filter to a specific newsletter. |
customerio_list_segmentsList segmentsRead-onlyInspect
List all segments in the workspace (id + name + type). App API: GET /v1/segments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
customerio_search_customersSearch customersRead-onlyInspect
Search/list people by a Customer.io filter (segment or attribute conditions). e.g. filter={"segment":{"id":7}} or {"and":[...]}. App API: POST /v1/customers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max people to return. | |
| start | No | Pagination cursor from a previous response's `next`. | |
| filter | Yes | Customer.io filter object, e.g. {"segment":{"id":7}} or {"and":[{"attribute":{"field":"email","operator":"exists"}}]}. |
customerio_send_transactional_emailSend transactional emailDestructiveInspect
⚠️ SENDS A REAL EMAIL. Send a transactional email using a transactional message template. Delivers immediately to the to recipient. App API: POST /v1/send/email.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address. | |
| body | No | Override the email body. | |
| from | No | Override the sender address. | |
| subject | No | Override the subject line. | |
| identifiers | Yes | Person identifiers, e.g. {"id":"..."} or {"email":"..."}. | |
| message_data | No | Template variables (liquid) to interpolate into the message. | |
| send_to_unsubscribed | No | If true, send even to unsubscribed recipients. | |
| transactional_message_id | Yes | The transactional message template id (or trigger name). | |
| disable_message_retention | No | If true, don't retain the message body. |
customerio_trigger_broadcastTrigger broadcastDestructiveInspect
⚠️ SENDS TO REAL RECIPIENTS. Trigger an API-triggered broadcast, delivering to the resolved recipient set. App API: POST /v1/send/broadcast (posts to /v1/campaigns/{broadcast_id}/triggers).
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Liquid variables available to the broadcast templates. | |
| recipients | No | Recipient filter object (overrides the broadcast's configured audience). | |
| broadcast_id | Yes | The API-triggered broadcast id. | |
| id_ignore_missing | No | Skip recipients missing an id instead of erroring. | |
| email_add_duplicates | No | Allow duplicate email recipients. | |
| email_ignore_missing | No | Skip recipients missing an email instead of erroring. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- Changed
customerio_get_campaign3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / campaign_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / campaign_id / typeAdded value: +[ + "string", + "number" +]
- Changed
customerio_get_campaign_metrics3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / campaign_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / campaign_id / typeAdded value: +[ + "string", + "number" +]
- Changed
customerio_get_customer_attributes1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_get_customer_messages1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_get_customer_segments1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_list_campaigns1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_list_collections1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_list_exports1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_list_messages5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / campaign_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / campaign_id / typeAdded value: +[ + "string", + "number" +] - removed
Input schema / properties / newsletter_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / newsletter_id / typeAdded value: +[ + "string", + "number" +]
- Changed
customerio_list_segments1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_search_customers1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
customerio_send_transactional_email3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / transactional_message_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / transactional_message_id / typeAdded value: +[ + "string", + "number" +]
- Changed
customerio_trigger_broadcast3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / broadcast_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "number" - } -] - added
Input schema / properties / broadcast_id / typeAdded value: +[ + "string", + "number" +]
13 tool updates
- First observed
customerio_get_campaign - First observed
customerio_get_campaign_metrics - First observed
customerio_get_customer_attributes - First observed
customerio_get_customer_messages - First observed
customerio_get_customer_segments - First observed
customerio_list_campaigns - First observed
customerio_list_collections - First observed
customerio_list_exports - First observed
customerio_list_messages - First observed
customerio_list_segments - First observed
customerio_search_customers - First observed
customerio_send_transactional_email - First observed
customerio_trigger_broadcast
Related MCP Connectors
Send transactional email, run campaigns, manage contacts and automations, audit deliverability.
- EnvlopedOAuthcom.envloped
Send transactional email, verify domains, build contact segments, and draft marketing campaigns.
Send, track, and manage transactional and bulk email delivery
Send email and read templates, marketing contacts, lists, stats, bounces and unsubscribes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables sending transactional email and campaigns, managing contacts and templates, and reading delivery reports and wallet usage from any MCP client.MIT
- AlicenseAqualityAmaintenanceEnables AI agents to send transactional email, authenticate sending domains, track delivery, and diagnose deliverability issues programmatically.1333 npmMIT
- AlicenseBqualityFmaintenanceProvides an interface to manage email marketing, contact lists, dynamic templates, and email analytics via SendGrid's API.21898 npm32ISC
- AlicenseBqualityDmaintenanceManages SendGrid email workflows including design library, transactional templates, marketing contacts and lists, single sends, and direct email sends via the SendGrid v3 API.80898 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.