Connect Courier and your agent gets 145 tools, among them add_bulk_users, add_subscribers_to_list, add_user_to_tenant. It answers at https://mcp.courier.com over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 24 October 2026, succeeded.
Send notifications, manage templates, and configure integrations with Courier.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
add_bulk_users | Add users to an existing bulk job. Inputs: job_id, users |
add_subscribers_to_list | Append subscribers to a list without removing existing subscribers. Inputs: list_id, recipients |
add_user_to_tenant | Add a user to a tenant. Inputs: user_id, tenant_id, profile |
archive_journey | Archive a journey. Archived journeys cannot be invoked but existing runs continue to completion. Inputs: journey_id |
archive_journey_template | Archive a journey-scoped notification template. Archived templates cannot be sent. Inputs: notification_id, journey_id |
archive_notification | Archive a notification template by ID. Inputs: notification_id |
archive_preference_section | Archive a preference section. The section must be empty: delete its topics first, otherwise the request fails with 409. Inputs: section_id |
archive_preference_topic | Archive a topic within a section. Inputs: section_id, topic_id |
archive_request | Archive a send request and all its associated messages by request ID. Inputs: request_id |
archive_routing_strategy | Archive a routing strategy. The strategy must not have associated notification templates; unlink all templates before archiving. Inputs: routing_strategy_id |
bulk_add_user_tenants | Add a user to multiple tenants at once. A custom profile can be supplied per tenant. Inputs: user_id, tenants |
bulk_add_user_tokens | Add multiple push/device tokens for a user in one request. Overwrites matching existing tokens. Inputs: user_id, tokens |
bulk_replace_user_preferences | Replace a user's complete set of preference overrides in one request. The topics in the body become the recipient's entire override set: listed topics are created or updated, and every existing override not included is reset to its topic de Inputs: user_id, topics, tenant_id |
bulk_subscribe_to_list | Replace all subscribers on a list with the given recipients. Inputs: list_id, recipients |
bulk_update_user_preferences | Additively create or update a user's preferences for one or more topics in a single request. Only the topics in the body are touched; existing overrides for other topics are left untouched. Partial-success: valid topics are written and retu Inputs: user_id, topics, tenant_id |
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 Inputs: cancelation_token |
cancel_journey | Cancel journey runs. Supply EXACTLY ONE of cancelation_token (cancels every run associated with the token) or run_id (cancels a single run). Cancelation is idempotent: a run that already finished or was already canceled is left unchanged. Inputs: cancelation_token, run_id |
cancel_message | Cancel a message that is currently being delivered. Returns the message details with updated status. Inputs: message_id |
cancel_notification_submission | Cancel a notification template submission. Inputs: notification_id, submission_id |
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. Inputs: platform, user_id |
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", sett Inputs: name, id, settings, snippets |
create_bulk_job | Create a new bulk job for sending messages to multiple recipients. Workflow: create_bulk_job → add_bulk_users → run_bulk_job. Inputs: message |
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 Inputs: name, nodes, enabled, state |
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 chan Inputs: journey_id, channel, notification, provider_key, state |
create_list | Create or update a list by list ID. Inputs: list_id, name |
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 n Inputs: notification, state |
create_or_merge_user | Create a new user profile or merge supplied values into an existing profile (POST). Existing fields not included are preserved. Inputs: user_id, profile |
create_or_replace_user_push_token | Create or replace a push/device token for a user. Inputs: user_id, token, provider_key, device |
create_or_update_tenant | Create or replace a tenant. Tenants represent organizations or groups that users belong to. Inputs: tenant_id, name, parent_tenant_id, default_preferences, properties, user_profile |
create_preference_section | Create a preference section in your workspace. The section id is generated and returned. Add topics afterwards with create_preference_topic. Inputs: name, routing_options, has_custom_routing |
create_preference_topic | Create a subscription preference topic inside a section. The topic id is generated and returned. Fails with 404 if the section does not exist. Inputs: section_id, name, default_status, routing_options, allowed_preferences, include_unsubscribe_header |
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_catalo Inputs: provider, title, alias, settings |
create_routing_strategy | Create a routing strategy defining how notifications are delivered across channels and providers. Inputs: name, routing, channels, providers, description, tags |
delete_audience | Delete an audience by its ID. Inputs: audience_id |
delete_brand | Delete a brand by its ID. Inputs: brand_id |
delete_list | Delete a list by its ID. Inputs: list_id |
delete_profile | Delete a user profile permanently. Inputs: user_id |
delete_provider | Delete a provider configuration. Returns 409 if the provider is still referenced by routing or notifications. Inputs: provider_id |
delete_tenant | Delete a tenant by its ID. Inputs: tenant_id |
delete_tenant_preference | Remove default notification preference for a topic from a tenant. Inputs: tenant_id, topic_id |
delete_tenant_template, delete_user_list_subscriptions, delete_user_preference_topic, delete_user_token, generate_jwt_for_user, get_audience, get_audit_event, get_brand, get_bulk_job, get_journey, get_journey_template, get_journey_template_content, get_list, get_list_subscribers, get_message, get_message_content, get_message_history, get_notification, get_notification_content, get_notification_draft_content, get_notification_metrics, get_preference_section, get_preference_topic, get_provider, get_routing_strategy, get_tenant, get_tenant_template, get_tenant_template_version, get_translation, get_user_list_subscriptions, get_user_preference_topic, get_user_preferences, get_user_profile_by_id, get_user_push_token, invoke_ad_hoc_automation, invoke_automation_template, invoke_journey, list_audience_members, list_audiences, list_audit_events, list_automations, list_brands, list_bulk_users, list_digest_instances, list_journey_template_versions, list_journey_templates, list_journey_versions, list_journeys, list_lists, list_messages, list_notification_checks, list_notification_versions, list_notifications, list_preference_sections, list_preference_topics, list_provider_catalog, list_providers, list_routing_strategies, list_routing_strategy_notifications, list_tenant_templates, list_tenant_users, list_tenants, list_user_push_tokens, list_user_tenants, patch_profile, patch_user_token, publish_journey, publish_journey_template, publish_notification, publish_preferences, publish_tenant_template, put_journey_template_content, put_journey_template_locale, put_notification_content, put_notification_element, put_notification_locale, release_digest, remove_all_user_tenants, remove_user_from_tenant, replace_journey, replace_journey_template, replace_notification, replace_preference_section, replace_preference_topic, replace_profile, replace_routing_strategy, replace_tenant_template, resend_message, restore_list, run_bulk_job, send_message, send_message_template, send_message_to_list, send_message_to_list_template, subscribe_user_to_list, subscribe_user_to_lists, track_inbound_event, unsubscribe_user_from_list, update_audience, update_brand, update_notification_checks, update_provider, update_tenant_preference, update_translation, update_user_preference_topic
Every block below points at https://mcp.courier.com. Pick your client and copy.
claude mcp add --transport http courier https://mcp.courier.com
{
"mcpServers": {
"courier": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.courier.com"]
}
}
}{
"mcpServers": {
"courier": {
"url": "https://mcp.courier.com"
}
}
}{
"servers": {
"courier": {
"type": "http",
"url": "https://mcp.courier.com"
}
}
}{
"context_servers": {
"courier": {
"url": "https://mcp.courier.com"
}
}
}{
"mcpServers": {
"courier": {
"serverUrl": "https://mcp.courier.com"
}
}
}{
"mcpServers": {
"courier": {
"url": "https://mcp.courier.com"
}
}
}name: Courier
version: 0.0.1
schema: v1
mcpServers:
- name: Courier
type: streamable-http
url: https://mcp.courier.com{
"mcpServers": {
"courier": {
"httpUrl": "https://mcp.courier.com"
}
}
}{
"mcpServers": {
"courier": {
"type": "http",
"url": "https://mcp.courier.com"
}
}
}{
"mcpServers": {
"courier": {
"url": "https://mcp.courier.com"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.courier.com&type=streamable_http&id=courier&name=Courier
It answered our last check on 24 October 2026 in 493 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
145, as returned by the server's own tools/list on 22 September 2026: add_bulk_users, add_subscribers_to_list, add_user_to_tenant, archive_journey, archive_journey_template, archive_notification, archive_preference_section, archive_preference_topic, and 137 more.
It answered our last check on 24 October 2026 in 493 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.courier.com. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.trycourier. Endpoint host: mcp.courier.com. ARD identifier: urn:air:io.github.trycourier:mcp:courier.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.