Integration

Courier integration

Multi-channel notification API for email, SMS, push, Slack, and more. Design notifications with a visual editor, manage preferences, and deliver across 50+ channels from one API. Features include templates, user preferences, delivery tracking, intelligent routing, audiences, tenants, automations, and bulk operations.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Courier.Built from the 58 Courier tools below, on the connection you add once.

Common Courier use cases

  • admin tools
  • compliance
  • subscription management
  • list cleanup
  • list management
  • settings display
  • audience management
  • unsubscribe handling
  • delivery verification
  • subscriber management

What you can do with Courier

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

List, 10 operations

  • add_subscribers_to_listAdd subscribers to listPOSTAdds subscribers to a list without removing existing ones (POST appends).
  • delete_listDelete listDELETEDeletes a list. Can be restored later via PUT /lists/{list_id}/restore.
  • get_listGet listGETGets a specific list by ID. Returns list name, created, and updated timestamps.
  • get_list_subscriptionsGet list subscriptionsGETGets all subscribers of a list. Returns recipient IDs, preferences, and timestamps.
  • list_listsList listsGETGets all recipient lists with optional pattern filtering. Returns list IDs, names, and timestamps.
  • restore_listRestore listPUTRestores a previously deleted list. Returns 204 on success.
  • subscribe_to_listSubscribe to listPUTSubscribes users to a list (PUT overwrites existing subscriptions). Creates the list if it does not exist.
  • subscribe_user_to_listSubscribe user to listPUTSubscribes a single user to a list with optional per-subscription preferences.
  • unsubscribe_from_listUnsubscribe from listDELETERemoves a user from a list subscription.
  • update_listUpdate listPUTCreates or updates a list. Set name and optional notification preferences.

Message, 6 operations

  • archive_messageArchive messagePUTArchives a message by request ID. Archived messages can be filtered when listing messages.
  • cancel_messageCancel messagePOSTCancels a previously enqueued message before delivery. Returns 200 on success, 409 if cancellation fails.
  • get_messageGet messageGETGets message details and delivery status. Returns sent/delivered/opened events per channel. Track notification lifecycle and troubleshoot delivery issues.
  • get_message_contentGet message contentGETGets the rendered content of a sent message. Returns HTML, title, body, subject, and text per channel.
  • get_message_historyGet message historyGETGets the full event history of a sent message. Returns timestamped lifecycle events showing routing, rendering, and delivery progression.
  • list_messagesList messagesGETLists sent messages with optional filters. Query by recipient, status, event, provider, tenant, or tags. Returns paginated message history.

Profile, 6 operations

  • delete_profileDelete profileDELETEPermanently deletes a user profile. Returns 204 on success.
  • get_profileGet profileGETGets a user's stored profile. Returns all contact info, preferences, and custom data.
  • get_profile_listsGet profile listsGETGets all list subscriptions for a user. Returns list IDs, names, and timestamps.
  • merge_profileMerge profilePOSTMerges data into a user profile without replacing existing fields. Creates the profile if it does not exist.
  • replace_profileReplace profilePUTReplaces a user profile entirely. Store contact info, push tokens, chat handles, and custom properties. Omitted fields are removed.
  • update_profileUpdate profilePATCHApplies JSON patch operations to a user profile. Supports add, remove, replace, move, copy, and test operations.

Audience, 5 operations

  • delete_audienceDelete audienceDELETEDeletes an audience. Returns 204 on success.
  • get_audienceGet audienceGETGets a specific audience by ID. Returns name, description, operator, filter rules, and timestamps.
  • list_audience_membersList audience membersGETLists all members of an audience. Returns member IDs, added timestamps, and match reasons.
  • list_audiencesList audiencesGETLists all audiences with their filter configurations. Returns ID, name, description, operator, and filter rules.
  • update_audienceUpdate audiencePUTCreates or updates an audience with filter rules for dynamic user grouping based on profile attributes.

Brand, 5 operations

  • create_brandCreate brandPOSTCreates a new brand configuration. Define name, settings (colors, logo, email), and optional snippets.
  • delete_brandDelete brandDELETEDeletes a brand configuration. Returns 204 on success, 409 if the brand cannot be deleted.
  • get_brandGet brandGETGets a specific brand configuration by ID. Returns name, settings, snippets, and version.
  • list_brandsList brandsGETLists brand configurations for notification styling. Returns brand ID, name, settings, and timestamps.
  • replace_brandReplace brandPUTReplaces a brand configuration entirely. Provide name and updated settings.

Bulk job, 5 operations

  • create_bulk_jobCreate bulk jobPOSTCreates a bulk notification job with shared message configuration. Returns a jobId used to add recipients and trigger delivery.
  • get_bulk_jobGet bulk jobGETGets the status and details of a bulk notification job. Returns enqueued count, received count, failures, and job definition.
  • get_bulk_job_usersGet bulk job usersGETLists users added to a bulk job with their processing status and optional message IDs.
  • ingest_bulk_usersIngest bulk usersPOSTAdds recipients to a bulk notification job. Can be called multiple times to ingest users incrementally before triggering the job.
  • run_bulk_jobRun bulk jobPOSTTriggers a bulk job to start processing and delivering notifications to all ingested users. A job can only be triggered once.

Tenant, 5 operations

  • create_or_replace_tenantCreate or replace tenantPUTCreates or replaces a tenant. Set name, properties, preferences, user_profile, and brand_id.
  • delete_tenantDelete tenantDELETEDeletes a tenant. Returns 204 on success.
  • get_tenantGet tenantGETGets a tenant by ID. Returns name, properties, default_preferences, user_profile, and brand_id.
  • get_tenant_usersGet tenant usersGETLists all users in a tenant. Returns user-tenant associations with pagination.
  • list_tenantsList tenantsGETLists all tenants. Supports parent_tenant_id filtering and pagination.

Automation, 3 operations

  • invoke_automationInvoke automationPOSTInvokes an ad hoc automation run with a series of steps. Supports send, delay, send-list, fetch-data, update-profile, cancel, and invoke actions.
  • invoke_automation_templateInvoke automation templatePOSTInvokes a pre-defined automation template by ID or alias. Returns a runId.
  • list_automationsList automationsGETLists all automation templates. Filter by published or draft version.

Preference, 3 operations

  • get_preferencesGet preferencesGETGets user's notification preferences. Returns subscription status by topic with optional custom routing channels.
  • get_preference_topicGet preference topicGETGets a user's preference for a specific topic. Returns status, custom routing, and channel preferences.
  • update_preferencesUpdate preferencesPUTUpdates preferences for a specific topic. Set status and optional custom routing channels.

Audit event, 2 operations

  • get_audit_eventGet audit eventGETGets a specific audit event by ID. Returns actor, action, target, source, and timestamp.
  • list_audit_eventsList audit eventsGETLists audit events. Returns timestamped records of actions with actor, target, source, and type.

Translation, 2 operations

  • get_translationGet translationGETGets translations for a domain and locale. Returns .po file translation content.
  • update_translationUpdate translationPUTUpdates translations for a domain and locale. Accepts .po file content. Returns 204 on success.

User tenant, 2 operations

  • add_user_to_tenantAdd user to tenantPUTAdds a user to a tenant with optional tenant-scoped profile data.
  • get_user_tenantsGet user tenantsGETLists all tenants associated with a user.

Auth, 1 operation

  • issue_tokenIssue tokenPOSTCreates a scoped JWT for client-side Courier SDK authentication. Set scope and expiration.

Notification, 1 operation

  • send_notificationSend notificationPOSTSends a notification via configured channels. Specify recipient, template or inline content, and routing preferences. Delivers across email, SMS, push, Slack, and more.

Template, 1 operation

  • list_templatesList templatesGETLists all notification templates in your workspace. Returns template ID, title, routing, tags, topic_id, and timestamps.

Track, 1 operation

  • track_eventTrack eventPOSTTracks a custom event for automation triggers. De-duplicated by messageId. Returns 202 on acceptance.

Use Courier from Claude Code, Cursor or Codex

Connect Courier in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Courier operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Courier

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Courier once

    Add your Courier connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Courier integration FAQ

What can you do with the Courier integration?

LiveContext exposes 58 operations on Courier, covering list, message, profile and audience. Common uses include admin tools, compliance and subscription management.

Popular integrations

Browse the whole catalog