The first CRM where the agent isn’t a feature.
Anchorr ships an MCP server with 24 tools and 4 composite resources. Wire it into Claude, Cursor, or any MCP-compatible agent and your sales motion becomes a programmable surface — enrich contacts, run sequences, move deals, qualify replies — with a shared cache, audit log, and scoped API keys per agent.
https://mcp.anchorr.app/mcpAuthorization: Bearer ancr_live_…mcp_audit_log with the calling key, parameters, success state, and duration. Every enrichment is logged to enrichment_requests with the per-attempt provider trail and cost in micro-dollars.Enrichment
Resolve contacts and companies through a provider waterfall — Apollo first, Hunter for email-finder/verifier, AI research as the catch-all. Cache is shared with the web product, so a hit from one runtime warms the other.
Resolve a single contact via the waterfall. Provide an email, OR all of (first_name, last_name, domain). Returns the resolved data plus which provider answered, whether it came from cache, per-attempt cost in micro-dollars, and total latency. Optional contact_id additively merges only-empty fields onto that record.
{
"tool": "enrich_contact",
"input": { "email": "[email protected]" }
}
→ {
"data": { "first_name": "Patrick", "last_name": "Collison", "title": "CEO", … },
"resolved_by": "apollo",
"served_from": "provider",
"attempts": [{ "provider": "apollo", "ok": true, "latency_ms": 412, "cost_micros": 50000 }],
"total_cost_micros": 50000
}Resolve a single company via the waterfall. Provide a domain or a name. Hunter has no firmographic product, so the company waterfall is Apollo → AI only. Optional company_id additively merges only-empty fields.
{
"tool": "enrich_company",
"input": { "domain": "stripe.com" }
}
→ {
"data": { "name": "Stripe", "industry": "Financial Services", "size": "8000+", … },
"resolved_by": "apollo",
"served_from": "provider"
}Enrich up to 200 existing contact IDs in a single call. Concurrency capped at 5 to stay under provider rate limits. Each contact gets the same waterfall + only-empty merge. Returns aggregate counts (resolved / cached / missed / errored), total cost, breakdown by provider, and per-contact outcomes — the workflow Clay charges $349/mo for.
{
"tool": "bulk_enrich_contacts",
"input": { "contact_ids": ["a1...", "b2...", "c3..."] }
}
→ {
"processed": 200, "resolved": 142, "cached": 38, "missed": 18, "errored": 2,
"by_provider": { "apollo": 96, "hunter": 31, "ai_research": 53 },
"total_cost_micros": 8245000
}Contacts & Companies
Standard CRUD plus bulk import and sequence enrollment.
List contacts. Filter by status (lead/prospect/customer/churned) or company_id.
{ "tool": "list_contacts", "input": { "status": "prospect", "limit": 50 } }Get a contact with company and custom_fields.
{ "tool": "get_contact", "input": { "id": "uuid" } }Create a contact. If company_name is given, the company is created or linked automatically.
{ "tool": "create_contact", "input": { "first_name": "Ada", "email": "[email protected]", "company_name": "Analytical Engines" } }Bulk-import up to 200 contacts in a single call. Resolves company_name → company_id in batch, dedupes against existing emails, returns per-row errors instead of failing the whole batch.
{ "tool": "bulk_create_contacts", "input": { "contacts": [{ "first_name": "Ada", "email": "[email protected]" }] } }Enroll a contact into a sequence. Starts the contact at step 0 with next_action_at = now + 1 minute.
{ "tool": "enroll_contact_in_sequence", "input": { "contact_id": "uuid", "sequence_id": "uuid" } }List companies. Filter by industry, size, or query.
{ "tool": "list_companies", "input": { "industry": "SaaS" } }Standard company operations.
{ "tool": "create_company", "input": { "name": "Acme", "domain": "acme.com" } }Deals & Pipeline
Move deals through stages, log strategy notes, close won/lost.
List deals filtered by pipeline, stage, owner, or status.
{ "tool": "list_deals", "input": { "stage_id": "uuid" } }Get a deal with contact, company, stage, and recent activities.
{ "tool": "get_deal", "input": { "id": "uuid" } }Create or update a deal. update_deal supports next_step (the single concrete action you owe this deal).
{ "tool": "update_deal", "input": { "id": "uuid", "next_step": "Send pricing Tuesday" } }Move a deal to a new stage. Resets the staleness clock on the deal.
{ "tool": "move_deal_stage", "input": { "deal_id": "uuid", "stage_id": "uuid" } }Mark a deal closed-won or closed-lost. Stamps closed_at and runs deal_won / deal_lost automations.
{ "tool": "close_deal", "input": { "id": "uuid", "won": true } }Sequences & Templates
Programmatic outbound — design, enroll, and run.
List or get a sequence with its ordered steps.
{ "tool": "get_sequence", "input": { "id": "uuid" } }Create or update a sequence with email / wait / task steps. Wait steps use wait_days; email steps use subject + body with {{first_name}}, {{company}} placeholders.
{
"tool": "create_sequence",
"input": {
"name": "Outbound — Payments SaaS",
"steps": [
{ "type": "email", "subject": "Quick question about {{company}}", "body": "Hi {{first_name}}…" },
{ "type": "wait", "wait_days": 3 },
{ "type": "email", "subject": "Re: {{company}}", "body": "Following up…" }
]
}
}Reusable email templates with the same {{placeholder}} system.
{ "tool": "create_template", "input": { "name": "Cold open", "subject": "{{first_name}}", "body": "…" } }Activities
Read the timeline, log calls, create and complete tasks.
List activities filtered by type (email, call, note, meeting, task), contact, company, or deal.
{ "tool": "list_activities", "input": { "contact_id": "uuid", "type": "call" } }Log a call, note, meeting, or email summary against a contact / company / deal.
{ "tool": "log_activity", "input": { "type": "call", "contact_id": "uuid", "subject": "Discovery", "body": "Budget confirmed" } }Create an open task with due_at, mark it complete when done. Tasks show in the global Tasks queue.
{ "tool": "create_task", "input": { "subject": "Send proposal", "due_at": "2026-04-30T17:00:00Z", "deal_id": "uuid" } }Agent
The autonomous agent that runs continuous prospecting + reply qualification on top of the CRM.
Snapshot of agent activity: candidates this week, sending health, replies pending review, last run timestamp.
{ "tool": "get_agent_overview", "input": {} }Read or update the agent's ICP, prospecting cadence, sequence preferences, and autosend rules.
{ "tool": "update_agent_config", "input": { "icp_keywords": ["payments", "SaaS"], "autosend": true } }Review prospects the agent surfaced; approve to enroll, reject with a reason that feeds the agent's learnings.
{ "tool": "update_candidate_status", "input": { "id": "uuid", "status": "rejected", "reason": "Not ICP — outside payments" } }Resources
Composite reads tuned for “prep me for this meeting” / “brief me on this account” style prompts. One resource fetch replaces five or six tool chains.
anchorr://org/overviewPipeline + contacts + agent + tasks snapshot — one fetch instead of many tool calls.
anchorr://deal/{id}/briefDeal + contact + company + recent activities + research, prep-for-meeting style.
anchorr://contact/{id}/briefContact + company + activities + deals + sequence enrollments + research.
anchorr://company/{id}/briefCompany + contacts + deals + activities + research.
Every CRM was built for humans typing into forms. We built one for agents executing pipeline.
The agent layer is the next computing surface. Salesforce and HubSpot are bolting it on; we built around it. MCP isn’t a side door to Anchorr — it’s a first-class entry point with the same data, the same automations, the same audit trail.
When your Cursor agent enriches a lead, it warms the cache the web product reads from. When your in-house agent enrolls a contact in a sequence, the same sequence engine runs it. One system of action, two surfaces, infinite agents.