---
canonical_url: "https://docs.composio.dev/toolkits/customerio_mcp"
markdown_url: "https://docs.composio.dev/toolkits/customerio_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Customer.io MCP

Work with Customer.io people, campaigns, broadcasts, and workspace configuration.

- **Category:** crm
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 8
- **Triggers:** 0
- **Slug:** `CUSTOMERIO_MCP`
- **Version:** 20260910_00

## Tools

### Cio auth status

**Slug:** `CUSTOMERIO_MCP_CIO_AUTH_STATUS`

Show the active authentication state. Reports the authenticated user and account, the workspaces the current OAuth token is allowed to access, and whether an agent service-account JWT can be minted. Use this to diagnose auth errors.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string | Yes | Authentication state of the caller. |
| `user_id` | integer | Yes | Authenticated user ID. |
| `base_url` | string | Yes | Customer.io API base URL the agent will call. |
| `verified` | boolean | Yes | Whether an agent JWT could be minted. |
| `plan_name` | string | No | Display name of the account plan, e.g. Premium, Startup, Free Trial. |
| `plan_type` | string | No | The account's plan type, e.g. premium, essentials, startup, basic, trial. Empty when it could not be resolved. |
| `account_id` | integer | Yes | Authenticated account ID. |
| `verify_error` | string | No | Error if verification failed. |
| `allowed_workspace_ids` | string | Yes | Workspace IDs the OAuth token can access. |

### Cio delete api

**Slug:** `CUSTOMERIO_MCP_CIO_DELETE_API`

Delete a resource via the Customer.io API (DELETE only). Always run with dry_run first to preview. Use cio_schema to find the correct path.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jq` | string | No | gojq expression to filter the response before returning. |
| `path` | string | Yes | API path including placeholders, e.g. '/v1/environments/{environment_id}/campaigns/{campaign_id}'. Placeholders are substituted from params. |
| `params` | object | No | Parameters as a nested JSON object (pass the object directly; do not JSON-encode it as a string). Keys matching path placeholders are substituted; remaining keys become the query string. |
| `dry_run` | boolean | No | Validate and return the request without executing it. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Customer.io API result, filtered result, request preview, or text response. |

### Cio prime

**Slug:** `CUSTOMERIO_MCP_CIO_PRIME`

Print LLM-ready instructions for using the Customer.io API. ALWAYS call this first in a new task — it contains the authoritative, version-specific rules for how to drive the API via the other cio_* tools.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `instructions` | string | Yes | Authoritative instructions for using the Customer.io MCP tools. |

### Cio read api

**Slug:** `CUSTOMERIO_MCP_CIO_READ_API`

Read from the Customer.io API (GET only). Use cio_schema first to find the correct path and placeholders. Workspace routing is enforced server-side via the caller's OAuth token.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jq` | string | No | gojq expression to filter the response before returning. Use to trim large responses. |
| `page` | number | No | Page number (1-indexed). |
| `path` | string | Yes | API path including placeholders, e.g. '/v1/environments/{environment_id}/campaigns'. Placeholders are substituted from params. |
| `limit` | number | No | Page size. |
| `params` | object | No | Parameters as a nested JSON object (pass the object directly; do not JSON-encode it as a string). Keys matching path placeholders are substituted; remaining keys become the query string. |
| `dry_run` | boolean | No | Validate and return the request without executing it. |
| `page_all` | boolean | No | Auto-paginate and return NDJSON for the full dataset. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Customer.io API result, filtered result, request preview, or text response. |

### Cio schema

**Slug:** `CUSTOMERIO_MCP_CIO_SCHEMA`

Introspect the Customer.io API schema. Use this to discover endpoints before calling cio_read_api / cio_write_api / cio_delete_api — never guess paths or field names. Pass no query to list resources; pass a resource name ('campaigns') to list its endpoints; pass 'resource.method' ('campaigns.list'), 'METHOD /path', or '/path' for endpoint detail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | One of: '' (list resources), 'campaigns' (resource), 'campaigns.list' (resource.method), 'GET /v1/...' (method + path), or '/v1/...' (all methods for a path). |
| `refresh` | boolean | No | Force re-download of API specs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Schema discovery result. The value varies with the query. |

### Cio skills list

**Slug:** `CUSTOMERIO_MCP_CIO_SKILLS_LIST`

List available agent skills — task-specific instruction manuals maintained by Customer.io (routing rules, required params, multi-step workflows).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `refresh` | boolean | No | Force re-download of skills. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `skills` | string | Yes | Available skills. |
| `account_plan` | string | No | The account plan these skills are scoped to. |

### Cio skills read

**Slug:** `CUSTOMERIO_MCP_CIO_SKILLS_READ`

Read the full content of a specific agent skill. Paths look like 'campaigns' for the main skill or 'campaigns/examples.md' for a sub-file — see cio_skills_list for available paths.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `path` | string | Yes | Skill path, e.g. 'campaigns' or 'campaigns/examples'. See cio_skills_list for available paths. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Skill name. |
| `path` | string | No | Skill or sub-file path. |
| `error` | string | No | Error message when the skill or file is not found. |
| `skill` | string | No | The requested skill, when a sub-file lookup fails. |
| `content` | string | No | Markdown content of the skill or sub-file. |
| `available_files` | string | No | Sub-file paths available within the requested skill. |
| `available_skills` | string | No | Top-level skill paths available. |

### Cio write api

**Slug:** `CUSTOMERIO_MCP_CIO_WRITE_API`

Write to the Customer.io API (POST, PUT, or PATCH). Always run with dry_run first to preview. Use cio_schema to find the correct path, method, and body shape.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jq` | string | No | gojq expression to filter the response before returning. |
| `body` | object | No | JSON request body as a nested object (pass the object directly; do not JSON-encode it as a string). |
| `path` | string | Yes | API path including placeholders, e.g. '/v1/environments/{environment_id}/campaigns'. Placeholders are substituted from params. |
| `method` | string | No | HTTP method: POST, PUT, or PATCH. Defaults to POST. |
| `params` | object | No | Parameters as a nested JSON object (pass the object directly; do not JSON-encode it as a string). Keys matching path placeholders are substituted; remaining keys become the query string. |
| `dry_run` | boolean | No | Validate and return the request without executing it. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Customer.io API result, filtered result, request preview, or text response. |
