Today we published something we have been working on for a while. It is called callrail-mcp and it is the first open-source Model Context Protocol server for CallRail’s REST API. Version 1.0 went live on PyPI a few hours ago. Anyone can install it in about 30 seconds and start asking their AI assistant real questions about their call tracking data.
If that sentence meant nothing to you, stay with me. This actually matters for every local business that uses call tracking to measure marketing.
The problem we were trying to solve
Most of our clients use CallRail. It is the call tracking standard in the small business world, and for good reason. It works. It captures every phone call, tags it with the source, records the conversation, hands off the data to Google Ads as a conversion signal, and spits out reports every month that show you how your phone is actually ringing.
The catch is that getting useful information out of CallRail usually requires clicking. A lot of clicking. If you want to know why a specific Google Ads call did not count as a conversion, you have to open the call, scroll through the details, compare against Google’s rules, and make a judgment call. If you want to figure out which client is burning through your monthly minutes, you have to pull each company’s report one at a time. If you want to tag every call that mentions a specific service so you can filter later, you have to do it by hand.
None of that is hard work. It is just tedious. And tedious work does not get done consistently. So the reports go out every month with the same high-level numbers and the genuinely useful questions never get asked.
We wanted to change that. Not by rebuilding CallRail. CallRail is great at what it does. We wanted to change how you talk to CallRail.
What an MCP actually is
Model Context Protocol is a new standard from Anthropic that lets AI assistants like Claude connect to external tools and data sources. Think of it as a common adapter. Before MCP, every AI tool had to write its own custom integration for every service it wanted to talk to. With MCP, anyone can build a server that exposes a service’s capabilities in a way that any MCP-compatible AI can use.
Claude Code can use MCP servers. Claude Desktop can use them. So can Cursor, and a growing list of other AI clients. When you install a CallRail MCP server, any of those AI tools can now pull data from your CallRail account, make updates, and answer questions. In plain English. Without you clicking around.
What our MCP lets you ask
Here are actual things you can do once this is installed. We tested every single one of these against real client accounts before we published.
“Pull last week’s calls for Alan Construction, grouped by source.”
The AI calls the right endpoint, filters to that one client, groups by source, and gives you the answer. What used to be three or four clicks in the CallRail UI is now a sentence.
“Why didn’t this call convert in Google Ads? CAL019dbf79…”
This one is a favorite. The AI runs a diagnostic on the call. Does it have a gclid? Was it answered? Was it longer than Google’s 60-second conversion threshold? What was the source? The answer comes back in seconds with the specific reason the conversion did not fire. Usually it is a 58-second call that was two seconds short of counting. That is the kind of insight you would never dig up manually.
“Why is my CallRail bill $174 this month? Break it down by client.”
For agencies running CallRail across multiple clients, this is gold. The tool calls usage_summary under the hood and gives you a per-client breakdown sorted by who is burning the most minutes. No more guessing which client you need to rebill or have a conversation with about their call volume.
“Tag every call from the last 30 days that was under 20 seconds as likely spam.”
The bulk_update_calls tool runs the update in one pass. You can preview it with dry_run=True before anything actually changes. What used to be a rainy-afternoon cleanup project is now a 10-second conversation.
“Provision a new Google Ads call-extension tracker for this client in area code 412.”
Yes, the AI can even create new tracking numbers for you. This one has a safety guard. You have to pass confirm_billing=True because it actually costs about $3 a month. We did not want anyone accidentally running up a bill by chatting too casually.
Why local businesses should care
If you do not run a marketing agency, most of the above might sound like something that only helps agencies. It is not.
Every local business that spends money on marketing has the same core question: is my phone ringing because of the money I am spending? Call tracking answers that question, but only if you actually look at the data. And most business owners do not, because pulling insights out of CallRail requires too much friction.
When the friction goes to zero, the data starts getting used.
You can ask your AI assistant:
- “What sources drove the most calls last month?”
- “Which keywords are generating actual phone calls?”
- “Show me every missed call from my Google Ads campaign this week.”
- “Did that 412 number call in again after our proposal?”
- “What percentage of my calls this month lasted more than 60 seconds?”
These are the questions that actually tell you if your marketing is working. You could always get these answers from CallRail. Most people just never bothered. We built this so you will.
What makes this version different
There are a few other CallRail integration projects floating around. None of them are MCP servers, and most of them cover maybe 20 percent of the API. We went the other direction. Our server exposes 49 tools covering about 85 percent of CallRail’s REST API v3. That includes the stuff nobody else has bothered to expose:
- Full company and user CRUD (invite people, create new client accounts, clean up old ones)
- Tag management (create, update, delete the tag taxonomy per client)
- Tracker provisioning (spin up new tracking numbers, update routing, soft-delete)
- Form submission backfill (manually record offline leads so they show up in your attribution reports)
- Agency aggregation tools (cost attribution, period-over-period comparisons, spam detection)
- Outbound calling (yes, the AI can actually place calls through your tracker for click-to-call flows)
We wrote it the way we would write a tool for our own team. Because that is literally what happened. We built it for ourselves first, realized other agencies and local businesses could use it, and then spent a bunch of extra time making it production-quality so we could open source it.
The safety guards we built in
This is the part we want to be very clear about. When an AI can take actions on your behalf in your CallRail account, things can go sideways if the tool is not built defensively. Here is what we did:
Billing-guarded actions require explicit confirmation. Creating a new tracker costs money. The create_tracker tool will refuse to run unless you pass confirm_billing=True. The AI cannot accidentally create a tracker by over-interpreting an ambiguous instruction.
Outbound calling requires confirmation too. create_outbound_call actually dials a real phone number, which has legal implications under TCPA. It will not run without confirm_dialing=True.
Bulk updates default to dry run. bulk_update_calls shows you what it would change before it changes anything. You have to explicitly flip dry_run=False to commit.
Validation on every input. Area codes, phone numbers, pool sizes, source types, tag names. Every single field gets validated before the API call goes out. If the AI hallucinates a weird value, the tool catches it.
No blind deletes. Delete operations use CallRail’s soft-delete semantics where available, which means call history and attribution data are preserved even when a tracker or company gets removed.
How to try it
If you use Claude Code, Claude Desktop, or Cursor, and you already have a CallRail account, installation takes about 30 seconds:
pipx install callrail-mcpThen add this to your ~/.claude.json or equivalent:
{
"mcpServers": {
"callrail": {
"command": "callrail-mcp",
"env": {
"CALLRAIL_API_KEY": "your_key_here"
}
}
}
}You get the API key from Settings → API Keys in your CallRail account. You need Account Admin permission to generate one.
That is it. Open Claude, ask a question about your call data, and watch it pull the answer in real time.
The full documentation, source code, and installation instructions are on GitHub at github.com/pghdma/callrail-mcp. The package is on PyPI as callrail-mcp. It is MIT licensed. Free forever. Use it however you want.
Why we gave it away
We could have kept this internal. It would have given us a private edge over other agencies who are still clicking through CallRail reports one by one. Instead we open-sourced it.
The reason is simple. We think call tracking data is underused across the entire local business world, not just in our client roster. The faster AI-driven tooling becomes the default for pulling insights out of this stuff, the better every marketing decision gets. A local plumber in Carnegie who uses this to figure out which of his campaigns is actually generating leads is going to spend his money smarter. That is good for him, good for his customers, and honestly good for our industry.
And if you decide you want someone to actually set all of this up for you and run it, you know where to find us.
What is next
This is v1.0. It is stable, tested, and battle-hardened against real production accounts. But we have a roadmap.
We are planning to add:
- Smarter spam detection that learns patterns specific to your account over time
- Conversion eligibility rules for other ad platforms beyond Google Ads (Microsoft Ads, Facebook, etc.)
- Natural-language report scheduling so you can ask the AI to email you a weekly breakdown without opening Claude
A few CallRail endpoints are out of scope for now because they require account upgrades our standard plan does not have. Specifically outbound SMS (needs A2P registration) and webhook CRUD (needs Integration-Admin permission). If CallRail ever opens these up on standard accounts, or if a user with those permissions sends us a pull request, we will add them.
If you are an agency or business using this, tell us what is missing. If you hit a bug, open an issue on GitHub. If you just want to tell us it is useful, that works too.
You can reach me at [email protected].
That is the announcement. Now go ask your AI about your calls.