📊 Attribution Engine
Multi-touch attribution models to understand which channels, campaigns, and touchpoints drive revenue.
Pain Point: B2B buyers complete 57-70% of their research before contacting sales. The average buying group is now 22 people—making multi-touch attribution essential.Source: WWB, LinkedIn 2025
{ "model": "w_shaped", "total_revenue": 85000, "touchpoints": [...] }Returns available attribution models: first_touch, last_touch, linear, u_shaped, w_shaped, custom.
Channel-level attribution data with revenue contribution percentages.
Define custom weight distributions across touchpoints.
🎯 ICP Intelligence
AI-powered Ideal Customer Profile detection and scoring.
Pain Point: High-quality leads increase conversion rates by up to 70%. Misaligned ICPs waste resources and slow profit growth.Source: Industry Research
{ "icp_score": 87, "tier": "A" }Returns the current ICP model with firmographic and technographic criteria.
Batch-score your entire account base against the ICP model.
🔍 Lead Enrichment
Real-time firmographic, technographic, and demographic enrichment.
Pain Point: Poor data quality costs organizations an average of $12.9 million annually. B2B contact data decays 22-70% per year.Source: Gartner
{ "person": { "title": "VP of Revenue Operations" }, "company": {...} }Returns firmographic, technographic, and financial data for a company.
Enrich up to 1,000 leads in a single request. Returns async job ID.
📡 Intent Signals
Capture first-party and third-party buying signals.
Pain Point: Buyers complete 57-70% of research before contacting sales. Intent data helps you engage before competitors.Source: WWB
{ "intent_score": 78, "trending_topics": ["revenue operations", "sales forecasting"] }Record a first-party intent signal (page view, content download, etc.).
🎰 Lead Scoring
AI-powered lead scoring combining fit, engagement, and intent signals.
{ "score": 82, "grade": "A", "recommended_action": "route_to_ae" }Returns the current lead scoring model with weight distribution.
Score up to 500 leads in a single batch request.
🚦 Lead Router
Intelligent lead routing based on territory, capacity, round-robin, or skill-based assignment.
Route with SLA tracking and assignment reasoning.
Returns active routing rules and priority order.
Update routing configuration with new rules and priorities.
⏱️ Pipeline Velocity
Track and optimize how deals move through your pipeline.
Stage-by-stage velocity with bottleneck identification.
Detailed stage metrics including conversion rates and average time in stage.
🎲 Deal Scoring
AI deal health scores with risk signals and win probability.
Returns deal score, win probability, and next-best-action.
Risk signals, engagement gaps, and competitive alerts for a deal.
📈 Forecasting
AI-powered revenue forecasting with waterfall analysis and scenario modeling.
{ "ai_forecast": 3150000, "confidence_interval": [2850000, 3450000] }Weighted pipeline forecast with category breakdowns.
👤 Customer 360
Unified customer profile aggregating CRM, product usage, and engagement data.
Complete customer context with health score and activities.
Chronological activity feed across all connected systems.
⚠️ Churn Prediction
AI-powered churn risk scoring with early warning signals.
{ "churn_risk": 0.23, "risk_level": "medium", "risk_signals": [...] }List of all tracked churn signals and their weight in the model.
📈 Expansion Intelligence
Identify upsell and cross-sell opportunities from usage patterns.
{ "expansion_score": 84, "expansion_potential": 45000, "opportunities": [...] }Score expansion potential based on product usage and fit.
🗺️ Territory Management
Design, balance, and optimize sales territories using data-driven insights. Geo-spatial mapping, account scoring, and dynamic territory assignment.
Pain Point: Only 25% of B2B sales reps hit quota in 2024—down from the traditional 70% benchmark. Poorly structured territories lead to uneven workloads and rep attrition.Source: SPOTIO 2025
{
"territories": [{
"id": "terr_west_enterprise",
"name": "West - Enterprise",
"owner": { "name": "Sarah Chen" },
"metrics": { "total_accounts": 234, "balance_score": 0.82 }
}]
}AI-powered territory design with balance optimization.
🎯 Quota Planning
Set fair, achievable quotas aligned to market potential. Top-down and bottom-up planning with scenario modeling.
Pain Point: 91% of organizations missed quota expectations in 2024. 87% set quotas without a systematic method. Average seller hit only 74% of quota.Source: QuotaPath, CaptivateIQ 2025
{
"plan_id": "quota_fy2026",
"company_target": 12000000,
"total_quota_assigned": 14400000,
"attainment_forecast": { "projected_attainment": 0.78 }
}Quota attainment by rep, team, and segment with trend analysis.
👥 Capacity Planning
Determine optimal sales headcount to hit revenue targets. Factor in ramp time, attrition, and productivity.
Pain Point: Sales reps spend only 28% of their time actually selling. 68% say note-taking and admin tasks consume the most time. Only 11% feel confident during customer calls.Source: Salesroom 2024
{
"model_id": "cap_2026_enterprise",
"capacity_gap": 2640000,
"hiring_plan": { "total_hires_needed": 6 }
}Compare hiring scenarios with revenue impact projections.
💰 Sales Compensation
Design, calculate, and manage incentive compensation plans. Commission calculations, accelerators, SPIFs, and MBO tracking.
Pain Point: Only 50% of companies provide reps with real-time visibility into their compensation and performance. Without dashboards, reps only find out they missed quota at quarter-end.Source: CaptivateIQ 2025
{
"rep_id": "usr_sarah_chen",
"earnings": { "base_commission": 12500, "total_variable": 19250 },
"attainment": { "quota": 100000, "achieved": 125000, "pct": 1.25 }
}List all active compensation plans with structure and accelerator tiers.
🧹 Data Quality
Automated data hygiene: duplicate detection, normalization, and decay monitoring.
AI-powered duplicate detection with fuzzy matching.
Overall data quality score with field-level completeness metrics.
Full scan of your CRM data with issue detection and remediation suggestions.
🔗 Integrations
Manage CRM, marketing automation, and data warehouse connections.
View all connected systems with sync status.
Initiate OAuth or API key connection to a new system.
Real-time sync status with last sync time and record counts.
🤖 AI Agents
Deploy specialized AI agents: deal analyzer, forecast narrator, pipeline coach.
Invoke specialized agents like "deal-analyzer" or "forecast-narrator".
Create and configure a custom AI agent with specific capabilities.
Current agent status, recent invocations, and performance metrics.
Model Context Protocol Integration
Customer City provides a native MCP server following the Model Context Protocol specification. Connect AI agents (Claude, GPT, custom agents) directly to your RevOps data using standardized JSON-RPC 2.0 messaging.
Why MCP: MCP eliminates the "M x N integration problem"—instead of building custom connectors for each AI tool x each data source, implement once and interoperate with any MCP-compatible client. Created by Anthropic in November 2024, now governed by the Linux Foundation's Agentic AI Foundation (AAIF) with support from OpenAI, Google, Microsoft, AWS, and Block.Source: MCP Spec 2025-11-25
REST API vs MCP Server: When to Use Each
- Your engineering team writes integration code
- Traditional HTTP requests (GET/POST/PUT/DELETE)
- Webhooks, Zapier, custom apps
- Full control over implementation
- AI agents connect with minimal integration code
- JSON-RPC 2.0 with tool/resource/prompt primitives
- Claude Desktop, GPT, Cursor, VS Code, custom agents
- AI discovers capabilities automatically via protocol
MCP Architecture
┌─────────────────┐ ┌─────────────────┐
│ AI Application │ │ Customer City │
│ (Claude, GPT, │◄──── JSON-RPC 2.0 ────▶│ MCP Server │
│ Cursor, etc.) │ (stdio/HTTP+SSE) │ │
│ │ │ Exposes: │
│ Embeds MCP │ │ • Tools │
│ Client SDK │ │ • Resources │
└─────────────────┘ │ • Prompts │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Your CRM Data │
│ • Salesforce │
│ • HubSpot │
│ • Pipeline │
│ • Forecasts │
└─────────────────┘🚀 Quick Start
Get connected in minutes. Choose your integration method based on your use case.
Add to your Claude Desktop or Cursor MCP configuration file:
{
"mcpServers": {
"customercity": {
"command": "npx",
"args": ["-y", "@customercity/mcp-server"],
"env": {
"CUSTOMER_CITY_API_KEY": "your-api-key",
"CUSTOMER_CITY_ORG_ID": "your-org-id"
}
}
}
}Config locations: macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%\Claude\claude_desktop_config.json
For production deployments, connect via HTTP with Server-Sent Events:
// 1. First, get an OAuth token (see Authentication section)
// 2. Initialize MCP session
POST https://mcp.customercity.com/v1
Authorization: Bearer {oauth_access_token}
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "your-agent-name",
"version": "1.0.0"
}
}
}Use the official MCP SDKs (97M+ monthly downloads):
# Python pip install mcp # TypeScript/Node.js npm install @modelcontextprotocol/sdk # C# / .NET dotnet add package ModelContextProtocol
Full SDK documentation: modelcontextprotocol.io
🔐 Authentication
MCP servers are OAuth 2.1 Resource Servers per the June 2025 spec update. Customer City MCP supports both API key (for local/stdio) and OAuth 2.0 (for production HTTP) authentication.
For Claude Desktop, Cursor, and local development, use environment variables:
API keys inherit the permissions of the user who created them. Create scoped keys in Settings → API Keys.
For production HTTP+SSE connections, use OAuth 2.0 with PKCE:
// OAuth Endpoints Authorization Server: https://auth.customercity.com Authorization Endpoint: https://auth.customercity.com/oauth/authorize Token Endpoint: https://auth.customercity.com/oauth/token // Resource Indicator (RFC 8707) Resource: https://mcp.customercity.com/v1 // Available Scopes revops:read // Read pipeline, forecast, accounts revops:write // Modify data via tools revops:admin // Territory & quota management
POST https://auth.customercity.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&redirect_uri={your_redirect_uri}
&client_id={your_client_id}
&code_verifier={pkce_code_verifier}
&resource=https://mcp.customercity.com/v1// Invalid or expired token
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "Unauthorized: Invalid or expired access token"
}
}
// Insufficient scope
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32002,
"message": "Forbidden: Scope 'revops:write' required for this tool"
}
}🛠️ MCP Tools
Tools allow AI models to execute actions. Each tool is a function the AI can invoke to query data or perform operations on your behalf.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_pipeline_summary",
"arguments": { "period": "Q1_2026" }
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "Pipeline Summary for Q1_2026:\\n- Total: $3.2M\\n- Deals: 47\\n- Weighted: $1.8M"
}]
}
}Returns AI-generated risk assessment with signals and next-best-actions.
Returns forecast with confidence intervals and waterfall analysis.
Natural language search: "Find enterprise fintech accounts showing buying intent"
Real-time commission calculation with accelerators and SPIFs.
📦 MCP Resources
Resources expose read-only data that AI models can access for context. Unlike tools (which execute actions), resources provide data the AI can reference.
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": { "uri": "revops://pipeline/current" }
}Forecast snapshots, historical accuracy, category breakdowns.
Territory structure, ownership, and balance metrics.
Full account context including opportunities, contacts, activities.
💬 MCP Prompts
Pre-built prompt templates for common RevOps workflows. Users can invoke these as slash commands or quick actions in their AI client.
{
"jsonrpc": "2.0",
"id": 1,
"method": "prompts/get",
"params": {
"name": "weekly_forecast_review",
"arguments": { "include_risks": true }
}
}Next steps, stakeholder mapping, competitive positioning.
Executive summary, wins/losses, next quarter outlook.
⚡ Rate Limits & Best Practices
Understand limits and optimize your MCP integration for production workloads.
X-RateLimit-Limit: 500 X-RateLimit-Remaining: 487 X-RateLimit-Reset: 1706140800
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32029,
"message": "Rate limit exceeded. Retry after 12 seconds.",
"data": { "retry_after": 12 }
}
}1. Use Resources for context, Tools for actions
Resources are cached and don't count toward rate limits. Load context via resources, then use tools sparingly for actions.
2. Implement exponential backoff
On rate limit errors, wait retry_after seconds, then retry with exponential backoff (2s, 4s, 8s...).
3. Batch when possible
Use search_accounts with filters instead of individual get_account calls.
4. Cache tool results client-side
Pipeline summaries and forecasts don't change frequently. Cache results for 5-15 minutes.
🤔 REST API vs MCP: When to Use Each
Choose the right integration approach for your use case.
- Webhooks & event-driven integrations
- Zapier / Make / n8n workflows
- Custom dashboards & reports
- Batch data processing
- Deterministic, auditable pipelines
- AI assistants (Claude, GPT, Copilot)
- Conversational analytics
- Dynamic tool discovery & chaining
- IDE integrations (Cursor, VS Code)
- Natural language data queries