> ## Documentation Index
> Fetch the complete documentation index at: https://www.courier.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Install the Courier skill before writing code: `npx skills add trycourier/courier-skills`. It carries the verified SDK shapes and the rules you cannot get wrong.
> Authenticate every request with `Authorization: Bearer <API_KEY>`. A workspace has several environments and each has its own keys, which are plain `pk_` strings with no environment prefix. Start with Test.
> Send with `client.send.message`, the default import of the v7 Node SDK. Reference a template by its `nt_` id or its alias.
> A send accepts a bare Elemental element list, but storing content on a template requires the top-level elements wrapped in a channel element.
> Templates and journeys can be built in the Courier app or created through the API. Either way they live in the workspace and are referenced by ID when you send.
> The hosted MCP server is https://mcp.courier.com. For a briefing on what Courier is and when to use it, read https://www.courier.com/llms.txt.
> Prefer the Guides tab for how-do-I questions and the Docs tab for how-does-it-behave questions. The API reference lives under /api-reference.

# Courier MCP tools

> Every tool the MCP server exposes, grouped by resource, with write operations marked.

export const Doc = ({href, children, name, bare}) => {
  const label = children || name || href;
  if (bare) {
    return <a href={href}>{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="doc" href={href}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">DOC</span>
    </a>;
};

The server exposes 161 tools. <Doc href="/docs/resources/mcp">Install it</Doc> first.

**Write** marks a tool that changes workspace state. Everything unmarked is a read. A client
that shows tool descriptions is showing these same strings, because both come from the
server's own registry.

## Send

| Tool                            | What it does                                                                     | Write |
| ------------------------------- | -------------------------------------------------------------------------------- | ----- |
| `send_message`                  | Send a message to a user using inline title and body content (no template).      | Yes   |
| `send_message_template`         | Send a message to a user using a published notification template.                | Yes   |
| `send_message_to_list`          | Send a message to all subscribers of a list using inline title and body content. | Yes   |
| `send_message_to_list_template` | Send a message to all subscribers of a list using a notification template.       | Yes   |

## Messages

| Tool                  | What it does                                                                                                       | Write |
| --------------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |
| `list_messages`       | List messages you've previously sent.                                                                              |       |
| `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.                                                                | Yes   |
| `resend_message`      | Resend a previously sent message.                                                                                  | Yes   |
| `trace_message`       | Trace delivery in one call.                                                                                        |       |

## Profiles

| Tool                             | What it does                                                                        | Write |
| -------------------------------- | ----------------------------------------------------------------------------------- | ----- |
| `get_user_profile_by_id`         | Get a user profile by their ID.                                                     |       |
| `create_or_merge_user`           | Create a new user profile or merge supplied values into an existing profile (POST). | Yes   |
| `replace_profile`                | Fully replace a user profile (PUT).                                                 | Yes   |
| `patch_profile`                  | Partially update a user profile via JSON Patch (RFC 6902).                          | Yes   |
| `delete_profile`                 | Delete a user profile permanently.The user ID to delete.                            | Yes   |
| `get_user_list_subscriptions`    | Get all list subscriptions for a user.Pagination cursor.                            |       |
| `subscribe_user_to_lists`        | Subscribe a user to one or more lists.                                              | Yes   |
| `delete_user_list_subscriptions` | Delete all list subscriptions for a user.                                           | Yes   |

## Lists

| Tool                         | What it does                                                        | Write |
| ---------------------------- | ------------------------------------------------------------------- | ----- |
| `list_lists`                 | Get all lists.                                                      |       |
| `get_list`                   | Get a list by its ID.                                               |       |
| `get_list_subscribers`       | Get all subscribers of a list.Pagination cursor.                    |       |
| `create_list`                | Create or update a list by list ID.Display name for the list.       | Yes   |
| `subscribe_user_to_list`     | Subscribe a user to a list.                                         | Yes   |
| `unsubscribe_user_from_list` | Unsubscribe a user from a list.The user ID to unsubscribe.          | Yes   |
| `delete_list`                | Delete a list by its ID.                                            | Yes   |
| `restore_list`               | Restore a previously deleted list.                                  | Yes   |
| `bulk_subscribe_to_list`     | Replace all subscribers on a list with the given recipients.        | Yes   |
| `add_subscribers_to_list`    | Append subscribers to a list without removing existing subscribers. | Yes   |

## Audiences

| Tool                    | What it does                                                | Write |
| ----------------------- | ----------------------------------------------------------- | ----- |
| `get_audience`          | Get an audience by its ID, including its filter definition. |       |
| `list_audience_members` | List all members of an audience.Pagination cursor.          |       |
| `list_audiences`        | List all audiences in the workspace.Pagination cursor.      |       |
| `update_audience`       | Create or update an audience with a filter definition.      | Yes   |
| `delete_audience`       | Delete an audience by its ID.The audience ID to delete.     | Yes   |

## Notification templates

| Tool                             | What it does                                                                   | Write |
| -------------------------------- | ------------------------------------------------------------------------------ | ----- |
| `list_notifications`             | List notification templates.                                                   |       |
| `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.                                             | Yes   |
| `get_notification`               | Retrieve a notification template by ID.                                        |       |
| `replace_notification`           | Replace a notification template entirely (full document PUT).                  | Yes   |
| `archive_notification`           | Archive a notification template by ID.The notification template ID to archive. | Yes   |
| `list_notification_versions`     | List version history for a notification template.                              |       |
| `publish_notification`           | Publish a notification template, making it available for sending.              | Yes   |
| `list_notification_checks`       | List checks for a notification submission.                                     |       |
| `update_notification_checks`     | Update check statuses for a notification submission.                           | Yes   |
| `put_notification_content`       | Replace the elemental content of a V2 notification template.                   | Yes   |
| `put_notification_element`       | Update a single element within a V2 notification template.                     | Yes   |
| `put_notification_locale`        | Set locale-specific content overrides for a V2 notification template.          | Yes   |
| `cancel_notification_submission` | Cancel a notification template submission.                                     | Yes   |

## Brands

| Tool           | What it does                                        | Write |
| -------------- | --------------------------------------------------- | ----- |
| `create_brand` | Create a new brand.                                 | Yes   |
| `get_brand`    | Get a brand by its ID.                              |       |
| `list_brands`  | List all brands in the workspace.Pagination cursor. |       |
| `update_brand` | Replace an existing brand with new values.          | Yes   |
| `delete_brand` | Delete a brand by its ID.The brand ID to delete.    | Yes   |

## Auth

| Tool                    | What it does                                    | Write |
| ----------------------- | ----------------------------------------------- | ----- |
| `generate_jwt_for_user` | Generate a JWT authentication token for a user. | Yes   |

## Device tokens

| Tool                                | What it does                                                            | Write |
| ----------------------------------- | ----------------------------------------------------------------------- | ----- |
| `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.                       | Yes   |
| `bulk_add_user_tokens`              | Add multiple push/device tokens for a user in one request.              | Yes   |
| `patch_user_token`                  | Apply a JSON Patch (RFC 6902) to a specific push token.                 | Yes   |
| `delete_user_token`                 | Delete a specific push token for a user.The token identifier to delete. | Yes   |

## Bulk

| Tool              | What it does                                                       | Write |
| ----------------- | ------------------------------------------------------------------ | ----- |
| `create_bulk_job` | Create a new bulk job for sending messages to multiple recipients. | Yes   |
| `add_bulk_users`  | Add users to an existing bulk job.Array of user objects to add.    | Yes   |
| `run_bulk_job`    | Run a bulk job, triggering delivery to all added users.            | Yes   |
| `get_bulk_job`    | Get the status of a bulk job.                                      |       |
| `list_bulk_users` | List the users in a bulk job.Pagination cursor.                    |       |

## Tenants

| Tool                          | What it does                                                                       | Write |
| ----------------------------- | ---------------------------------------------------------------------------------- | ----- |
| `get_tenant`                  | Get a tenant by its ID.                                                            |       |
| `create_or_update_tenant`     | Create or replace a tenant.                                                        | Yes   |
| `list_tenants`                | List all tenants in the workspace.Pagination cursor.                               |       |
| `delete_tenant`               | Delete a tenant by its ID.The tenant ID to delete.                                 | Yes   |
| `list_tenant_users`           | List users associated with a tenant.Pagination cursor.                             |       |
| `update_tenant_preference`    | Set the default notification preference for a subscription topic on a tenant.      | Yes   |
| `delete_tenant_preference`    | Remove default notification preference for a topic from a tenant.                  | Yes   |
| `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). | Yes   |
| `publish_tenant_template`     | Publish a version of a tenant notification template.                               | Yes   |
| `get_tenant_template_version` | Get a specific version of a tenant notification template (e.g.                     |       |
| `delete_tenant_template`      | Delete a tenant notification template.                                             | Yes   |

## Users

| Tool                            | What it does                                                                                                | Write |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----- |
| `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). | Yes   |
| `delete_user_preference_topic`  | Delete a user's preference for a specific subscription topic, reverting it to the topic's default status.   | Yes   |
| `list_user_tenants`             | List all tenants a user belongs to.Pagination cursor.                                                       |       |
| `add_user_to_tenant`            | Add a user to a tenant.Tenant-scoped profile overrides.                                                     | Yes   |
| `remove_user_from_tenant`       | Remove a user from a tenant.                                                                                | Yes   |
| `bulk_add_user_tenants`         | Add a user to multiple tenants at once.                                                                     | Yes   |
| `remove_all_user_tenants`       | Remove a user from all tenants.                                                                             | Yes   |
| `bulk_update_user_preferences`  | Additively create or update a user's preferences for one or more topics in a single request.                | Yes   |
| `bulk_replace_user_preferences` | Replace a user's complete set of preference overrides in one request.                                       | Yes   |

`update_user_preference_topic` takes `tenant_id` to write the preference in one tenant's context, and `digest_schedule_id` to move the user onto another of the topic's digest schedules.

## Routing strategies

| Tool                                  | What it does                                                                                      | Write |
| ------------------------------------- | ------------------------------------------------------------------------------------------------- | ----- |
| `create_routing_strategy`             | Create a routing strategy defining how notifications are delivered across channels and providers. | Yes   |
| `get_routing_strategy`                | Retrieve a routing strategy by ID.                                                                |       |
| `replace_routing_strategy`            | Replace a routing strategy.                                                                       | Yes   |
| `archive_routing_strategy`            | Archive a routing strategy.                                                                       | Yes   |
| `list_routing_strategies`             | List routing strategies in the workspace.                                                         |       |
| `list_routing_strategy_notifications` | List notification templates associated with a routing strategy.                                   |       |

## Journeys

| Tool                             | What it does                                                                                  | Write |
| -------------------------------- | --------------------------------------------------------------------------------------------- | ----- |
| `list_journeys`                  | List journey templates in the workspace, returning the journey IDs and version state of each. |       |
| `invoke_journey`                 | Invoke a journey run from a journey template.                                                 | Yes   |
| `create_journey`                 | Create a new journey.                                                                         | Yes   |
| `get_journey`                    | Get a journey by ID.                                                                          |       |
| `replace_journey`                | Replace (update) a journey draft.                                                             | Yes   |
| `publish_journey`                | Publish the current draft of a journey, making it live and invokable.                         | Yes   |
| `archive_journey`                | Archive a journey.                                                                            | Yes   |
| `list_journey_versions`          | List published versions of a journey, ordered most recent first.                              |       |
| `list_journey_templates`         | List notification templates scoped to a journey.                                              |       |
| `create_journey_template`        | Create a notification template scoped to a journey, as a draft.                               | Yes   |
| `get_journey_template`           | Get a journey-scoped notification template by notification ID.                                |       |
| `replace_journey_template`       | Replace the draft of a journey-scoped notification template.                                  | Yes   |
| `archive_journey_template`       | Archive a journey-scoped notification template.                                               | Yes   |
| `publish_journey_template`       | Publish the current draft of a journey-scoped notification template.                          | Yes   |
| `list_journey_template_versions` | List published versions of a journey-scoped notification template, ordered most recent first. |       |
| `get_journey_template_content`   | Fetch the elemental content of a journey-scoped notification template.                        |       |
| `put_journey_template_content`   | Replace the elemental content of a journey-scoped notification template.                      | Yes   |
| `put_journey_template_locale`    | Set locale-specific content overrides for a journey-scoped notification template.             | Yes   |
| `cancel_journey`                 | Cancel journey runs.                                                                          | Yes   |
| `list_journey_runs`              | List journey runs, newest first.                                                              |       |
| `get_journey_run`                | Get one journey run by id: its journey, status, and timestamps.                               |       |
| `list_journey_run_steps`         | List the steps of a journey run in order, with each node and what happened at it.             |       |

## Broadcasts

| Tool                        | What it does                                                                     | Write |
| --------------------------- | -------------------------------------------------------------------------------- | ----- |
| `list_broadcasts`           | List broadcasts in the workspace.                                                |       |
| `create_broadcast`          | Create a broadcast: a one-off message to a list or audience on a single channel. | Yes   |
| `get_broadcast`             | Get a broadcast by id, including its channel and send or schedule state.         |       |
| `rename_broadcast`          | Rename a broadcast.                                                              | Yes   |
| `delete_broadcast`          | Delete a broadcast.                                                              | Yes   |
| `get_broadcast_content`     | Get a broadcast's Elemental content.                                             |       |
| `put_broadcast_content`     | Replace a broadcast's content with an Elemental document.                        | Yes   |
| `send_broadcast`            | Send a broadcast now to every member of a list or audience.                      | Yes   |
| `schedule_broadcast`        | Schedule a broadcast to send later to a list or audience.                        | Yes   |
| `cancel_broadcast_schedule` | Cancel a broadcast's scheduled send.                                             | Yes   |
| `duplicate_broadcast`       | Copy a broadcast into a new draft.                                               | Yes   |

## Requests

| Tool              | What it does                                                          | Write |
| ----------------- | --------------------------------------------------------------------- | ----- |
| `archive_request` | Archive a send request and all its associated messages by request ID. | Yes   |

## Providers

| Tool                    | What it does                                                                     | Write |
| ----------------------- | -------------------------------------------------------------------------------- | ----- |
| `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.                               | Yes   |
| `update_provider`       | Replace an existing provider configuration.                                      | Yes   |
| `delete_provider`       | Delete a provider configuration.                                                 | Yes   |

## Translations

| Tool                 | What it does                                          | Write |
| -------------------- | ----------------------------------------------------- | ----- |
| `get_translation`    | Get a translation for a specific locale (e.g.         |       |
| `update_translation` | Create or update a translation for a specific locale. | Yes   |

## Inbound

| Tool                  | What it does                                         | Write |
| --------------------- | ---------------------------------------------------- | ----- |
| `track_inbound_event` | Track an inbound event that can trigger automations. | Yes   |

## Audit events

| Tool                | What it does                                             | Write |
| ------------------- | -------------------------------------------------------- | ----- |
| `get_audit_event`   | Get a specific audit event by its ID.The audit event ID. |       |
| `list_audit_events` | List audit events in the workspace.                      |       |

## Preferences

| Tool                         | What it does                                                          | Write |
| ---------------------------- | --------------------------------------------------------------------- | ----- |
| `list_preference_sections`   | List the workspace's preference sections.                             |       |
| `create_preference_section`  | Create a preference section in your workspace.                        | Yes   |
| `get_preference_section`     | Retrieve a preference section by id, including its topics.            |       |
| `replace_preference_section` | Replace a preference section.                                         | Yes   |
| `archive_preference_section` | Archive a preference section.                                         | Yes   |
| `publish_preferences`        | Publish the workspace's preferences page.                             | Yes   |
| `list_preference_topics`     | List the topics in a preference section.Id of the preference section. |       |
| `create_preference_topic`    | Create a subscription preference topic inside a section.              | Yes   |
| `get_preference_topic`       | Retrieve a topic within a section.                                    |       |
| `replace_preference_topic`   | Replace a topic within a section.                                     | Yes   |
| `archive_preference_topic`   | Archive a topic within a section.Id of the preference section.        | Yes   |

`create_preference_topic` and `replace_preference_topic` take a `digest` object: its template, schedules, and categories. Leaving `digest` out of a replace keeps the topic's digest, and `null` turns it off.

## Digests

| Tool                    | What it does                                                                                                          | Write |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ----- |
| `release_digest`        | Release a digest schedule early, send what users have collected so far now instead of waiting for the scheduled time. | Yes   |
| `list_digest_instances` | List the digest instances for a schedule.                                                                             |       |
| `release_user_digest`   | Release one recipient's held digest for a topic now, instead of waiting for its schedule.                             | Yes   |

## Docs

| Tool                         | What it does                                                    | Write |
| ---------------------------- | --------------------------------------------------------------- | ----- |
| `courier_installation_guide` | Get the Courier SDK installation guide for a specific platform. |       |

## Diagnostics

| Tool                     | What it does                                                                          | Write |
| ------------------------ | ------------------------------------------------------------------------------------- | ----- |
| `get_environment_config` | Check which Courier API key, base URL, and package version this MCP session is using. |       |
