Courier
REMOTE · MCP.COURIER.COM · SCANNED AUG 3
Send notifications, manage templates, and configure integrations with Courier.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_audience). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 10121 tokens (~70/item across 144 items; 144 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mcp.courier.com
claude mcp add --transport http trycourier-courier https://mcp.courier.com/
[mcp_servers.trycourier-courier] url = "https://mcp.courier.com/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"trycourier-courier": {
"type": "remote",
"url": "https://mcp.courier.com/",
"enabled": true
}
}
} openclaw mcp add trycourier-courier --url https://mcp.courier.com/ --transport streamable-http
mcp_servers:
trycourier-courier:
url: "https://mcp.courier.com/" {
"mcpServers": {
"trycourier-courier": {
"type": "http",
"url": "https://mcp.courier.com/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://mcp.courier.com
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.courier.com | CN=WE1,O=Google Trust Services,C=US | 11 Jun 2026 | 9 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | 634e69f13e12e0100ee909f741870a8b |
| SANs: mcp.courier.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC insecure
Validation of mcp.courier.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| courier.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=15552000; includeSubDomains |
| content-security-policy | default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | no-referrer |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.courier.com | Verified | 200 | |
| http (plaintext) | http://mcp.courier.com | HTTPS enforced | 301 | https://mcp.courier.com/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_journey_template ~95
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.
| Name | Type | Req | Description |
|---|---|---|---|
| journey_id | string | yes | The journey template ID that owns this notification |
| notification_id | string | yes | The notification template ID |
| version | string | — | Version to retrieve: "draft", "published" (default), or "vN" |
No output schema declared.
No examples provided.
get_journey_template_content ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| journey_id | string | yes | The journey template ID that owns this notification |
| notification_id | string | yes | The notification template ID |
| version | string | — | Version to retrieve: "draft", "published" (default), or a version string like "v001" |
No output schema declared.
No examples provided.
get_list ~26
Get a list by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| list_id | string | yes | The list ID |
No output schema declared.
No examples provided.
get_list_subscribers ~37
Get all subscribers of a list.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| list_id | string | yes | The list ID |
No output schema declared.
No examples provided.
get_message ~35
Get the full details and status of a single message by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| message_id | string | yes | The message ID to retrieve |
No output schema declared.
No examples provided.
get_message_content ~37
Get the rendered content (HTML, text, subject) of a previously sent message.
| Name | Type | Req | Description |
|---|---|---|---|
| message_id | string | yes | The message ID |
No output schema declared.
No examples provided.
get_message_history ~56
Get the event history for a message, showing each step in the delivery pipeline (enqueued, sent, delivered, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| message_id | string | yes | The message ID |
| type | string | — | Filter by event type |
No output schema declared.
No examples provided.
get_notification ~63
Retrieve a notification template by ID. Optionally request draft, published, or a version such as v001.
| Name | Type | Req | Description |
|---|---|---|---|
| notification_id | string | yes | The notification template ID |
| version | string | — | Version to retrieve: draft, published, or a string like v001 |
No output schema declared.
No examples provided.
get_notification_content ~31
Get the published content blocks of a notification template.
| Name | Type | Req | Description |
|---|---|---|---|
| notification_id | string | yes | The notification template ID |
No output schema declared.
No examples provided.
get_notification_draft_content ~37
Get the draft (unpublished) content blocks of a notification template.
| Name | Type | Req | Description |
|---|---|---|---|
| notification_id | string | yes | The notification template ID |
No output schema declared.
No examples provided.
get_preference_section ~34
Retrieve a preference section by id, including its topics.
| Name | Type | Req | Description |
|---|---|---|---|
| section_id | string | yes | Id of the preference section |
No output schema declared.
No examples provided.
get_preference_topic ~65
Retrieve a topic within a section. Returns 404 if the section or topic does not exist, or the topic belongs to a different section.
| Name | Type | Req | Description |
|---|---|---|---|
| section_id | string | yes | Id of the preference section |
| topic_id | string | yes | Id of the subscription preference topic |
No output schema declared.
No examples provided.
get_provider ~28
Fetch a single provider configuration by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| provider_id | string | yes | The provider configuration ID |
No output schema declared.
No examples provided.
get_routing_strategy ~46
Retrieve a routing strategy by ID. Returns the full entity including routing, channels, and providers.
| Name | Type | Req | Description |
|---|---|---|---|
| routing_strategy_id | string | yes | The routing strategy ID (rs_ prefix) |
No output schema declared.
No examples provided.
get_tenant ~27
Get a tenant by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| tenant_id | string | yes | The tenant ID |
No output schema declared.
No examples provided.
get_tenant_template ~42
Get a tenant notification template association by template ID.
| Name | Type | Req | Description |
|---|---|---|---|
| template_id | string | yes | The template ID |
| tenant_id | string | yes | The tenant ID |
No output schema declared.
No examples provided.
get_tenant_template_version ~72
Get a specific version of a tenant notification template (e.g. latest, published, or v1).
| Name | Type | Req | Description |
|---|---|---|---|
| template_id | string | yes | The template ID |
| tenant_id | string | yes | The tenant ID |
| version | string | yes | Version identifier (latest, published, or v-prefixed) |
No output schema declared.
No examples provided.
get_translation ~62
Get a translation for a specific locale (e.g. "en_US", "fr_FR").
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Translation domain (only "default" is supported currently) |
| locale | string | yes | Locale code (e.g. en_US, fr_FR) |
No output schema declared.
No examples provided.
get_user_list_subscriptions ~39
Get all list subscriptions for a user.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| user_id | string | yes | The user ID |
No output schema declared.
No examples provided.
get_user_preference_topic ~57
Get a user's preference for a specific subscription topic.
| Name | Type | Req | Description |
|---|---|---|---|
| tenant_id | string | — | Scope to a specific tenant |
| topic_id | string | yes | The subscription topic ID |
| user_id | string | yes | The user ID |
No output schema declared.
No examples provided.
get_user_preferences ~48
Get a user's notification preferences (subscriptions, opt-outs, channel preferences).
| Name | Type | Req | Description |
|---|---|---|---|
| tenant_id | string | — | Scope preferences to a specific tenant |
| user_id | string | yes | The user ID |
No output schema declared.
No examples provided.
get_user_profile_by_id ~45
Get a user profile by their ID. Returns profile data including email, phone, and custom properties.
| Name | Type | Req | Description |
|---|---|---|---|
| user_id | string | yes | The user ID to look up |
No output schema declared.
No examples provided.
get_user_push_token ~41
Get a specific push/device token for a user.
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The token identifier |
| user_id | string | yes | The user ID |
No output schema declared.
No examples provided.
invoke_ad_hoc_automation ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| automation | object | yes | The automation definition with typed steps |
| brand | string | — | — |
| data | object | — | — |
| profile | object | — | — |
| recipient | string | — | — |
| template | string | — | — |
No output schema declared.
No examples provided.
invoke_automation_template ~128
Invoke an automation run from an existing automation template. Call list_automations first to get the template_id. Example: { template_id: "auto-onboarding", recipient: "user-123", data: { plan: "pro" } }.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | — | Brand ID override |
| data | object | — | Data to pass to the automation |
| profile | object | — | Profile data for the recipient |
| recipient | string | yes | Recipient user ID |
| template | string | — | Notification template override |
| template_id | string | yes | The automation template ID |
No output schema declared.
No examples provided.
invoke_journey ~129
Invoke a journey run from a journey template. Call list_journeys first to find the template_id. Example: { template_id: "j-onboarding", user_id: "user-123", data: { plan: "pro" } }.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | — | Data payload passed to the journey for conditions and template variables |
| profile | object | — | Profile data for the user (email, phone, custom fields) |
| template_id | string | yes | The journey template ID |
| user_id | string | — | Recipient user ID. Can also be resolved from profile or data. |
No output schema declared.
No examples provided.
list_audience_members ~37
List all members of an audience.
| Name | Type | Req | Description |
|---|---|---|---|
| audience_id | string | yes | The audience ID |
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_audiences ~26
List all audiences in the workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_audit_events ~34
List audit events in the workspace. Useful for tracking API usage and changes.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_automations ~59
List automation templates in the workspace. Always call this first to discover template_id values before calling invoke_automation_template. Optionally filter by version.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| version | string | — | Filter by version state |
No output schema declared.
No examples provided.
list_brands ~25
List all brands in the workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_bulk_users ~38
List the users in a bulk job.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| job_id | string | yes | The bulk job ID |
No output schema declared.
No examples provided.
list_digest_instances ~93
List the digest instances for a schedule. Each instance represents the events accumulated for a single user against the schedule, useful for monitoring accumulation before a digest is released.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor from a previous response |
| limit | number | — | Max instances to return (default 20, max 100) |
| schedule_id | string | yes | The digest schedule id, in the form "sch/{uuid}" |
No output schema declared.
No examples provided.
list_journey_template_versions ~55
List published versions of a journey-scoped notification template, ordered most recent first.
| Name | Type | Req | Description |
|---|---|---|---|
| journey_id | string | yes | The journey template ID that owns this notification |
| notification_id | string | yes | The notification template ID |
No output schema declared.
No examples provided.
list_journey_templates ~83
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| journey_id | string | yes | The journey template ID |
| limit | number | — | Page size (1–100) |
No output schema declared.
No examples provided.
list_journey_versions ~34
List published versions of a journey, ordered most recent first.
| Name | Type | Req | Description |
|---|---|---|---|
| journey_id | string | yes | The journey template ID |
No output schema declared.
No examples provided.
list_journeys ~73
List journey templates in the workspace. Call this first to discover journey IDs before calling invoke_journey, get_journey, or replace_journey. Optionally filter by version (published or draft).
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| version | string | — | Filter by version state. Defaults to published. |
No output schema declared.
No examples provided.
list_lists ~52
Get all lists. Optionally filter by pattern (e.g. 'example.list.*').
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| pattern | string | — | Filter pattern (e.g. 'example.list.*') |
No output schema declared.
No examples provided.
list_messages ~224
List messages you've previously sent. Filter by status, recipient, notification, provider, tags, or tenant.
| Name | Type | Req | Description |
|---|---|---|---|
| archived | boolean | — | Include archived messages |
| cursor | string | — | Pagination cursor for fetching the next page |
| enqueued_after | string | — | ISO 8601 timestamp; only return messages enqueued after this time |
| event | string | — | Filter by event ID |
| list | string | — | Filter by list ID |
| messageId | string | — | Filter by message ID |
| notification | string | — | Filter by notification ID |
| provider | array | — | Filter by provider key (e.g. sendgrid, twilio) |
| recipient | string | — | Filter by recipient user ID |
| status | array | — | Filter by status (e.g. DELIVERED, UNDELIVERABLE) |
| tag | array | — | Filter by metadata tags |
| tags | string | — | Comma-delimited list of tags |
| tenant_id | string | — | Filter by tenant ID |
| traceId | string | — | Filter by trace ID |
No output schema declared.
No examples provided.
list_notification_checks ~43
List checks for a notification submission.
| Name | Type | Req | Description |
|---|---|---|---|
| notification_id | string | yes | The notification template ID |
| submission_id | string | yes | The submission ID for the checks resource |
No output schema declared.
No examples provided.
list_notification_versions ~61
List version history for a notification template.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor from a previous response |
| limit | number | — | Max versions per page (default 10, max 10) |
| notification_id | string | yes | The notification template ID |
No output schema declared.
No examples provided.
list_notifications ~27
List notification templates. Optionally filter by cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_preference_sections ~23
List the workspace's preference sections. Each section embeds its topics.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_preference_topics ~31
List the topics in a preference section.
| Name | Type | Req | Description |
|---|---|---|---|
| section_id | string | yes | Id of the preference section |
No output schema declared.
No examples provided.
list_provider_catalog ~68
List available provider types from the catalog with their configuration schemas.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | — | Filter by channel type (email, sms, push, etc.) |
| keys | string | — | Comma-separated provider keys to filter by |
| name | string | — | Substring match on provider name |
No output schema declared.
No examples provided.
list_providers ~26
List configured provider integrations for the workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
No output schema declared.
No examples provided.
list_routing_strategies ~57
List routing strategies in the workspace. Returns metadata only; use get for full details.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| limit | number | — | Max results per page (default 20, max 100) |
No output schema declared.
No examples provided.
list_routing_strategy_notifications ~74
List notification templates associated with a routing strategy. Useful for checking linked templates before archiving.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| limit | number | — | Max results per page (default 20, max 100) |
| routing_strategy_id | string | yes | The routing strategy ID (rs_ prefix) |
No output schema declared.
No examples provided.
list_tenant_templates ~57
List notification templates configured for a tenant.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| limit | number | — | Max results per page (default 20, max 100) |
| tenant_id | string | yes | The tenant ID |
No output schema declared.
No examples provided.
list_tenant_users ~56
List users associated with a tenant.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor |
| limit | number | — | Max results per page (default 20, max 100) |
| tenant_id | string | yes | The tenant ID |
No output schema declared.
No examples provided.