courier-mcp
The official Model Context Protocol server for the Courier notification API.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- 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.
What data it sees
Do you need an account
No: the server works without sign-in
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 more — through 60 tools backed by the @trycourier/courier Node SDK.
Server tool list (59)
Raw names from tools/list. Only developers need these.
| 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_bulk_job. |
| 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, React Native), also generates a sample JWT. |
| 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 preserved. |
| 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. |