Dial Milo for AI agents
Set up Milo from Claude Code, Cursor or Codex.
Dial Milo runs an MCP server at https://dialmilo.com/api/mcp. Connect your agent, approve what it may do, and it can build receptionists and call campaigns, upload player lists, wire up your CRM and report results. You set the daily spend limits. Money and account changes stay with you.
claude mcp add --transport http dialmilo https://dialmilo.com/api/mcp
Connect
Sign in with OAuth: add the server, and your client opens a browser. You sign in to Dial Milo, see which app is asking and where access will be sent, tick what it may do, set a daily limit and an expiry, then approve. You need a Dial Milo account first; sign up free.
claude mcp add --transport http dialmilo https://dialmilo.com/api/mcp
Then run /mcp in Claude Code and pick dialmilo. A browser opens; sign in and approve.
With a token instead
For CI, scripts, plain REST, or a client that can't open a browser. Create a token in Settings → AI agents & API; it is shown once. The same token works against MCP and REST.
claude mcp add --transport http dialmilo https://dialmilo.com/api/mcp --header "Authorization: Bearer <token>"
Permissions
Every connection carries scopes. A request outside them gets 403 scope_required naming the scope it needs. A token never does more than the team member who created it.
read- Read everything. Receptionists, calls, leads, contacts, appointments, campaigns and their results, knowledge, numbers, balance.
setup- Set up receptionists & knowledge. Create and edit receptionists, scripts, tools and knowledge, analyze a website, run a test call.
records- Edit leads, contacts & appointments. Update leads, import and edit contacts, add or change appointments.
campaigns- Build campaigns & upload player lists. Create and edit campaigns and scripts, upload CSV lists, import conversions. Cannot switch a campaign on.
campaigns.launch- Launch & pause campaigns (spends money). Switch campaigns on and off, mint the campaign trigger URL for CRM journeys. Calls cost money, within your daily limits.
integrations- Connect CRMs, Notion, Sheets & webhooks. Connect or disconnect Customer.io, Notion, Google Sheets and Calendar, and manage webhooks.
OAuth sign-in ticks everything except campaigns.launch by default. Without it an agent can build a whole campaign but cannot switch it on.
Spend limits and what stays with you
Calls an agent launches count against two daily limits: one for the whole account (default $100, the owner changes it in Settings) and an optional one per connection. When either is reached, those campaigns stop starting new calls and the owner gets an email. Calls already in progress finish normally. Revoking a connection pauses every campaign it switched on.
Safer-gambling checks, calling hours, opt-outs and do-not-call lists are enforced on our side and apply to agent-launched campaigns exactly as to yours.
Always owner-only, whatever the scopes
- • Changing the email or password
- • Creating or revoking tokens and agent connections
- • Inviting or removing team members
- • Payments, top-ups and auto top-up
- • Buying or forwarding phone numbers, and number requests
- • Deleting the account
- • Reviews
These return 403 owner_action_required. A good agent tells you what is left for you to do.
Tools
Each tool calls the same API the dashboard uses, so validation, permissions and limits are identical.
Account
readWho the agent is connected as, the balance, its scopes, and today's spend against both daily limits.
Receptionists
setupList, read, create and update receptionists: greeting, script, voice, languages and tools.
Website analysis
setupRead a business website and draft the greeting and script from it.
Knowledge
setupList documents and add text the receptionist answers from: prices, FAQ, hours, policies.
Campaigns
campaignsList, read, create and update outbound campaigns: script, offer and terms, calling hours, retries, budgets.
Player and contact lists
campaignsUpload a CSV of players or customers to a campaign. Bad numbers and do-not-call entries are rejected and reported.
Launch, pause and stats
campaigns.launchSwitch a campaign on or off, and read its funnel, outcomes, cost and report.
Campaign trigger URL
campaigns.launchMint the URL a CRM journey posts a player to, so each journey step can start a call. Comes with the payload format.
Customer.io
integrationsCheck the connection, or connect it with a site ID and Tracking API key so call outcomes flow back.
Calls and leads
readRecent calls with summaries and transcripts, captured leads and voicemails.
Any other endpoint
readA generic API request tool for anything in the OpenAPI document, under the same scope rules.
The full endpoint list is in openapi.json; the step-by-step guide for agents is agent.md.
Example prompts
- “Upload lapsed_30d.csv to a new win-back campaign, write the script from our offer page, and show it to me before anything goes live.”
- “Wire the campaign's trigger URL into my Customer.io "login, no deposit" journey and tell me what payload to send.”
- “How did yesterday's win-back calls go? Who accepted the offer, and who asked for a callback?”
A full iGaming win-back setup
Paste this into your agent after connecting. Change the offer, hours and limit to yours.
Connect to Dial Milo. Upload players.csv to a new campaign called "Login no deposit — win-back". Write a friendly script: Milo says it's calling from our casino, checks it's talking to the right player, offers 50 free spins on their next deposit (terms: 10x wagering, valid 7 days) and answers questions using only those terms. If the player mentions problems with gambling, stop the offer and flag it. Call between 11:00 and 20:00 local time, max 3 attempts per player, and cap the campaign at $50 a day. Wire the campaign trigger URL into my Customer.io journey for "logged in, no deposit in 3 days" and send each call's outcome back to Customer.io. Show me the script and the setup when you're done. Don't launch until I say so.