Courier
io.github.trycourier/courier · v1.3.7 · MCP 2025-11-25
Send notifications, manage templates, and configure integrations with Courier.
Reachability
reachable
checked 2026-07-14 04:29 UTC
Registry status active
Tools pinned 123
cdfe3c1b1c36
Tools last changed
unchanged since first capture 2026-07-14
Provenance
Registry namespace io.github.trycourier
(GitHub-account verified by the official registry)
Repository
github.com/trycourier/courier-mcp
Website
https://courier.com
Remote endpoints
https://mcp.courier.com (streamable-http)
Observed changes
| When (UTC) | Event | Detail |
|---|---|---|
| 2026-07-14 03:21 | first capture | 123 tools pinned |
Pinned tool definitions (123)
| Tool | Description |
|---|---|
| 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. Call list_automations first to get the template_id. Example: { template_id: "auto-onboarding", recipient: "user-123", data: { plan: "pro" } }. |
| 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. |
| 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. |
| 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... |
| 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",... |
| get_brand | Get a brand by its ID. |
| list_brands | List all brands in the workspace. |
| update_brand | Replace an existing brand with new values. |
| delete_brand | Delete a brand by its ID. |
| 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. |
| delete_list | Delete a list by its ID. |
| restore_list | Restore a previously deleted list. |
| bulk_subscribe_to_list | Replace all subscribers on a list with the given recipients. |
| add_subscribers_to_list | Append subscribers to a list without removing existing subscribers. |
| 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. |
| 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:... |
| get_notification | Retrieve a notification template by ID. Optionally request draft, published, or a version such as v001. |
| replace_notification | Replace a notification template entirely (full document PUT). |
| archive_notification | Archive a notification template by ID. |
| list_notification_versions | List version history for a notification template. |
| 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... |
| list_notification_checks | List checks for a notification submission. |
| update_notification_checks | Update check statuses for a notification submission. |
| 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",... |
| put_notification_element | Update a single element within a V2 notification template. |
| 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:... |
| cancel_notification_submission | Cancel a notification template submission. |
| 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. |
| patch_profile | Partially update a user profile via JSON Patch (RFC 6902). Use add/replace/remove operations on specific profile paths. |
| 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 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",... |
| 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. |
| list_tenant_users | List users associated with a tenant. |
| 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... |
| delete_tenant_preference | Remove default notification preference for a topic from a tenant. |
| list_tenant_templates | List notification templates configured for a tenant. |
| get_tenant_template | Get a tenant notification template association by template ID. |
| replace_tenant_template | Create or replace a tenant notification template (draft unless published is true). |
| publish_tenant_template | Publish a version of a tenant notification template. |
| get_tenant_template_version | Get a specific version of a tenant notification template (e.g. latest, published, or v1). |
| delete_tenant_template | Delete a tenant notification template. Returns 204 on success, 404 if the template does not exist for this tenant. |
| 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. |
| bulk_add_user_tokens | Add multiple push/device tokens for a user in one request. Overwrites matching existing tokens. |
| patch_user_token | Apply a JSON Patch (RFC 6902) to a specific push token. |
| delete_user_token | Delete a specific push token for a user. |
| get_user_preferences | Get a user's notification preferences (subscriptions, opt-outs, channel preferences). |
| get_user_preference_topic | Get a user's preference for a specific subscription topic. |
| 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. |
| bulk_add_user_tenants | Add a user to multiple tenants at once. A custom profile can be supplied per tenant. |
| remove_all_user_tenants | Remove a user from all tenants. |
| archive_request | Archive a send request and all its associated messages by request ID. |
| create_routing_strategy | Create a routing strategy defining how notifications are delivered across channels and providers. |
| get_routing_strategy | Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers. |
| replace_routing_strategy | Replace a routing strategy. Full document replacement; missing optional fields are cleared. |
| archive_routing_strategy | Archive a routing strategy. The strategy must not have associated notification templates; unlink all templates before archiving. |
| list_routing_strategies | List routing strategies in the workspace. Returns metadata only; use get for full details. |
| list_routing_strategy_notifications | List notification templates associated with a routing strategy. Useful for checking linked templates before archiving. |
| 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). |
| 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" } }. |
| 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... |
| 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. |
| 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... |
| 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. |
| archive_journey | Archive a journey. Archived journeys cannot be invoked but existing runs continue to completion. |
| list_journey_versions | List published versions of a journey, ordered most recent first. |
| 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. |
| 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",... |
| 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. |
| replace_journey_template | Replace the draft of a journey-scoped notification template. Full document replacement. Call publish_journey_template afterwards to make it live. |
| archive_journey_template | Archive a journey-scoped notification template. Archived templates cannot be sent. |
| publish_journey_template | Publish the current draft of a journey-scoped notification template. Optionally pass version to roll back to a prior version. |
| list_journey_template_versions | List published versions of a journey-scoped notification template, ordered most recent first. |
| list_providers | List configured provider integrations for the workspace. |
| get_provider | Fetch a single provider configuration by ID. |
| list_provider_catalog | List available provider types from the catalog with their configuration schemas. |
| 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... |
| 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. |
| delete_provider | Delete a provider configuration. Returns 409 if the provider is still referenced by routing or notifications. |
Status badge
[](https://toolpin.dev/servers/io.github.trycourier/courier)
Maintain this server? Add the badge to your README — it links your users to this live status page.