All posts
4 min readShane Richardson

MCP-native CRM: what it means in practice

We shipped a Model Context Protocol server in the CRM. Here's what 37 tools, 4 scopes, and one outbound kill switch get you.

A week ago we shipped Harmonia's MCP server to production. 37 tools. Four scopes. One outbound kill switch.

"MCP" is the Model Context Protocol — the open standard Anthropic published last fall to let AI clients talk to tools through a uniform interface. Cursor speaks it. Claude Desktop speaks it. Zed and Windsurf speak it. The list is growing.

This post is not "why MCP matters." Smarter people have written that. This post is the concrete thing — what happens, in practice, when a CRM goes MCP-native. What it changes, what it doesn't, and what operators actually use it for.

The framing nobody got right

Most CRMs ship "AI" as a sidebar chatbot. Sometimes it's powered by the company's own fine-tuned model, sometimes it's a thin wrapper around OpenAI or Anthropic. Either way it lives inside the CRM and you talk to it inside the CRM.

That model gets the cause and effect backwards.

Operators don't want to leave their tools to use AI. They already chose their AI client — Claude Desktop, Cursor, ChatGPT, whatever. The AI lives where they are. The CRM should show up there, not demand that the AI live in the CRM.

MCP makes that flip possible. The CRM exposes its surface as tools. The AI client — whichever one you've picked — picks them up.

What we actually exposed

Once we accepted that framing, the design question got concrete: which parts of Harmonia should an AI agent be able to touch?

We landed on 37 tools across four scopes:

  • Read — list, get, search across contacts, opportunities, accounts, calendars, pipelines, conversations, tasks, notes. 15 tools.
  • Write — create, update, move-stage, tag, assign. 12 tools.
  • Comms — send email, send SMS, place a call, reply to a thread. 4 tools.
  • Admin — list users, invite, audit log, org settings. 6 tools.

Plus three named prompts that the AI client can run on demand: daily_pipeline_brief, stale_deal_alert, lender_match_brief. These aren't tool calls — they're templates Claude pulls in when the user asks "summarize my pipeline" or similar.

The outbound kill switch

This is the safety detail nobody asks about until they get burned.

Imagine an AI client connected with mcp:comms. Your data is loaded in. Claude is helping you write a follow-up sequence. You say "go ahead and send them." Claude calls email.send, then sms.send, then calls.place.

Now imagine the contact list is your imported list — the one you just pulled in from Salesforce. The one that hasn't opted into your sender domain. The one with 12,000 stale numbers attached.

That's a contract-level mistake. Possibly a TCPA mistake. Definitely an awkward email to your client.

Every Harmonia tenant has a global outbound kill switch at Settings → Comms → Outbound. While it's off — and it's off by default for new tenants — no mcp:comms tool can deliver. UI, API, workflow, MCP, doesn't matter. The kill switch wins.

That's not a feature people ask for. It's the floor we built before we shipped the tools above it.

What operators actually use this for

A week in, the pattern that's emerged across early users:

  1. Morning briefs. "Claude, what changed in my pipeline since Friday?" → opportunities.list filtered by updated_at, returned as a summary. Replaces logging into the dashboard for the first coffee of the day.
  2. Stale-deal nudges. "Show me deals nobody's touched in two weeks, and draft a reach-out for each." → opportunities.list + email.draft (a draft, not a send — see kill switch). Then the operator reviews the draft and decides to send manually.
  3. Submission briefs. MCA-specific: "Give me a one-page summary of this deal for Lender X." → Pulls the opp record + lender record
    • cashflow data, generates a one-pager. Saves 20 minutes per submission.
  4. Status spelunking. "Whose calls dropped off this week?" → A reporting query the user would otherwise have to build in the reports module.

None of those are flashy. All of them save time. That's the bet.

What it doesn't change

A few things MCP doesn't fix:

  • Bad data in → bad answers out. If your pipeline stages are garbage, Claude's summary will be garbage. MCP doesn't clean your CRM.
  • Authority. The AI can call opportunities.move_stage. Whether it should is a policy question, not a protocol question. We give you the scopes; you give the AI the keys.
  • Hallucination. Claude is still Claude. It will occasionally invent a contact or pluralize a tag. The tools return real data, but Claude's summary is its own work — read it.

Where this goes next

The next six months on MCP for us:

  • More tools. Workflow execution, sequences, reporting reads.
  • Streaming tool calls. The MCP server currently runs request/response; streaming long-running operations is on the roadmap.
  • Bring-your-own-tool. Custom plan customers will be able to expose their own internal endpoints as MCP tools, scoped to their tenant.
  • Multi-agent routing. Claude → Harmonia is the easy path. Claude → Harmonia → Signl → Notos → Harmonia is the actually interesting path. We're building toward it.

If you want to play with the MCP server, you'll need Pro or Business. Pricing here. Or drop us a line and we'll wire up a sandbox.

— Shane