NestDaddy

Courier

io.github.trycourier/courier · v1.3.7

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

Connect Remote server

Terminal
claude mcp add --transport http courier https://mcp.courier.com --header "api_key: <API_KEY>"
~/.cursor/mcp.json
{
  "mcpServers": {
    "courier": {
      "url": "https://mcp.courier.com",
      "headers": {
        "api_key": "<API_KEY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "courier": {
      "type": "http",
      "url": "https://mcp.courier.com",
      "headers": {
        "api_key": "<API_KEY>"
      }
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://mcp.courier.com

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools 80 found in our last check

  • 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.).

  • list_notifications

    List notification templates, newest first. Pass tags to return only templates carrying ALL of the given tags. Page through the rest with 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. Content may be provided inline or set separately afterwards. A newly created template is a draft; making it live is a separate step this tool cannot perform. Link a routing strategy via notification.routing.strategy_id to cont…

  • 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). The template stays a draft; making it live is a separate step this tool cannot perform.

  • 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: "E…

  • put_notification_element

    Update a single element within a V2 notification template. The template stays a draft; making it live is a separate step this tool cannot perform.

  • 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" }…

  • list_notification_versions

    List the version history of a notification template — each published version with when it was created. Use this to say what changed and when, or to find the version string get_notification accepts.

  • list_notification_checks

    List the checks recorded against one notification submission. Checks are the gates a submission has to clear before it goes out, so a failing check here is the reason a template is stuck rather than live.

  • list_providers

    List configured provider integrations for the workspace.

  • get_provider

    Fetch a single provider configuration by ID.

  • list_provider_catalog

    List the provider integrations Courier supports and the configuration each one expects. This is the catalog of what COULD be connected, not what this workspace has configured — use list_providers for that. Answers "what can I connect Courier to" and "what do I need in order to s…

  • get_routing_strategy

    Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers.

  • list_routing_strategies

    List the workspace's routing strategies, returning metadata only. A routing strategy decides which channel a notification takes and in what order. Use this to find the rs_-prefixed strategy ID that get_routing_strategy needs for the full definition.

  • list_preference_sections

    List the workspace's preference sections, each with the topics inside it. One call returns the whole opt-in surface: everything a user could subscribe to or opt out of. This is what the workspace DEFINES — use get_user_preferences for what a particular person actually chose.

  • get_preference_section

    Get one preference section by ID, including its topics. Use this when you already know which section you need; list_preference_sections returns every section with its topics in one call.

  • list_preference_topics

    List the subscription topics inside one preference section. A topic is the individual thing a user opts in or out of, and its ID is what get_user_preference_topic takes.

  • get_preference_topic

    Get one subscription topic within a section, including its default opt-in state. Returns 404 if the section or topic does not exist, or if the topic belongs to a different section — so a 404 here can mean the pairing is wrong rather than the topic missing.

  • create_journey

    Create a new journey. Always created as a draft; making it live is a separate step this tool cannot perform. Send two nodes: the trigger, and an exit node last. Both are required — a create with no exit node is rejected, and the API reports that as "exit node must be the last no…

  • 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, the trigger included; anything omitted is deleted. The journey stays a draft; making the change live is a separate step this tool cannot perform. This is where send, delay…

  • create_journey_template

    Create a notification template scoped to a journey. Always created as a draft; making it live is a separate step this tool cannot perform. The template can then be referenced in journey send nodes. content.elements must be wrapped in a channel block — the API rejects bare elemen…

  • put_journey_template_content

    Replace the elemental content of a journey-scoped notification template. Overwrites all elements. The template stays a draft; making it live is a separate step this tool cannot perform.

  • put_journey_template_locale

    Set locale-specific content overrides for a journey-scoped notification template. Each element override must reference an existing element by its id. The template stays a draft; making it live is a separate step this tool cannot perform.

  • list_journeys

    List journey templates in the workspace, returning the journey IDs and version state of each. Optionally filter by version (published or draft).

  • 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.

  • 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.

  • get_journey_template_content

    Fetch the elemental content of a journey-scoped notification template. Pass version=draft for the working draft, or vN for a historical version. Defaults to published.

  • get_notification_metrics

    Delivery funnel for ONE notification template over time: sent, delivered, opened, clicked, errors and undeliverable, per provider and channel, in time buckets. Choosing the window — supply EITHER `lookback` OR `start` and `end` together, NEVER both. Supplying both is rejected. F…

  • get_tenant

    Get a tenant by its ID.

  • list_tenants

    List the workspace's tenants. A tenant is a customer or organisation whose users, branding and preferences are scoped separately; this answers "what tenants do I have" and gives you the tenant IDs get_tenant needs.

  • list_tenant_users

    List the users associated with one tenant. Use this to confirm whether someone actually belongs to the tenant whose branding or preferences you are reasoning about.

  • get_user_profile_by_id

    Get a user profile by their ID. Returns profile data including email, phone, and custom properties.

  • get_user_list_subscriptions

    List the lists one user is subscribed to. Use this when explaining why a user received something — a subscription here is the reason a list-addressed send reached them, and its absence rules that path out.

  • get_user_preferences

    Get a user's notification preferences (subscriptions, opt-outs, channel preferences).

  • get_user_preference_topic

    Get one user's choice for a single subscription topic — whether they opted in or out, and per channel. Use this when you already know which topic is in question; get_user_preferences returns all of them at once.

  • list_user_tenants

    List the tenants a user belongs to. Preferences and branding can be scoped per tenant, so this tells you which tenant-scoped settings could apply to this user at all before you go looking for them.

  • list_brands

    List the workspace's brands. A brand is the reusable logo, colors and email styling a notification template renders with; this gives you the brand IDs a template's brand reference points at.

  • get_brand

    Get one brand by ID, including its colors, logo and styling settings. Read this to describe what a template referencing this brand will actually look like.

  • courier_installation_guide

    Get the Courier SDK installation guide for one platform: the install command, a quick-start code sample and the relevant doc links. This is the answer to "how do I integrate Courier" or "how do I get started". Client-side platforms need a JWT to authenticate; each guide says so…

  • list_automations

    List the workspace's automation templates, each with its template ID and whether it has a published or draft version. Answers "what automations already exist here" — this only reads the catalog, it never runs one.

  • list_audiences

    List the workspace's audiences. An audience is a saved filter over user profiles — a dynamic segment — so this answers "who can I target" and gives you the audience IDs that journey audience triggers and send requests refer to.

  • get_audience

    Get one audience by ID, including the filter that defines its membership. Read this to explain why someone is or is not in an audience — the filter is the rule, not a stored member list. Use list_audience_members for who currently matches.

  • list_audience_members

    List the users who currently match an audience's filter. Membership is computed, so this reflects profiles as they are right now — a profile change can move someone in or out without the audience itself being edited.

  • list_lists

    List the workspace's lists. A list is an explicit, subscription-based group of users — someone is on it because they were subscribed, not because they match a rule. Optionally filter by an id pattern such as "example.list.*".

  • get_list

    Get one list by its ID, including its name and current state.

  • get_list_subscribers

    List the users subscribed to a list. Use this to confirm whether someone was actually on a list at all — a subscription here is the reason a list-addressed send reached them.

  • list_digest_instances

    List the digest instances for a digest schedule. Each instance is the events accumulated so far for one user against that schedule, so this shows what is waiting to go out and answers why a digest has not arrived yet — it is still accumulating, or it has nothing in it.

  • 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. template_id refers to an existing automation template in the workspace. 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.

  • 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").

  • list_automation_runs

    List automation runs, newest first. Filter by automation template, status, or a created_at window to find a run that stalled or errored, then read its steps with list_automation_run_steps. Journey runs are listed by list_journey_runs instead.

  • list_automation_run_steps

    List the steps of an automation run in order, with what happened at each. Send steps carry a message_id to follow with get_message.

  • 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", s…

  • 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.

  • track_inbound_event

    Track an inbound event that can trigger automations. Requires event name, messageId (for deduplication), and properties.

  • 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.

Headers

NameDescription
api_key
Required, secret
Your Courier API key

Details

Endpointhttps://mcp.courier.com (Streamable HTTP)
First published18 Jun 2026
Last updated18 Jun 2026
Registry nameio.github.trycourier/courier

More communication servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.