Summary
Let your AI work with Customer.io: look up people, their attributes, segments, activity and messages, review automations, broadcasts and one-time sends with their metrics, and send transactional emails or trigger broadcasts after you confirm.
Guided setup
Connect Customer.io to Microsoft Copilot in 2 minutes
Start a free trial on AnythingMCP Cloud, connect Customer.io in the guided setup, then add your MCP URL to Microsoft Copilot. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
Try asking
Example prompts for Customer.io
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Customer.io, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Customer.io + Microsoft Copilot
Let your AI work with Customer.io: look up people, their attributes, segments, activity and messages, review automations, broadcasts and one-time sends with their metrics, and send transactional emails or trigger broadcasts after you confirm.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
CUSTOMERIO_API_URL, CUSTOMERIO_APP_API_KEY
Step 1 — Get credentials
Setting up takes about 3 minutes. You need a Customer.io user who can create an App API key, and you need to know whether your account is hosted in the US or the EU.
- In Customer.io, open Settings → Account Settings → API Credentials → App API Keys (fly.customer.io/settings/api_credentials) and click Create App API Key. Pick the workspace and the access the key gets: full access, or read-only plus sending if the AI should only read and send.
- Copy the key right away: Customer.io shows it only once. Paste it into
CUSTOMERIO_APP_API_KEYas shown, without a Bearer prefix. It is an App API key, not a Track API key. - Set
CUSTOMERIO_API_URLto your account's data center:https://api.customer.iofor US accounts,https://api-eu.customer.iofor EU accounts, without/v1or any other path. The region is fixed when the account is created. - Install the connector and start with
customer_io_list_workspaces: it checks the key and shows the workspace with its people and message counts.
One key for the whole workspace: the App API key acts for its workspace, not for one person. Whoever uses this connector sees every person, segment and message the key can read, so share the MCP server only with people allowed to see that.
What it covers: people (find them by email, or search by segment membership and attribute values), their attributes, segments, activity of the last 30 days and the messages sent to them; segments with their conditions, live counts and members; automations, which the Customer.io API calls campaigns, with their message metrics; API-triggered broadcasts and one-time sends (newsletters in the API) with their metrics; deliveries and activity across the workspace; and the transactional message templates.
Sends wait for your yes: only two tools send, everything else reads.
customer_io_send_transactional_emailsends one real email (receipts, password resets, notifications) to up to 15 addresses in to, cc and bcc, from a transactional template or with your own subject and body. The AI shows you the recipient, the subject and the content first.customer_io_trigger_broadcastsends to many people at once. The AI first shows the broadcast, the size of the audience (customer_io_get_segment_customer_count) and the data, and triggers it only after an explicit "yes, send". It then follows progress withcustomer_io_get_broadcast_trigger.
Track API not included: identifying people, tracking events and deleting people go through Customer.io's Track API, which uses a different credential (Site ID and Track API key). This connector does not use it, so it cannot change profiles or delete anyone.
Limits: the App API allows about 10 requests a second. Transactional sends share a soft limit of 3,000 requests per 3 seconds, and a broadcast can be triggered at most once every 10 seconds. Long lists come in pages, and the AI keeps reading until the last one. Timestamps are Unix seconds.
Common errors: 401 means the App API key is wrong or was deleted, or the account lives in the other region; check CUSTOMERIO_API_URL. 403: the key's access does not include this action, for example a read-only key used to send. 404: the id does not exist in this workspace. 400 or 422: a parameter or the search filter is invalid; the error names it. 429: a rate limit is reached; wait and try again.
The connector does not use the Track API or the Pipelines API, run exports or imports, manage collections, snippets, reporting webhooks or ESP suppressions, or change the content of automations and broadcasts.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Customer.iotools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
customer_io_list_workspaces | List the workspaces of the Customer.io account with their id, name and counts of people, objects and messages sent in the billing period… |
customer_io_find_customers_by_email | Find the people in the workspace with an email address: returns their id, email and cio_id |
customer_io_search_customers | Search people in the workspace with a filter on segment membership and attribute values, up to 1000 per page; returns their identifiers… |
customer_io_get_customer_attributes | Get a person's profile: all attributes (stored as strings), identifiers, subscription preferences, timestamps and devices |
customer_io_get_customer_segments | List the segments a person currently belongs to (id, name, description) |
customer_io_list_customer_activities | List what happened to a person in the last 30 days or more: events, attribute changes, messages attempted, sent, opened, clicked, bounced… |
customer_io_list_customer_messages | List the deliveries sent to a person (newest six months unless start_ts and end_ts are given): message id, automation, broadcast or… |
customer_io_list_campaigns | List the automations (campaigns) of the workspace: id, name, type of trigger, state, active flag, created and updated times, trigger and… |
customer_io_get_campaign | Get one automation (campaign) with its trigger, segments, state, tags and actions (messages, delays, branches) |
customer_io_get_campaign_metrics | Get an automation's message metrics over a window: series of attempted, sent, delivered, opened, clicked, converted, bounced, spammed… |
customer_io_list_broadcasts | List the API-triggered broadcasts of the workspace: id, name, active flag, created and updated times, tags and actions |
customer_io_get_broadcast | Get one API-triggered broadcast: name, state, active flag, created, updated and first started times, tags and actions |
customer_io_get_broadcast_metrics | Get a broadcast's message metrics per period: series of attempted, sent, delivered, opened, clicked, converted, bounced, unsubscribed… |
customer_io_get_broadcast_trigger | Get the status of one broadcast trigger (as returned by customer_io_trigger_broadcast): created, processed and cancelled times, schedule… |
customer_io_list_newsletters | List the one-time sends (newsletters) of the workspace: id, name, type, sent and created times, recipient segments, tags and variant… |
customer_io_get_newsletter_metrics | Get a one-time send's message metrics per period: series of attempted, sent, delivered, opened, clicked, converted, bounced, unsubscribed… |
customer_io_list_segments | List the segments of the workspace (not archived ones): id, name, description, type (data-driven or manual), state, progress and tags |
customer_io_get_segment | Get one segment with its conditions (for data-driven segments), type, state and tags |
customer_io_get_segment_customer_count | Count the people currently in a segment, for example to size a broadcast audience before sending |
customer_io_list_segment_members | List the people in a segment, page by page: their identifiers (id, email, cio_id) |
customer_io_list_messages | List deliveries across the workspace, newest first, filtered by message type, metric (sent, delivered, opened, clicked, bounced… |
customer_io_get_message | Get one delivery by id: recipient, parent automation, broadcast, one-time send or transactional message, subject, template, created, sent… |
customer_io_list_activities | List activities across the workspace, newest first: events, attribute changes and message activity, optionally for one person, one type or… |
customer_io_list_transactional_messages | List the transactional message templates of the workspace (id, name, description, link tracking, body retention) |
customer_io_send_transactional_email | Send one transactional email (receipts, password resets, notifications) to up to 15 addresses in to, cc and bcc, from a transactional… |
customer_io_trigger_broadcast | Trigger an API-triggered broadcast: send it to its default audience set in Customer.io, or to listed emails or ids, per-person data, or… |
Example prompts
- "Find [email protected] in Customer.io and show me her attributes, her segments and the last emails we sent her."
- "How did our Onboarding automation perform over the last 30 days: sent, delivered, opened, clicked and unsubscribed?"
- "How many people are in the Trial ending segment right now, and which of them are on the pro plan?"
- "Trigger the Product update broadcast, but show me who will receive it and how many people that is before you send."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?