# Courier MCP server

Send notifications, manage templates, and configure integrations with Courier.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-trycourier-courier
- Repository: https://github.com/trycourier/courier-mcp
- Website: https://www.courier.com

## Install
- Endpoint: https://mcp.courier.com
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: api_key (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://mcp.courier.com
- Header: api_key

## Tools
- get_audience - Get an audience by its ID, including its filter definition. Endpoint: https://mcp.courier.com
- list_audience_members - List all members of an audience. Endpoint: https://mcp.courier.com
- list_audiences - List all audiences in the workspace. Endpoint: https://mcp.courier.com
- update_audience - Create or update an audience with a filter definition. Endpoint: https://mcp.courier.com
- delete_audience - Delete an audience by its ID. Endpoint: https://mcp.courier.com
- get_audit_event - Get a specific audit event by its ID. Endpoint: https://mcp.courier.com
- list_audit_events - List audit events in the workspace. Useful for tracking API usage and changes. Endpoint: https://mcp.courier.com
- generate_jwt_for_user - Generate a JWT authentication token for a user. Used for client-side SDK auth (Inbox, Preferences, etc.). Endpoint: https://mcp.courier.com
- invoke_automation_template - Invoke an automation run from an existing automation template. Call list_automations first to get the template_id. Example: { template_id: "auto-onboarding", recipient: "user-123", data: { plan: "pro" } }. Endpoint: https://mcp.courier.com
- invoke_ad_hoc_automation - Invoke an ad-hoc automation with inline steps. Valid step actions: send, send-list, delay, cancel, update-profile, invoke, fetch-data. To cancel a previously started automation, use the cancel_automation tool instead. Endpoint: https://mcp.courier.com
- list_automations - List automation templates in the workspace. Always call this first to discover template_id values before calling invoke_automation_template. Optionally filter by version. Endpoint: https://mcp.courier.com
- cancel_automation - Cancel a running automation by its cancelation_token. This invokes a second ad-hoc automation with a single cancel step. The token must match the cancelation_token set when the original automation was started. Note: spelling is "cancelation_token" (single "l"). Endpoint: https://mcp.courier.com
- create_brand - Create a new brand. The API requires settings — omitting it returns a 400. If you do not have specific brand colors, omit settings and a safe default will be used automatically (black primary, white secondary). Example: { name: "Acme", settings: { colors: { primary: "#1a73e8", secondary: "#ffffff" } } }. Endpoint: https://mcp.courier.com
- get_brand - Get a brand by its ID. Endpoint: https://mcp.courier.com
- list_brands - List all brands in the workspace. Endpoint: https://mcp.courier.com
- update_brand - Replace an existing brand with new values. Endpoint: https://mcp.courier.com
- delete_brand - Delete a brand by its ID. Endpoint: https://mcp.courier.com
- create_bulk_job - Create a new bulk job for sending messages to multiple recipients. Workflow: create_bulk_job → add_bulk_users → run_bulk_job. Endpoint: https://mcp.courier.com
- add_bulk_users - Add users to an existing bulk job. Endpoint: https://mcp.courier.com
- run_bulk_job - Run a bulk job, triggering delivery to all added users. Endpoint: https://mcp.courier.com
- get_bulk_job - Get the status of a bulk job. Endpoint: https://mcp.courier.com
- list_bulk_users - List the users in a bulk job. Endpoint: https://mcp.courier.com
- 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. Endpoint: https://mcp.courier.com
- track_inbound_event - Track an inbound event that can trigger automations. Requires event name, messageId (for deduplication), and properties. Endpoint: https://mcp.courier.com
- list_lists - Get all lists. Optionally filter by pattern (e.g. 'example.list.*'). Endpoint: https://mcp.courier.com
- get_list - Get a list by its ID. Endpoint: https://mcp.courier.com
- get_list_subscribers - Get all subscribers of a list. Endpoint: https://mcp.courier.com
- create_list - Create or update a list by list ID. Endpoint: https://mcp.courier.com
- subscribe_user_to_list - Subscribe a user to a list. Creates the list if it doesn't exist. Endpoint: https://mcp.courier.com
- unsubscribe_user_from_list - Unsubscribe a user from a list. Endpoint: https://mcp.courier.com
- delete_list - Delete a list by its ID. Endpoint: https://mcp.courier.com
- restore_list - Restore a previously deleted list. Endpoint: https://mcp.courier.com
- bulk_subscribe_to_list - Replace all subscribers on a list with the given recipients. Endpoint: https://mcp.courier.com
- add_subscribers_to_list - Append subscribers to a list without removing existing subscribers. Endpoint: https://mcp.courier.com
- list_messages - List messages you've previously sent. Filter by status, recipient, notification, provider, tags, or tenant. Endpoint: https://mcp.courier.com
- get_message - Get the full details and status of a single message by its ID. Endpoint: https://mcp.courier.com
- get_message_content - Get the rendered content (HTML, text, subject) of a previously sent message. Endpoint: https://mcp.courier.com
- get_message_history - Get the event history for a message, showing each step in the delivery pipeline (enqueued, sent, delivered, etc.). Endpoint: https://mcp.courier.com
- cancel_message - Cancel a message that is currently being delivered. Returns the message details with updated status. Endpoint: https://mcp.courier.com
- list_notifications - List notification templates. Optionally filter by cursor. Endpoint: https://mcp.courier.com
- get_notification_content - Get the published content blocks of a notification template. Endpoint: https://mcp.courier.com
- get_notification_draft_content - Get the draft (unpublished) content blocks of a notification template. Endpoint: https://mcp.courier.com
- create_notification - Create a V2 notification template. name is required. Provide content inline or set it immediately after creation via put_notification_content. To send with this template you must publish it first via publish_notification (or pass state: 'PUBLISHED' on create). Link a routing strategy via notification.routing.strategy_id to control which channels are used. Example: { notification: { name: 'welcome-email', tags: [], brand: null, subscription: null, routing: { strategy_id: 'rs_01abc' }, content: { version: '2022-01-01', elements: [] } } }. Endpoint: https://mcp.courier.com
- get_notification - Retrieve a notification template by ID. Optionally request draft, published, or a version such as v001. Endpoint: https://mcp.courier.com
- replace_notification - Replace a notification template entirely (full document PUT). Endpoint: https://mcp.courier.com
- archive_notification - Archive a notification template by ID. Endpoint: https://mcp.courier.com
- list_notification_versions - List version history for a notification template. Endpoint: https://mcp.courier.com
- publish_notification - Publish a notification template, making it available for sending. Must be called before send_message_template unless the template was created with state: 'PUBLISHED'. Publishes the current draft by default; pass version (e.g. 'v001') to publish a specific historical version. Returns 204 on success. Endpoint: https://mcp.courier.com
- list_notification_checks - List checks for a notification submission. Endpoint: https://mcp.courier.com
- update_notification_checks - Update check statuses for a notification submission. Endpoint: https://mcp.courier.com
- put_notification_content - Replace the elemental content of a V2 notification template. Overwrites all elements. Use channel elements to target specific channels. Multi-channel example: elements: [{ type: "channel", channel: "email", elements: [{ type: "meta", title: "Hello" }, { type: "text", content: "Email body" }] }, { type: "channel", channel: "push", elements: [{ type: "meta", title: "Hello" }, { type: "text", content: "Push body" }] }, { type: "channel", channel: "inbox", elements: [{ type: "text", content: "Inbox plain text only" }] }]. Endpoint: https://mcp.courier.com
- put_notification_element - Update a single element within a V2 notification template. Endpoint: https://mcp.courier.com
- put_notification_locale - Set locale-specific content overrides for a V2 notification template. Each element override must reference an existing element by its id. Example for Spanish locale: { notification_id: "nt_01abc", locale_id: "es", elements: [{ id: "elem_meta_1", title: "Restablecer contraseña" }, { id: "elem_text_1", content: "Haga clic en el enlace para restablecer su contraseña." }] }. Endpoint: https://mcp.courier.com
- cancel_notification_submission - Cancel a notification template submission. Endpoint: https://mcp.courier.com
- get_user_profile_by_id - Get a user profile by their ID. Returns profile data including email, phone, and custom properties. Endpoint: https://mcp.courier.com
- create_or_merge_user - Create a new user profile or merge supplied values into an existing profile (POST). Existing fields not included are preserved. Endpoint: https://mcp.courier.com
- replace_profile - Fully replace a user profile (PUT). All existing data is overwritten; include every field you want to keep. Endpoint: https://mcp.courier.com
- patch_profile - Partially update a user profile via JSON Patch (RFC 6902). Use add/replace/remove operations on specific profile paths. Endpoint: https://mcp.courier.com
- delete_profile - Delete a user profile permanently. Endpoint: https://mcp.courier.com
- get_user_list_subscriptions - Get all list subscriptions for a user. Endpoint: https://mcp.courier.com
- subscribe_user_to_lists - Subscribe a user to one or more lists. Creates lists that do not exist. Endpoint: https://mcp.courier.com
- delete_user_list_subscriptions - Delete all list subscriptions for a user. Endpoint: https://mcp.courier.com
- send_message - Send a message to a user using inline title and body content (no template). Optionally specify routing channels. Endpoint: https://mcp.courier.com
- send_message_template - Send a message to a user using a published notification template. The template must be published before sending — call publish_notification first if needed. Example: { user_id: "user-123", template: "nt_01abc123", data: { name: "Alex", resetUrl: "https://app.example.com/reset" } }. Endpoint: https://mcp.courier.com
- send_message_to_list - Send a message to all subscribers of a list using inline title and body content. Endpoint: https://mcp.courier.com
- send_message_to_list_template - Send a message to all subscribers of a list using a notification template. Endpoint: https://mcp.courier.com
- get_tenant - Get a tenant by its ID. Endpoint: https://mcp.courier.com
- create_or_update_tenant - Create or replace a tenant. Tenants represent organizations or groups that users belong to. Endpoint: https://mcp.courier.com
- list_tenants - List all tenants in the workspace. Endpoint: https://mcp.courier.com
- delete_tenant - Delete a tenant by its ID. Endpoint: https://mcp.courier.com
- list_tenant_users - List users associated with a tenant. Endpoint: https://mcp.courier.com
- update_tenant_preference - Set the default notification preference for a subscription topic on a tenant. This controls tenant-level defaults — it does NOT set per-user preferences (use the user preferences API for that). The topic_id must already exist as a subscription topic in the workspace; a 404 means the topic has not been created yet. Example: { tenant_id: "acme", topic_id: "marketing-updates", status: "OPTED_IN", has_custom_routing: true, custom_routing: ["email", "push"] }. Endpoint: https://mcp.courier.com
- delete_tenant_preference - Remove default notification preference for a topic from a tenant. Endpoint: https://mcp.courier.com
- list_tenant_templates - List notification templates configured for a tenant. Endpoint: https://mcp.courier.com
- get_tenant_template - Get a tenant notification template association by template ID. Endpoint: https://mcp.courier.com
- replace_tenant_template - Create or replace a tenant notification template (draft unless published is true). Endpoint: https://mcp.courier.com
- publish_tenant_template - Publish a version of a tenant notification template. Endpoint: https://mcp.courier.com
- get_tenant_template_version - Get a specific version of a tenant notification template (e.g. latest, published, or v1). Endpoint: https://mcp.courier.com
- delete_tenant_template - Delete a tenant notification template. Returns 204 on success, 404 if the template does not exist for this tenant. Endpoint: https://mcp.courier.com
- get_translation - Get a translation for a specific locale (e.g. "en_US", "fr_FR"). Endpoint: https://mcp.courier.com
- update_translation - Create or update a translation for a specific locale. Endpoint: https://mcp.courier.com
- list_user_push_tokens - List all push/device tokens for a user. Endpoint: https://mcp.courier.com
- get_user_push_token - Get a specific push/device token for a user. Endpoint: https://mcp.courier.com
- create_or_replace_user_push_token - Create or replace a push/device token for a user. Endpoint: https://mcp.courier.com
- bulk_add_user_tokens - Add multiple push/device tokens for a user in one request. Overwrites matching existing tokens. Endpoint: https://mcp.courier.com
- patch_user_token - Apply a JSON Patch (RFC 6902) to a specific push token. Endpoint: https://mcp.courier.com
- delete_user_token - Delete a specific push token for a user. Endpoint: https://mcp.courier.com
- get_user_preferences - Get a user's notification preferences (subscriptions, opt-outs, channel preferences). Endpoint: https://mcp.courier.com
- get_user_preference_topic - Get a user's preference for a specific subscription topic. Endpoint: https://mcp.courier.com
- update_user_preference_topic - Update a user's preference for a specific subscription topic (opt in, opt out, or set channel preferences). Endpoint: https://mcp.courier.com
- list_user_tenants - List all tenants a user belongs to. Endpoint: https://mcp.courier.com
- add_user_to_tenant - Add a user to a tenant. Endpoint: https://mcp.courier.com
- remove_user_from_tenant - Remove a user from a tenant. Endpoint: https://mcp.courier.com
- bulk_add_user_tenants - Add a user to multiple tenants at once. A custom profile can be supplied per tenant. Endpoint: https://mcp.courier.com
- remove_all_user_tenants - Remove a user from all tenants. Endpoint: https://mcp.courier.com
- archive_request - Archive a send request and all its associated messages by request ID. Endpoint: https://mcp.courier.com
- create_routing_strategy - Create a routing strategy defining how notifications are delivered across channels and providers. Endpoint: https://mcp.courier.com
- get_routing_strategy - Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers. Endpoint: https://mcp.courier.com
- replace_routing_strategy - Replace a routing strategy. Full document replacement; missing optional fields are cleared. Endpoint: https://mcp.courier.com
- archive_routing_strategy - Archive a routing strategy. The strategy must not have associated notification templates; unlink all templates before archiving. Endpoint: https://mcp.courier.com
- list_routing_strategies - List routing strategies in the workspace. Returns metadata only; use get for full details. Endpoint: https://mcp.courier.com
- list_routing_strategy_notifications - List notification templates associated with a routing strategy. Useful for checking linked templates before archiving. Endpoint: https://mcp.courier.com
- list_journeys - List journey templates in the workspace. Call this first to discover journey IDs before calling invoke_journey, get_journey, or replace_journey. Optionally filter by version (published or draft). Endpoint: https://mcp.courier.com
- invoke_journey - Invoke a journey run from a journey template. Call list_journeys first to find the template_id. Example: { template_id: "j-onboarding", user_id: "user-123", data: { plan: "pro" } }. Endpoint: https://mcp.courier.com
- create_journey - Create a new journey. Defaults to DRAFT state. Send nodes are not allowed on create — create the shell with a trigger node, then call replace_journey to add send nodes after linking notification templates. Call publish_journey to make it live. Node ids are server-generated; do NOT include an id field. Example: { name: "Welcome Journey", nodes: [{ type: "trigger", trigger_type: "api-invoke" }], enabled: true }. Endpoint: https://mcp.courier.com
- get_journey - Get a journey by ID. Pass version=draft to retrieve the working draft, or version=vN for a historical version. Defaults to published. Endpoint: https://mcp.courier.com
- replace_journey - Replace (update) a journey draft. Full document replacement — include all nodes and properties in the body. Call publish_journey afterwards to make changes live, or pass state: "PUBLISHED" to publish immediately. Send node template IDs must already be scoped to this journey. Endpoint: https://mcp.courier.com
- publish_journey - Publish the current draft of a journey, making it live and invokable. Pass version to roll back to a prior published version instead of publishing the draft. Returns 404 if there is no draft to publish. Endpoint: https://mcp.courier.com
- archive_journey - Archive a journey. Archived journeys cannot be invoked but existing runs continue to completion. Endpoint: https://mcp.courier.com
- list_journey_versions - List published versions of a journey, ordered most recent first. Endpoint: https://mcp.courier.com
- list_journey_templates - List notification templates scoped to a journey. Journey-scoped templates can only be used by send nodes within the same journey. Call this to discover template IDs before wiring send nodes in replace_journey. Endpoint: https://mcp.courier.com
- create_journey_template - Create a notification template scoped to a journey. Defaults to DRAFT; pass state: "PUBLISHED" to publish on create. The template can then be referenced in journey send nodes. Example: { journey_id: "j-abc", channel: "email", notification: { name: "Welcome Email", tags: [], brand: null, subscription: null, content: { version: "2022-01-01", elements: [{ type: "text", content: "Hello!" }] } } }. Endpoint: https://mcp.courier.com
- get_journey_template - Get a journey-scoped notification template by notification ID. Pass version=draft to retrieve the working draft (required before the template has been published). Defaults to published. Endpoint: https://mcp.courier.com
- replace_journey_template - Replace the draft of a journey-scoped notification template. Full document replacement. Call publish_journey_template afterwards to make it live. Endpoint: https://mcp.courier.com
- archive_journey_template - Archive a journey-scoped notification template. Archived templates cannot be sent. Endpoint: https://mcp.courier.com
- publish_journey_template - Publish the current draft of a journey-scoped notification template. Optionally pass version to roll back to a prior version. Endpoint: https://mcp.courier.com
- list_journey_template_versions - List published versions of a journey-scoped notification template, ordered most recent first. Endpoint: https://mcp.courier.com
- list_providers - List configured provider integrations for the workspace. Endpoint: https://mcp.courier.com
- get_provider - Fetch a single provider configuration by ID. Endpoint: https://mcp.courier.com
- list_provider_catalog - List available provider types from the catalog with their configuration schemas. Endpoint: https://mcp.courier.com
- create_provider - Create a new provider (integration) configuration. Once routing strategies or notification templates reference this config, credential or settings mistakes can affect live sends—confirm provider key and settings against list_provider_catalog before saving. The provider field must be a known Courier provider key. Endpoint: https://mcp.courier.com
- update_provider - Replace an existing provider configuration. Full replacement — retrieve current config with get_provider first; omitted optional fields are cleared. Changing API keys or settings affects live delivery if this integration is in use. Endpoint: https://mcp.courier.com
- delete_provider - Delete a provider configuration. Returns 409 if the provider is still referenced by routing or notifications. Endpoint: https://mcp.courier.com

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.trycourier
- Version: 1.3.6
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 3, 2026
- Source: https://registry.modelcontextprotocol.io
