# courier-mcp

The official Model Context Protocol server for the Courier notification API. It gives AI agents full access to the Courier API — send messages, manage profiles, debug deliveries, configure lists, and…

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y @smithery/cli@latest mcp add courier/courier-mcp

# Browse available tools
npx -y @smithery/cli@latest tool list courier/courier-mcp

# Get full schema for a tool
npx -y @smithery/cli@latest tool get courier/courier-mcp get_audience

# Call a tool
npx -y @smithery/cli@latest tool call courier/courier-mcp get_audience '{}'
```

## Direct MCP Connection

Endpoint: `https://courier-mcp--courier.run.tools`

## Tools (59)

- `get_audience` — Get an audience by its ID, including its filter definition.
- `list_audience_members` — List all members of an audience.
- `list_audiences` — List all audiences in the workspace.
- `update_audience` — Create or update an audience with a filter definition.
- `delete_audience` — Delete an audience by its ID.
- `get_audit_event` — Get a specific audit event by its ID.
- `list_audit_events` — List audit events in the workspace. Useful for tracking API usage and changes.
- `generate_jwt_for_user` — Generate a JWT authentication token for a user. Used for client-side SDK auth (Inbox, Preferences, etc.).
- `invoke_automation_template` — Invoke an automation run from an existing automation template.
- `invoke_ad_hoc_automation` — Invoke an ad-hoc automation with inline steps (no template needed).
- `create_brand` — Create a new brand with name, colors, and email/inapp settings.
- `get_brand` — Get a brand by its ID.
- `list_brands` — List all brands in the workspace.
- `create_bulk_job` — Create a new bulk job for sending messages to multiple recipients. Workflow: create_bulk_job → add_bulk_users → run_bul…
- `add_bulk_users` — Add users to an existing bulk job.
- `run_bulk_job` — Run a bulk job, triggering delivery to all added users.
- `get_bulk_job` — Get the status of a bulk job.
- `list_bulk_users` — List the users in a bulk job.
- `courier_installation_guide` — Get the Courier SDK installation guide for a specific platform. For client-side SDKs (React, iOS, Android, Flutter, Rea…
- `track_inbound_event` — Track an inbound event that can trigger automations. Requires event name, messageId (for deduplication), and properties.
- `list_lists` — Get all lists. Optionally filter by pattern (e.g. 'example.list.*').
- `get_list` — Get a list by its ID.
- `get_list_subscribers` — Get all subscribers of a list.
- `create_list` — Create or update a list by list ID.
- `subscribe_user_to_list` — Subscribe a user to a list. Creates the list if it doesn't exist.
- `unsubscribe_user_from_list` — Unsubscribe a user from a list.
- `list_messages` — List messages you've previously sent. Filter by status, recipient, notification, provider, tags, or tenant.
- `get_message` — Get the full details and status of a single message by its ID.
- `get_message_content` — Get the rendered content (HTML, text, subject) of a previously sent message.
- `get_message_history` — Get the event history for a message, showing each step in the delivery pipeline (enqueued, sent, delivered, etc.).
- `cancel_message` — Cancel a message that is currently being delivered. Returns the message details with updated status.
- `list_notifications` — List notification templates. Optionally filter by cursor.
- `get_notification_content` — Get the published content blocks of a notification template.
- `get_notification_draft_content` — Get the draft (unpublished) content blocks of a notification template.
- `get_user_profile_by_id` — Get a user profile by their ID. Returns profile data including email, phone, and custom properties.
- `create_or_merge_user` — Create a new user profile or merge supplied values into an existing profile (POST). Existing fields not included are pr…
- `replace_profile` — Fully replace a user profile (PUT). All existing data is overwritten; include every field you want to keep.
- `delete_profile` — Delete a user profile permanently.
- `get_user_list_subscriptions` — Get all list subscriptions for a user.
- `subscribe_user_to_lists` — Subscribe a user to one or more lists. Creates lists that do not exist.
- `delete_user_list_subscriptions` — Delete all list subscriptions for a user.
- `send_message` — Send a message to a user using inline title and body content (no template). Optionally specify routing channels.
- `send_message_template` — Send a message to a user using a pre-configured notification template. Optionally pass data and routing.
- `send_message_to_list` — Send a message to all subscribers of a list using inline title and body content.
- `send_message_to_list_template` — Send a message to all subscribers of a list using a notification template.
- `get_tenant` — Get a tenant by its ID.
- `create_or_update_tenant` — Create or replace a tenant. Tenants represent organizations or groups that users belong to.
- `list_tenants` — List all tenants in the workspace.
- `delete_tenant` — Delete a tenant by its ID.
- `get_translation` — Get a translation for a specific locale (e.g. "en_US", "fr_FR").
- `update_translation` — Create or update a translation for a specific locale.
- `list_user_push_tokens` — List all push/device tokens for a user.
- `get_user_push_token` — Get a specific push/device token for a user.
- `create_or_replace_user_push_token` — Create or replace a push/device token for a user.
- `get_user_preferences` — Get a user's notification preferences (subscriptions, opt-outs, channel preferences).
- `update_user_preference_topic` — Update a user's preference for a specific subscription topic (opt in, opt out, or set channel preferences).
- `list_user_tenants` — List all tenants a user belongs to.
- `add_user_to_tenant` — Add a user to a tenant.
- `remove_user_from_tenant` — Remove a user from a tenant.

```bash
# Get full input/output schema for a tool
npx -y @smithery/cli@latest tool get courier/courier-mcp <tool-name>
```
