Courier
by courier.com in Email & messaging
Send notifications, manage templates, and configure integrations with Courier.
https://mcp.courier.com
This listing's own text contains instructions aimed at AI agents (see the security scan below). We withhold that text from agents and never recommend this service.
Last 30 days
- Uptime
- 100%
- Response time
- 600 ms typical, 630 ms slowest 5%
- Last check
- 2 h ago
- Next check
- in 4 h
How to call it
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"courier-2": {
"type": "http",
"url": "https://mcp.courier.com"
}
}
}173 tools
- 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 contr
- 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: "Em
- 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 se
- 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 nod
- 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 element
- 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.
Security scan
- Asks the agent to hide things from the user in tool:get_notification_metrics
able and that someone should be told; do NOT tell the user to check or correct their template id, which sends them to fix something that - Unusually long description in tool:get_notification_metrics
get_notification_metrics Delivery funnel for ONE notification template over time…
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 2 h ago | Passed | 200 | 626 ms |
| 11 h ago | Passed | 200 | 600 ms |
| 21 h ago | Passed | 200 | 542 ms |
| 31 h ago | Passed | 200 | 548 ms |
| 39 h ago | Passed | 200 | 635 ms |
| 2 days ago | Passed | 200 | 630 ms |
| 2 days ago | Passed | 200 | 575 ms |