MCP serverio.github.trycourier/courier
Send notifications, manage templates, and configure integrations with Courier.
Overview
Score?
UNRATED 0.672
of what a free look can see, on 30 looks
Looks
35
last 15 hr ago
Tools
173
changed 5 days ago
More info
URL
mcp.courier.com/
streamable-http
Says it is
@trycourier/courier-mcp 1.3.7
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.672 · highest on record 0.8561
Toolsfrom sha256:871da2e446…5a0140 · +3 −0 5 days ago
| Tool | Schema |
|---|---|
| add_bulk_users Add users to an existing bulk job. |
input · no output |
| add_subscribers_to_list Append subscribers to a list without removing existing subscribers. |
input · no output |
| add_user_to_tenant Add a user to a tenant. |
input · no output |
| archive_journey Archive a journey. Archived journeys cannot be invoked but existing runs continue to completion. |
input · no output |
| archive_journey_template Archive a journey-scoped notification template. Archived templates cannot be sent. |
input · no output |
| archive_notification Archive a notification template by ID. |
input · no output |
| archive_preference_section Archive a preference section. The section must be empty: delete its topics first, otherwise the request fails with 409. |
input · no output |
| archive_preference_topic Archive a topic within a section. |
input · no output |
| archive_preview_device_set Archive a preview device set. Runs that used it keep their own copy of its devices. The Courier Recommended set cannot be archived. |
input · no output |
| archive_request Archive a send request and all its associated messages by request ID. |
input · no output |
| archive_routing_strategy Archive a routing strategy. The strategy must not have associated notification templates; unlink all templates before archiving. |
input · no output |
| bulk_add_user_tenants Add a user to multiple tenants at once. A custom profile can be supplied per tenant. |
input · no output |
| bulk_add_user_tokens Add multiple push/device tokens for a user in one request. Overwrites matching existing tokens. |
input · no output |
| 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 e |
input · no output |
| bulk_subscribe_to_list Replace all subscribers on a list with the given recipients. |
input · no output |
| 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 u |
input · no output |
| 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 ori |
input · no output |
| cancel_broadcast_schedule Cancel a broadcast's scheduled send. The broadcast itself is kept. |
input · no output |
| 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 a |
input · no output |
| cancel_message Cancel a message that is currently being delivered. Returns the message details with updated status. |
input · no output |
| cancel_notification_submission Cancel a notification template submission. |
input · no output |
| 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 Courie |
input · no output |
| 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 (bl |
input · no output |
| create_broadcast Create a broadcast: a one-off message to a list or audience on a single channel. It starts as a draft with no content; add content with put_broadcast_content, then send_broadcast o |
input · no output |
| create_bulk_job Create a new bulk job for sending messages to multiple recipients. Workflow: create_bulk_job → add_bulk_users → run_bulk_job. |
input · no output |
| 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 — |
input · no output |
| 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 jo |
input · no output |
| create_list Create or update a list by list ID. |
input · no output |
| 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 |
input · no output |
| create_or_merge_user Create a new user profile or merge supplied values into an existing profile (POST). Existing fields not included are preserved. |
input · no output |
| create_or_replace_user_push_token Create or replace a push/device token for a user. |
input · no output |
| create_or_update_tenant Create or replace a tenant. Tenants represent organizations or groups that users belong to. |
input · no output |
| create_preference_section Create a preference section in your workspace. The section id is generated and returned. Add topics afterwards with create_preference_topic. |
input · no output |
| 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. |
input · no output |
| create_preview_device_set Create a named, reusable set of preview devices. |
input · no output |
| create_preview_run Render a template's email on real email clients and capture screenshots. Pass exactly one of device_set_id or device_ids. Each run is billed to the workspace's previews add-on. The |
input · no output |
| 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—co |
input · no output |
| create_routing_strategy Create a routing strategy defining how notifications are delivered across channels and providers. |
input · no output |
| delete_audience Delete an audience by its ID. |
input · no output |
| delete_brand Delete a brand by its ID. |
input · no output |
| delete_broadcast Delete a broadcast. |
input · no output |
| delete_list Delete a list by its ID. |
input · no output |
| delete_profile Delete a user profile permanently. |
input · no output |
| delete_provider Delete a provider configuration. Returns 409 if the provider is still referenced by routing or notifications. |
input · no output |
| delete_tenant Delete a tenant by its ID. |
input · no output |
| delete_tenant_preference Remove default notification preference for a topic from a tenant. |
input · no output |
| delete_tenant_template Delete a tenant notification template. Returns 204 on success, 404 if the template does not exist for this tenant. |
input · no output |
| delete_user_list_subscriptions Delete all list subscriptions for a user. |
input · no output |
| delete_user_preference_topic Delete a user's preference for a specific subscription topic, reverting it to the topic's default status. |
input · no output |
| delete_user_token Delete a specific push token for a user. |
input · no output |
| duplicate_broadcast Copy a broadcast into a new draft. The original is left unchanged. |
input · no output |
| generate_jwt_for_user Generate a JWT authentication token for a user. Used for client-side SDK auth (Inbox, Preferences, etc.). |
input · no output |
| 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 |
input · no output |
| get_audit_event Get a specific audit event by its ID. |
input · no output |
| 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. |
input · no output |
| get_broadcast Get a broadcast by id, including its channel and send or schedule state. |
input · no output |
| get_broadcast_content Get a broadcast's Elemental content. |
input · no output |
| get_bulk_job Get the status of a bulk job. |
input · no output |
| 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. |
input · no output |
| get_journey_run Get one journey run by id: its journey, status, and timestamps. |
input · no output |
| 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 publi |
input · no output |
| 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. |
input · no output |
| get_list Get one list by its ID, including its name and current state. |
input · no output |
| 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. |
input · no output |
| get_message Get the full details and status of a single message by its ID. |
input · no output |
| get_message_content Get the rendered content (HTML, text, subject) of a previously sent message. |
input · no output |
| get_message_history Get the event history for a message, showing each step in the delivery pipeline (enqueued, sent, delivered, etc.). |
input · no output |
| get_notification Retrieve a notification template by ID. Optionally request draft, published, or a version such as v001. |
input · no output |
| get_notification_content Get the published content blocks of a notification template. |
input · no output |
| get_notification_draft_content Get the draft (unpublished) content blocks of a notification template. |
input · no output |
| 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 |
input · no output |
| 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 |
input · no output |
| 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 |
input · no output |
| get_preview_device_set Get a preview device set by id. |
input · no output |
| get_preview_run Get a preview run with its per-device results and screenshot URLs. Poll until status is COMPLETED or FAILED. The URLs are short-lived and re-signed on every read, so fetch them rat |
input · no output |
| get_provider Fetch a single provider configuration by ID. |
input · no output |
| get_routing_strategy Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers. |
input · no output |
| get_tenant Get a tenant by its ID. |
input · no output |
| get_tenant_template Get a tenant notification template association by template ID. |
input · no output |
| get_tenant_template_version Get a specific version of a tenant notification template (e.g. latest, published, or v1). |
input · no output |
| get_translation Get a translation for a specific locale (e.g. "en_US", "fr_FR"). |
input · no output |
| 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 abs |
input · no output |
| 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_preferenc |
input · no output |
| get_user_preferences Get a user's notification preferences (subscriptions, opt-outs, channel preferences). |
input · no output |
| get_user_profile_by_id Get a user profile by their ID. Returns profile data including email, phone, and custom properties. |
input · no output |
| get_user_push_token Get a specific push/device token for a user. |
input · no output |
| 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, us |
input · no output |
| 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", re |
input · no output |
| invoke_journey Invoke a journey run from a journey template. template_id refers to an existing journey template in the workspace. Example: { template_id: "j-onboarding", user_id: "user-123", data |
input · no output |
| 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 witho |
input · no output |
| 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 journe |
input · no output |
| list_audit_events List audit events in the workspace. Useful for tracking API usage and changes. |
input · no output |
| list_automation_run_steps added 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. |
input · no output |
| list_automation_runs added 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_ru |
input · no output |
| 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 read |
input · no output |
| 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 |
input · no output |
| list_broadcasts List broadcasts in the workspace. |
input · no output |
| list_bulk_users List the users in a bulk job. |
input · no output |
| 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 answ |
input · no output |
| list_journey_run_steps List the steps of a journey run in order, with each node and what happened at it. This is how to see where a run stopped and why. |
input · no output |
| list_journey_runs List journey runs, newest first. Filter by journey, status, or a created_at window to find a run that stalled or errored, then read its steps with list_journey_run_steps. |
input · no output |
| list_journey_template_versions List published versions of a journey-scoped notification template, ordered most recent first. |
input · no output |
| 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 s |
input · no output |
| list_journey_versions List published versions of a journey, ordered most recent first. |
input · no output |
| list_journeys List journey templates in the workspace, returning the journey IDs and version state of each. Optionally filter by version (published or draft). |
input · no output |
| 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 filt |
input · no output |
| list_messages List messages you've previously sent. Filter by status, recipient, notification, provider, tags, or tenant. |
input · no output |
| 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 |
input · no output |
| 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_noti |
input · no output |
| 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. |
input · no output |
| list_preference_logs added List preference changes, newest first. Each entry is one change a user made to one subscription topic, with the value before it where there was one. Pass user_id to answer "when di |
input · no output |
| 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 wha |
input · no output |
| 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. |
input · no output |
| list_preview_device_sets List saved preview device sets. Every workspace has a read-only Courier Recommended set that runs can use without creating a set first. |
input · no output |
| list_preview_devices List the email clients a preview can render on. Each device has a pvd_ id, a display name, and fields to filter by: category, app, platform, os, os_version and theme. Use these ids |
input · no output |
| list_preview_runs List a template's preview runs, newest first. |
input · no output |
| 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 |
input · no output |
| list_providers List configured provider integrations for the workspace. |
input · no output |
| 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 |
input · no output |
| list_routing_strategy_notifications List notification templates associated with a routing strategy. Useful for checking linked templates before archiving. |
input · no output |
| list_tenant_templates List notification templates configured for a tenant. |
input · no output |
| 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. |
input · no output |
| 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 yo |
input · no output |
| list_user_push_tokens List all push/device tokens for a user. |
input · no output |
| 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 |
input · no output |
| patch_profile Partially update a user profile via JSON Patch (RFC 6902). Use add/replace/remove operations on specific profile paths. |
input · no output |
| patch_user_token Apply a JSON Patch (RFC 6902) to a specific push token. |
input · no output |
| 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 i |
input · no output |
| publish_journey_template Publish the current draft of a journey-scoped notification template. Optionally pass version to roll back to a prior version. |
input · no output |
| 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 |
input · no output |
| publish_preferences Publish the workspace's preferences page. Takes a snapshot of every section with its topics under a new published version, making the current state visible on the hosted preference |
input · no output |
| publish_tenant_template Publish a version of a tenant notification template. |
input · no output |
| put_broadcast_content Replace a broadcast's content with an Elemental document. Saved as a draft unless state is PUBLISHED. |
input · no output |
| 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 per |
input · no output |
| 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; ma |
input · no output |
| 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: "c |
input · no output |
| 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. |
input · no output |
| 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 |
input · no output |
| release_digest Release a digest schedule early — send what users have collected so far now instead of waiting for the scheduled time. A 204 is also returned when the schedule has no in-progress i |
input · no output |
| release_user_digest Release one recipient's held digest for a topic now, instead of waiting for its schedule. Use it to preview a digest, or to let a user flush their own, without releasing everyone e |
input · no output |
| remove_all_user_tenants Remove a user from all tenants. |
input · no output |
| remove_user_from_tenant Remove a user from a tenant. |
input · no output |
| rename_broadcast Rename a broadcast. Content and channel are unchanged. |
input · no output |
| 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 d |
input · no output |
| replace_journey_template Replace the draft of a journey-scoped notification template. Full document replacement. Call publish_journey_template afterwards to make it live. |
input · no output |
| 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. |
input · no output |
| replace_preference_section Replace a preference section. Full document replacement; missing optional fields are cleared. Topics attached to the section are unaffected. |
input · no output |
| replace_preference_topic Replace a topic within a section. Full document replacement: omitted optional fields are cleared, except `digest`, which is left untouched when omitted. Pass `digest: null` to turn |
input · no output |
| replace_preview_device_set Replace a preview device set's name and devices. This is a full replace, so send every device the set should keep. The Courier Recommended set cannot be changed. |
input · no output |
| replace_profile Fully replace a user profile (PUT). All existing data is overwritten; include every field you want to keep. |
input · no output |
| replace_routing_strategy Replace a routing strategy. Full document replacement; missing optional fields are cleared. |
input · no output |
| replace_tenant_template Create or replace a tenant notification template (draft unless published is true). |
input · no output |
| resend_message Resend a previously sent message. Loads the original send request and enqueues a brand-new send to the same recipient with the same content, producing a new messageId; the original |
input · no output |
| restore_list Restore a previously deleted list. |
input · no output |
| run_bulk_job Run a bulk job, triggering delivery to all added users. |
input · no output |
| schedule_broadcast Schedule a broadcast to send later to a list or audience. Cancel with cancel_broadcast_schedule. |
input · no output |
| send_broadcast Send a broadcast now to every member of a list or audience. This delivers real messages. |
input · no output |
| send_message Send a message to a user using inline title and body content (no template). Optionally specify routing channels. API reference: https://www.courier.com/docs/api-reference/send/send |
input · no output |
| send_message_template Send a message to a user using a published notification template. Only published templates can be sent; publishing a draft is a separate operation. Example: { user_id: "user-123", |
input · no output |
| send_message_to_list Send a message to all subscribers of a list using inline title and body content. API reference: https://www.courier.com/docs/api-reference/send/send-a-message. |
input · no output |
| send_message_to_list_template Send a message to all subscribers of a list using a notification template. |
input · no output |
| subscribe_user_to_list Subscribe a user to a list. Creates the list if it doesn't exist. |
input · no output |
| subscribe_user_to_lists Subscribe a user to one or more lists. Creates lists that do not exist. |
input · no output |
| trace_message Trace delivery in one call. Give EXACTLY ONE of message_id (a single message) or trace_id (the metadata.trace_id set on a send, which can span several messages). Returns each match |
input · no output |
| track_inbound_event Track an inbound event that can trigger automations. Requires event name, messageId (for deduplication), and properties. |
input · no output |
| unsubscribe_user_from_list Unsubscribe a user from a list. |
input · no output |
| update_audience Create or update an audience with a filter definition. |
input · no output |
| update_brand Replace an existing brand with new values. |
input · no output |
| update_notification_checks Update check statuses for a notification submission. |
input · no output |
| 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 a |
input · no output |
| 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 A |
input · no output |
| update_translation Create or update a translation for a specific locale. API reference: https://www.courier.com/docs/api-reference/translations/update-translations-by-locale. |
input · no output |
| update_user_preference_topic Update a user's preference for a specific subscription topic (opt in, opt out, or set channel preferences). |
input · no output |
Verify it yourself
npx teppi-check https://mcp.courier.comcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2NMV9MQSXQ73262980DQ