https://mcp.courier.com exposes the as typed tools. Your agent discovers them automatically.
Authenticate with an API key from . Each client takes the key as a header, flag, or config field.
Installation
- Claude Code
- Cursor
- Codex
- Antigravity
- VS Code
- Windsurf
- Gemini CLI
- Grok Build
- OpenCode
- Zed
- Warp
- Devin
- Claude Desktop
Run:
claude mcp add --transport http courier https://mcp.courier.com --header api_key:YOUR_COURIER_API_KEY
This registers the server for the current project. Add
--scope user to register it in every project.Quick install
Manual installIn Cursor, go to Cursor > Cursor Settings > Tools & Integrations > MCP Tools > New MCP Server and add:
{
"mcpServers": {
"courier": {
"url": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
}
Courier MCP works best with Agent mode enabled.
Add this to
~/.codex/config.toml (create the file if it doesn’t exist), then restart Codex:[mcp_servers.courier]
url = "https://mcp.courier.com"
http_headers = { "api_key" = "YOUR_COURIER_API_KEY" }
The Codex CLI and the Codex IDE extension share this config file, so one entry covers both.
codex mcp add doesn’t support custom headers, so edit the file directly.Antigravity’s IDE, CLI, and Agent Manager share one MCP config. Add this to Then refresh the server list:
~/.gemini/config/mcp_config.json (create the file if it doesn’t exist):{
"mcpServers": {
"courier": {
"serverUrl": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
}
- In the Antigravity IDE, go to Settings > Customizations > Installed MCP Servers and click Refresh.
- In the Antigravity CLI, run
/mcpto confirm the courier server is connected.
Antigravity requires
serverUrl for remote servers. It doesn’t support the url or httpUrl fields other clients use.Create Open the chat window, click the Gear icon, then MCP Servers, and start the “courier” server.
.vscode/mcp.json in your project and add:{
"inputs": [
{
"type": "promptString",
"id": "courier-api-key",
"description": "API key for Courier service",
"password": true
}
],
"servers": {
"courier": {
"url": "https://mcp.courier.com",
"type": "http",
"headers": {
"api_key": "${input:courier-api-key}"
}
}
}
}
VS Code works best when you prefix chat prompts with
#. For example: #get_user_profile_by_id example_user_id.Add the following to
~/.codeium/windsurf/mcp_config.json (create the file if it doesn’t exist):{
"mcpServers": {
"courier": {
"serverUrl": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
}
Windsurf uses
serverUrl for remote servers, not url.Add the following to
~/.gemini/settings.json for every project, or .gemini/settings.json for one project:{
"mcpServers": {
"courier": {
"httpUrl": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
}
Use
httpUrl, which selects the streamable HTTP transport the Courier server speaks. url selects SSE instead. Paste the key itself: Gemini CLI does not expand environment variables inside headers.In a terminal, run:Or add the server to
grok mcp add --transport http courier https://mcp.courier.com --header "api_key: YOUR_COURIER_API_KEY"
~/.grok/config.toml directly:[mcp_servers.courier]
url = "https://mcp.courier.com"
headers = { "api_key" = "YOUR_COURIER_API_KEY" }
Pass
--scope project to store the server in .grok/config.toml inside the repository instead. grok mcp list shows configured servers and grok mcp doctor courier checks connectivity.Add the following to
opencode.json in your project:{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"courier": {
"type": "remote",
"url": "https://mcp.courier.com",
"enabled": true,
"headers": {
"api_key": "{env:COURIER_API_KEY}"
}
}
}
}
{env:COURIER_API_KEY} reads the key from your environment so it never lands in the file. Replace it with the key itself if you prefer.Open your settings file (
zed: open settings file from the command palette) and add:{
"context_servers": {
"courier": {
"url": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
}
Zed calls MCP servers context servers. Remote servers take
url and headers; leave command out.In Warp, go to Settings > Agents > MCP servers, click + Add, and paste:
{
"courier": {
"url": "https://mcp.courier.com",
"headers": {
"api_key": "YOUR_COURIER_API_KEY"
}
}
}
Warp supports the streamable HTTP transport the Courier server uses. The top-level key is the server name.
In the Devin web app, go to Customize > MCPs and click Add custom MCP. Fill in:
- Transport: HTTP
- URL:
https://mcp.courier.com - Auth method: Auth Header
- Header name:
api_key - Header value: your Courier API key
MCP servers in Devin are configured for the whole organization, so every member shares this connection. Use a dedicated API key for it rather than a personal one.
In Claude Desktop, go to Claude > Settings > Developer > Edit Config, then add:
{
"mcpServers": {
"courier": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.courier.com", "--header", "api_key: YOUR_COURIER_API_KEY"]
}
}
}
What it covers
lists every tool the server exposes, by resource, and marks which ones write. 161 tools across the API surface:| Area | What the agent can do |
|---|---|
| Send | Send to a user, List, or Template, and cancel or resend a message |
| Messages | List, retrieve, read history, content, and delivery status, and trace a delivery in one call |
| Users | Create, merge, replace, and patch Profiles, and manage push tokens |
| Lists & Audiences | Create Lists, subscribe and unsubscribe users, query Audience members |
| Templates | Create, publish, archive, and read or replace content, elements, and locales |
| Journeys | Create, publish, invoke, cancel, and version Journeys and their Templates, and read run logs |
| Preferences | Read and write Topics, Sections, digests, and per-user and per-tenant preferences |
| Broadcasts | Create, schedule, and send a Broadcast to a List or Audience |
| Tenants | Create Tenants, manage membership, and set Tenant Templates and preferences |
| Brands & Providers | Create and update Brands, Providers, and Routing Strategies |
| Automations | Invoke a Template or ad-hoc Automation, and cancel a run |
| Analytics | Read audit events, digest instances, and the provider catalog |