AI Agent is Our New CRM
MCP-First Software Design and Best Practices
Ben Cheng
Google Developer Expert | Build with AI 2026
Who am I?
- Ben Cheng, CEO @ Oursky / SkyMakers Digital
- Building software products and services since 2008
oursky.com
formx.ai
authgear.com
Section 1
AI Agent is the New UI
Software Today
- Clear things you can point at on the screen
AI Agent Interface
- Chat with verbs: "do this", "show me that", "update the deal"
Problem: Discoverability
- "What can this thing even do?" - classic bad UI problem
- But: people are getting comfortable (chat box is everywhere now)
Solution: give users sample prompts of what they can do
What My CRM Agent Can Do
/daily Full briefing: overdue leads, tasks, meetings, key contacts
/company Add ACME Corp
Look up companies
/person Add Jane Doe from ACME
Manage contacts
/deal New deal with ACME
Manage deals across 3 pipelines
/meeting Log a discovery meeting with Jane
/note ACME is evaluating FormX
/task Send proposal to ACME by Friday
Problem: It's Slow
- Agent thinking + tool calls + response = seconds to minutes
- Especially bad with thinking/reasoning mode enabled
- Visual indication of progress is critical
- For non-tech users: stream token output so they see something happening
- User adaptation: learn to multi-task while agent works
Best of Both Worlds - UI Inside Chat
- Generate UI components inline within conversation
- Claude Artifacts: Generate full HTML/React inside chat
- Google A2A / A2UI: Agent-to-UI protocol
- Vercel AI SDK: JSON schema to rendered components
Practical Reality - Web UI for Reports
- I still have a web dashboard for common pipeline reports
- Sales team uses it for quick scanning (pipeline.html)
- Agent for operations, Web UI for visualization
It's not agent vs UI. It's agent + UI, each where it fits best.
[ Quick demo of pipeline report ]
Section 2
MCP-First Software Design
Why Build This Way?
Not just because it's cool. It enables:
- Auto-draft email replies and sales follow-up emails (CRM to Gmail)
- Auto-generate weekly sales pipeline reports
- Meeting transcript → Notes → Internal Deals Memo, automatically
- Any sales can compose workflows across tools without custom code
Now imagine how much people can do if every software at a company is MCP-first and agent-friendly.
WTF is MCP?
- Model Context Protocol - open standard by Anthropic
- Lets AI agents call external tools and access data
- Think of it as "USB-C for AI agents" - one protocol, many services
- Your app exposes capabilities as MCP tools
- Any MCP-compatible agent can use them
Why Remote MCP?
Local MCP / CLI
- Requires terminal
- Config files, IT setup
- Fine for developers
- Not for your sales team
Remote MCP
- Click a link
- Login via OAuth
- Done
- Works for everyone
"Local MCP is a developer tool. Remote MCP is infrastructure for the organization."
Remote MCP Setup
Remote MCP - OAuth 2.1
- Login via OAuth - each user has their own identity and permissions
- Scopes limit what the agent is authorized to do
- No more shared admin API keys with god-mode access
- Optionally: ClientID Metadata Document / Dynamic Client Registration
- We use Authgear for the OAuth layer
Design Tip #1
Design for Human Usage
- "RESTful" MCP tools are not enough
- CRUD is for developers, not users
- Think: what would your user actually ask?
Instead of...
- call
list_leads
- call
list_tasks
- call
list_key_persons
One tool:
check_due_items
- All overdue leads, tasks, key contacts in one shot
Design Tip #2
The N+1 Problem
- If you mirror REST APIs: agent calls
search_leads (N results), then N x get_lead_details
- AI is smart - it tries to fetch everything and filter locally
- Result: expensive (tokens), slow (round trips)
Solution: Denormalize - return rich data in list results
Trick: set MAX_MCP_OUTPUT_TOKENS low in Claude Code to force efficient tool design
Design Tip #3
Design for Tokens
- Denormalization modes: concise vs detailed
- Add more filters so agents fetch less data
- Always limit to first N results
- Include clear message: "Showing 10 of 47. Ask agent to refine search."
Every token costs money and adds latency.
Design Tip #4
Unknown Parameters
- AI hallucinates new parameters:
list_leads(name_contains="ACME")
- Your tool doesn't support
name_contains - it silently ignores it
- The call "works" but returns wrong results
Log unknown parameters - it's free user research.
Shows you what users actually want from your MCP tools.
Design Tip #5
It's for AI Agents!
- Write clear, specific tool descriptions - agents read them
- Don't make tools too similar (agent gets confused)
- Sometimes
execute_sql just works - AI is already great at SQL
- Think about tool composition: how will agents chain your tools?
MCP = Enforcement
- Guided by code
- Authorization, permissions, data validation
- Audit trail on every mutation
- Financial calculations, compliance rules
- The server enforces what users can and cannot do
Skills = Guidance
- Guided by team knowledge and domain expertise
- Best practices, workflow advice, templates
- Easy to change - updated daily by the team
- "How should I qualify this lead?" "What's the deal health checklist?"
- The skill guides; the human decides
The Tricky Question
"We don't want duplicate companies/persons in the CRM"
Should the duplicate check be in Skills or MCP tools?
Skills
- Warn the user
- Suggest existing matches
- Let them decide
MCP
- Enforce uniqueness
- Reject duplicates at the server
Answer: both - Skills guide ("did you mean this company?"), MCP enforces (reject exact duplicates)
How I Built It
- Started with a plan document, then coded for 3 days for v1
- 10 Agent Skills layered on top
- Run code review agents for every non-trivial commit
Unit Testing / TDD
- Test-driven development with AI coding agents works really well
- Tests are the specification - agent reads tests, writes implementation
- Catches regressions when agent refactors code
- Chrome DevTools MCP - very useful for testing agent-generated UI in real-time
Tests are not for coverage metrics. They're the spec your AI agent reads.
First-Class Artifacts
- Execution Plans - structured plans before coding starts
- Business Rules / Design Specs - the agent's requirements doc
- CLAUDE.md - project context that persists across sessions
These documents ARE the product spec, not throwaway prompts.
CLAUDE.md
# CRM Project
## MCP Server
- Base URL: https://mcp.example.com
- Auth: OAuth 2.1 (Authgear)
- Stack: TypeScript, Hono, SQLite, Fly.io
## Pipelines
- Services (Oursky): Lead → Discovery → Proposal → Closing → Won/Lost
- FormX.ai: Trial → Onboarding → Active → Expansion
- Authgear: similar to FormX
## Skills Available
- /daily, /company, /person, /deal, /meeting, /note, /task
## Conventions
- All amounts in USD unless noted
- Lead = unqualified, Deal = qualified opportunity
The agent reads this every session - it's the source of truth
Takeaways
- AI Agents are a new form of software, not a chat layer on existing apps
- MCP-first: design tools for agents, add UI on top (not the other way around)
- Remote MCP + OAuth: the only path for non-developer users — For Now
- Skills + MCP: guidance vs enforcement, both needed
- The next Salesforce might not have a traditional UI at all
Questions?
Ben Cheng | @chpapa
oursky.com
formx.ai
authgear.com