Set up Milo with Claude Code, Cursor or Codex
Connect your AI coding agent to Dial Milo over MCP or the API, choose what it may do, and set a daily spend limit. Then ask it to build, upload and launch campaigns for you.
If you already work in Claude Code, Cursor or Codex, you can let it set Milo up for you. Connect it once, approve what it may do, and then ask in plain words: "upload players.csv to a new win-back campaign, write the script, wire it to our Customer.io journey and switch it on." Your agent never gets more access than you approve, and it can't touch payments, numbers or your team.
What your agent can do
Once connected, your agent can:
- Create and edit campaigns, scripts and A/B tests
- Upload player lists and import deposits
- Switch campaigns on and off, if you allow it
- Create a campaign's trigger URL for your CRM journeys, and connect Customer.io
- Set up receptionists and their knowledge, and run a test call
- Read calls, leads, contacts, campaign results and reports
It works for you: everything it does shows up in Settings → Activity as "API token: name".
Connecting
Owners and admins can connect an agent. The easiest way is the one-line sign-in: your agent opens a browser, you sign in to Dial Milo and approve.
- 1
Add Dial Milo to your agent
Claude Code: run
claude mcp add --transport http dialmilo https://dialmilo.com/api/mcp, then type/mcp, pick dialmilo and choose Authenticate.Cursor: add
{"mcpServers": {"dialmilo": {"url": "https://dialmilo.com/api/mcp"}}}to~/.cursor/mcp.json, then open Cursor Settings → MCP and click Login next to dialmilo.Codex: add
[mcp_servers.dialmilo]withurl = "https://dialmilo.com/api/mcp"to~/.codex/config.toml, then runcodex mcp login dialmilo. - 2
Approve in the browser
Sign in if you need to. The approval page shows which app is asking and where it will send you back. Tick what it may do, set a daily limit and an expiry, then click Approve.
- 3
Ask it something
Try "Use dialmilo: who am I connected as, and list my campaigns." Then something real, like "Create a switched-off test campaign called MCP test."
You'll find the same snippets, ready to copy, in Settings → AI agents & API and on the AI agents page.
Prefer a token? In Settings → AI agents & API, under Create a token, pick what it may do and click create. Copy it straight away: it's shown only once. Tokens also work with the REST API (see https://dialmilo.com/openapi.json) and in scripts or CI.
Choosing what it may do
| Permission | What it allows |
|---|---|
| Read everything | Receptionists, calls, leads, contacts, appointments, campaigns and their results, knowledge, numbers, balance |
| Set up receptionists & knowledge | Create and edit receptionists, scripts, tools and knowledge, analyze a website, run a test call |
| Edit leads, contacts & appointments | Update leads, import and edit contacts, add or change appointments |
| Build campaigns & upload player lists | Create and edit campaigns and scripts, upload CSV lists, import deposits. Can't switch a campaign on. |
| Launch & pause campaigns | Switch campaigns on and off, and create the trigger URL. This spends money, within your daily limits. |
| Connect CRMs, Notion, Sheets & webhooks | Connect or disconnect Customer.io, Notion, Google Sheets and Calendar, and manage webhooks |
Everything except Launch & pause campaigns is ticked by default, so out of the box your agent builds and you switch campaigns on yourself. Three presets help: Full campaign autopilot, Build, I launch and Read only.
Never allowed for any agent: topping up or payment methods, buying or forwarding numbers, inviting or removing team members, changing passwords or the account email, and creating other tokens. These always need you in the dashboard.
Spend limits
Calls that an agent switched on are covered by two daily limits:
- Daily limit for agent-launched calls, for the whole account. It's $100 a day to start. Only the owner can change it, in Settings → AI agents & API. Set it to 0 to stop agent-launched calls altogether.
- An optional daily limit for each token. The lower of the two applies.
When a limit is reached, Milo stops starting new calls on those campaigns, shows Paused: agent daily limit reached, and emails you. Calls already in progress finish normally. Calling picks up again the next day (UTC), or straight away if you raise the limit. Your campaign's own budgets still apply as well.
If you switch a campaign on yourself, it counts as yours, not the agent's, and the agent limits no longer apply to it.
Staying in control
- You get an email whenever an agent switches a campaign on or connects or changes an integration.
- Tokens expire after 7, 30 or 90 days, or a year (90 days by default). When one expires, your agent simply asks you to sign in again.
- Settings → AI agents & API lists every connected agent and token with what it can do, today's spend and when it was last used. Click Revoke to cut one off. Campaigns it switched on are paused straight away.
- Safer-gambling handling, calling hours, opt-outs and do-not-call rules apply to campaigns your agent launches exactly as they do to yours.
Your AI agent runs on your own Claude, Cursor or OpenAI subscription. Dial Milo charges only for calls and numbers, as usual.
Was this helpful?
Related articles
Running an outbound calling campaign
Set up a campaign, upload your players, and follow it from the Campaigns page: dates, pausing and resuming, how many calls run at once, and what each tab shows.
Starting calls from your CRM journeys
Make a Milo call one step of a retention journey in Customer.io, Braze, Optimove, Fast Track or your own CRM, and get every call result back so the journey can branch.
Connecting Customer.io
Send every call result to your players' Customer.io profiles, and send deposits and logins back so Milo can show which calls brought players back.