MCP server
The @ampout/mcp-server package is a Model Context Protocol server that wraps the ampout REST API. With it installed, any MCP-compatible client (Claude Desktop, Cursor, ChatGPT desktop apps, n8n, agent frameworks) can manage your campaigns by calling tools.
This is the agent-native way to use ampout. No dashboard, no clicking through screens — just say “list my campaigns and pause the OC one” and the LLM figures out the rest.
Install
Section titled “Install”The MCP server is a stdio process — clients launch it via npx, no install required.
# Optional: pre-warm the npm cachenpx -y @ampout/mcp-server@latest --helpConfigure Claude Desktop
Section titled “Configure Claude Desktop”Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on other OSes:
{ "mcpServers": { "ampout": { "command": "npx", "args": ["-y", "@ampout/mcp-server@latest"], "env": { "AMPOUT_API_KEY": "ak_live_..." } } }}Restart Claude Desktop. The 11 ampout tools should now appear in the tool list.
Tip: issue a dedicated API key with client_kind: "mcp" so you can split MCP traffic from direct API traffic in /usage:
curl -X POST https://ampout.fly.dev/api_keys \ -H "Authorization: Bearer $YOUR_DIRECT_KEY" \ -H "Content-Type: application/json" \ -d '{"label": "Claude Desktop", "client_kind": "mcp"}'Configure Cursor
Section titled “Configure Cursor”Edit ~/.cursor/mcp.json:
{ "mcpServers": { "ampout": { "command": "npx", "args": ["-y", "@ampout/mcp-server@latest"], "env": { "AMPOUT_API_KEY": "ak_live_..." } } }}Cursor picks it up on next restart.
The 11 tools
Section titled “The 11 tools”| Tool | Purpose |
|---|---|
listCampaigns | List your account’s campaigns. |
getCampaignStats | Full stats for a campaign (totals, rates, per-batch, recent bounces). |
getSendForecast | Daily-bucket forecast of scheduled sends. |
listSkips | Recently-skipped enrollments (MX-invalid, cross-campaign duplicate, etc.). |
listReplies | Recent replies with hours-to-reply. |
createCampaign | Create a campaign with sequence + SMTP credential. |
importContacts | Bulk-create contacts (paginated for large lists). |
enrollContacts | Enroll an import into a campaign. |
dispatchBatch | Dispatch a specific batch of an active campaign. |
pauseCampaign | Pause a campaign. |
resumeCampaign | Resume a paused campaign. |
All tools are JSON-typed via Zod schemas. Error responses get formatted as readable error messages so the LLM can recover (retry with corrected input, ask the user, etc.).
Example prompts
Section titled “Example prompts”Once configured, try:
list my campaignshow is the OC contractors campaign doing? show me the statsdispatch batch 14 for the OC campaignpause the campaign that's bouncing the mostforecast my sends for the next 5 daysThe LLM combines tool calls fluidly — e.g., listCampaigns → find the OC one → getCampaignStats(id) → summarize.
Why MCP, not a dashboard?
Section titled “Why MCP, not a dashboard?”Three reasons:
- Speed of iteration. Asking “what’s my bounce rate looking like?” in Claude Desktop is faster than logging in, navigating to the right campaign, and reading the dashboard.
- Composability. “Pause campaigns with bounce rate over 7%” is one sentence to an LLM but a multi-step manual flow in any dashboard.
- No dashboard tax. Dashboards bloat as features grow; MCP tools stay sharp because each one does one thing.
The same API powers direct curl, SDKs, and the MCP server — they’re all clients of the same JSON endpoints.
Source & contributing
Section titled “Source & contributing”Open source: github.com/jasoncbuehler/ampout/tree/main/mcp. PRs welcome — additional tools, better LLM-facing output formats, etc.
Listing on MCP directories
Section titled “Listing on MCP directories”The server is published in the major MCP directories:
- modelcontextprotocol.io/servers
- mcpservers.org
- mcp.so
- awesome-mcp-servers (community-maintained list)