π Overview
The Sprouts MCP Server provides AI assistants with powerful prospect intelligence tools through the Model Context Protocol. Built on Cloudflare Workers, it offers secure OAuth authentication, persistent storage, and advanced search capabilities across 35+ million company profiles.
Production Server URL: https://sprouts-mcp-server.kartikay-dhar.workers.dev
Key Highlights
7 Core Tools for prospect intelligence and data management
Advanced AI Features including decision maker analysis and career path tracking
π οΈ Available Tools
Tool Name | Purpose | Access Type |
sprouts_data_intelligence | Natural language prospect search with AI-powered ranking | Read-only |
move_to_sprouts | Transfer contacts/accounts to Sprouts platform | Write |
query_templates | Create and manage reusable search templates | Read/Write |
query_refinement | AI-powered query optimization and suggestions | Read/Write |
search_history | Search analytics and pattern recognition | Read/Write |
icp_analysis | Ideal Customer Profile management and analysis | Read/Write |
sprouts_user_preferences | Configure user settings and field preferences | Read/Write |
π Authentication
OAuth 2.0 Flow
The server implements industry-standard OAuth 2.0 authentication
Discovery Endpoint
GET /.well-known/oauth-protected-resource
Response:
json
{
"resource": "https://sprouts-mcp-server.kartikay-dhar.workers.dev",
"authorization_servers": ["https://sprouts.scalekit.dev/resources/res_107781942316893193"],
"bearer_methods_supported": ["header"],
"scopes_supported": ["mcp:read", "mcp:write"],
"resource_name": "Sprouts AI MCP Server"
}
Authentication Process
Discovery - MCP client fetches OAuth metadata from well-known endpoint
Authorization - User redirected to OAuth portal for authentication
Grant Access - User authorizes the requested scopes
Token Issuance - Client receives access token
API Access - Client includes token in requests: Authorization: Bearer <token>
π Quick Start
Claude Desktop Configuration
Add to your claude_desktop_config.json:
json
{
"mcpServers": {
"sprouts-ai": {
"command": "npx",
"args": [
"mcp-remote",
]
}
}
}
βΉοΈ Note: The MCP client automatically handles OAuth authentication flow
π API Endpoints
Endpoint | Method | Purpose |
/health | GET | Health check and system status |
/sse | GET | Establish Server-Sent Events stream |
/sse | POST | Send MCP JSON-RPC messages |
/mcp | POST | Direct MCP JSON-RPC endpoint |
/.well-known/oauth-protected-resource | GET | OAuth discovery metadata |
π Tool Reference Guide
1οΈβ£ sprouts_data_intelligence
Purpose: Search for prospects using natural language queries with advanced AI-powered analysis
Parameters
Parameter | Type | Required | Description |
query | string | β | Natural language search query |
pageSize | number | β | Results per page (1-100, default: 100) |
ranking | object | β | AI ranking configuration |
decisionMaker | object | β | Decision maker analysis settings |
clustering | object | β | Result clustering configuration |
careerPath | object | β | Career progression analysis |
booleanQuery | object | β | Boolean query parsing (AND/OR/NOT) |
fieldSelection | object | β | Optimize response fields and token usage |
Example: Basic Search
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "sprouts_data_intelligence",
"arguments": {
"query": "find VP of Sales at SaaS companies in San Francisco with 50-200 employees",
"pageSize": 10
}
},
"id": "1"
}
2οΈβ£ move_to_sprouts
Purpose: Transfer contacts or accounts from search results to your Sprouts platform
Parameters
Parameter | Type | Required | Description |
type | string | β | Either "contacts" or "accounts" |
ids | array | β | Array of IDs from sprouts_data_intelligence results |
β οΈ Important: Use contact_id for contacts and account_id for accounts (32-character hex strings)
Example: Move Contacts
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "move_to_sprouts",
"arguments": {
"type": "contacts",
"ids": [
"140e2602efcc47c191bda2b85e20fad5",
"3e64d01b4d194d2f8153039171302cc9"
]
}
},
"id": "4"
}
3οΈβ£ query_templates
Purpose: Create and manage reusable search templates with variables
Available Actions
list - View all templates
search - Find templates by keyword
get - Retrieve specific template
create - Create new template
populate - Fill template with variables
categories - List template categories
popular - Get most-used templates
stats - Template usage statistics
export - Export templates
Example: Create Template
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "query_templates",
"arguments": {
"action": "create",
"template": {
"name": "Enterprise Decision Makers",
"description": "Find C-level executives at enterprise companies",
"template": "find {title} at {industry} companies with more than {employee_count} employees in {location}",
"variables": [
{"name": "title", "default": "CTO"},
{"name": "industry", "default": "technology"},
{"name": "employee_count", "default": "1000"},
{"name": "location", "default": "United States"}
],
"category": "enterprise"
}
}
},
"id": "6"
}
4οΈβ£ query_refinement
Purpose: AI-powered query analysis and optimization suggestions
Available Actions
analyze - Analyze query effectiveness
refine - Get refinement suggestions
suggestions - Category-specific suggestions
options - Available refinement options
stats - Refinement statistics
preferences - View refinement preferences
save_preferences - Save user preferences
export - Export refinement data
Refinement Categories
location - Geographic refinements
industry - Industry-specific suggestions
company_size - Company size filters
job_title - Job title variations
5οΈβ£ search_history
Purpose: Track, analyze, and learn from search patterns
Available Actions
list - View search history
get - Retrieve specific search
analytics - Search performance analytics
patterns - Identify search patterns
recommendations - Get search suggestions
clear - Clear history
export - Export search data
import - Import historical data
stats - Usage statistics
Example: Get Analytics
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_history",
"arguments": {
"action": "analytics",
"dateFrom": "2025-01-01T00:00:00Z",
"dateTo": "2025-01-14T23:59:59Z"
}
},
"id": "7"
}
6οΈβ£ icp_analysis
Purpose: Ideal Customer Profile management and prospect analysis
Available Actions
setup - Configure company ICP profile
analyze - Analyze prospect fit
update - Update ICP criteria
view_profile - View current ICP
generate_report - Create ICP report
recommendations - Get targeting recommendations
history - View analysis history
delete - Remove ICP profile
Analysis Types
demographic - People-based analysis
firmographic - Company-based analysis
behavioral - Activity-based analysis
technographic - Technology stack analysis
comprehensive - All analysis types
Example: Setup ICP
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "icp_analysis",
"arguments": {
"action": "setup",
"companyInfo": {
"name": "Acme Corp",
"industry": "B2B SaaS",
"description": "Enterprise sales automation platform",
"targetIndustries": ["Technology", "Financial Services", "Healthcare"],
"targetCompanySizes": ["mid-size", "large", "enterprise"],
"targetJobTitles": ["VP Sales", "CRO", "Head of Revenue"],
"targetSeniority": ["senior", "executive"],
"targetLocations": ["United States", "United Kingdom", "Canada"]
}
}
},
"id": "5"
}
7οΈβ£ sprouts_user_preferences
Purpose: Configure personal preferences for optimized searches
Available Actions
get - View current preferences
set - Set all preferences
update - Update specific preferences
reset - Reset to defaults
stats - Preference statistics
export - Export preferences
import - Import preferences
list_field_sets - Available field sets
list_search_attributes - Available search attributes
list_ranking_options - Ranking configuration options
list_decision_maker_options - Decision maker settings
list_advanced_features - Advanced feature options
help - Get help documentation
Available Field Sets
Field Set | Purpose | Use Case |
contact_essentials | Basic contact info | Quick lookups |
lead_qualification | Lead scoring data | Sales qualification |
sales_outreach | Outreach-ready data | Email campaigns |
decision_maker | Decision maker insights | Strategic selling |
company_research | Deep company data | Market research |
recruiting | Hiring-focused data | Talent acquisition |
market_research | Market intelligence | Competitive analysis |
data_enrichment | Comprehensive data | CRM enrichment |
event_targeting | Event attendance data | Event marketing |
content_marketing | Content engagement | Content strategy |
full_dataset | All available fields | Complete analysis |
π‘ Advanced Features
Boolean Query Support
Perform complex searches using Boolean operators:
json
{
"query": "(Marketing Manager OR Growth Lead) AND SaaS NOT agency",
"booleanQuery": {
"enabled": true,
"parseComplexQueries": true
}
}
Career Path Analysis
Track prospect career progression and readiness:
json
{
"careerPath": {
"enabled": true,
"includeProgression": true,
"includeReadiness": true
}
}
Result Clustering
Organize results by common attributes:
json
{
"clustering": {
"enabled": true,
"strategy": "industry_focused", // or "geographic", "seniority_levels"
"maxClusters": 10,
"minClusterSize": 3
}
}
Decision Maker Analysis
Identify key decision makers with AI scoring:
json
{
"decisionMaker": {
"industry": "fintech",
"companySize": "startup",
"saleType": "enterprise",
"solution": "software"
}
}
Smart Field Selection
Optimize token usage and response size:
json
{
"fieldSelection": {
"fieldSet": "sales_outreach",
"excludeHighVolume": true,
"responseMode": "data",
"maxEstimatedTokens": 5000
}
}
π― Complete Usage Examples
Example 1: Enterprise Sales Prospecting
Scenario: Find CTOs at Series A fintech startups in New York
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "sprouts_data_intelligence",
"arguments": {
"query": "CTO or VP Engineering at fintech startups in New York that raised Series A",
"pageSize": 25,
"ranking": {
"targetCompanySize": "startup",
"targetIndustry": "fintech",
"targetSeniority": "executive",
"boostKeywords": ["AI", "machine learning", "blockchain"]
},
"decisionMaker": {
"industry": "fintech",
"companySize": "startup",
"saleType": "enterprise",
"solution": "software"
},
"clustering": {
"enabled": true,
"strategy": "seniority_levels"
}
}
},
"id": "2"
}
Example 2: Boolean Search with Field Optimization
Scenario: Find marketing leaders at SaaS companies (excluding agencies)
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "sprouts_data_intelligence",
"arguments": {
"query": "(Marketing Manager OR Growth Lead) AND SaaS NOT agency",
"pageSize": 50,
"booleanQuery": {
"enabled": true,
"parseComplexQueries": true
},
"fieldSelection": {
"fieldSet": "sales_outreach",
"excludeHighVolume": true
}
}
},
"id": "3"
}
Example 3: Complete Workflow - Search, Analyze, and Import
Step 1: Search for prospects
json
{
"name": "sprouts_data_intelligence",
"arguments": {
"query": "VP of Sales at e-commerce companies in California",
"pageSize": 20
}
}
Step 2: Move qualified leads to Sprouts
json
{
"name": "move_to_sprouts",
"arguments": {
"type": "contacts",
"ids": ["140e2602efcc47c191bda2b85e20fad5", "3e64d01b4d194d2f8153039171302cc9"]
}
}
Step 3: Analyze search patterns
json
{
"name": "search_history",
"arguments": {
"action": "patterns"
}
}
β οΈ Error Handling
Standard Error Format
json
{
"jsonrpc": "2.0",
"id": "1",
"error": {
"code": -32600,
"message": "Invalid request format"
}
}
Error Code Reference
Code | Error Type | Description | Solution |
-32600 | Invalid Request | Malformed JSON-RPC | Check JSON syntax |
-32601 | Method Not Found | Unknown MCP method | Verify method name |
-32602 | Invalid Params | Missing/invalid parameters | Check required fields |
-32603 | Internal Error | Server-side error | Retry or contact support |
-32001 | Authentication Required | Missing/invalid OAuth token | Re-authenticate |
Authentication Error Example
json
{
"jsonrpc": "2.0",
"id": null,
"error": {
"code": -32001,
"message": "Authentication required: Missing Authorization header"
}
}
π§ Troubleshooting Guide
Issue: 401 Unauthorized Error
Symptoms: Requests fail with authentication error
Possible Causes:
Missing Bearer token
Expired access token
Invalid token format
Solutions:
Verify MCP client supports OAuth 2.0
Confirm client discovers /.well-known/oauth-protected-resource
Check token hasn't expired
Re-authenticate through OAuth flow
Issue: Empty Search Results
Symptoms: Query returns zero results
Possible Causes:
Query too restrictive
Malformed natural language query
Invalid search parameters
Solutions:
Use complete natural language sentences
Broaden search criteria
Enable query expansion:
json
{
"queryHandling": {
"allowTimeExpansion": true,
"allowNumberExpansion": true,
"expansionStrategy": "moderate"
}
}
Issue: Invalid Tool Name Error
Symptoms: -32601 Method not found error
Possible Causes:
Incorrect tool name spelling
Wrong case sensitivity
Hyphen vs underscore confusion
Solutions: Use exact tool names:
β sprouts_data_intelligence
β sprouts-data-intelligence
β sproutsDataIntelligence
Issue: Move Operation Fails
Symptoms: move_to_sprouts returns error
Possible Causes:
Invalid ID format
Wrong ID type (contact vs account)
IDs not from search results
Solutions:
Extract IDs directly from sprouts_data_intelligence results
Use account_id field for accounts
Use contact_id field for contacts
Verify IDs are 32-character hex strings
Ensure IDs exist in the system
ποΈ Development Guide
Local Development Setup
bash
# Clone repository
cd mcp-server
# Install dependencies
npm install
# Run development server
npm run dev
# Run tests
npm test
# Deploy to production
npm run deploy
Environment Configuration
Required Secrets
Configure via wrangler.toml or using Wrangler CLI:
bash
# OAuth Configuration (Scalekit)
wrangler secret put SCALEKIT_ENVIRONMENT_URL
wrangler secret put SCALEKIT_CLIENT_ID
wrangler secret put SCALEKIT_CLIENT_SECRET
wrangler secret put SCALEKIT_RESOURCE_ID
# Sprouts API Configuration
wrangler secret put SPROUTS_API_KEY
wrangler secret put SPROUTS_API_SECRET
# Move to Sprouts Configuration
wrangler secret put MOVE_TO_SPROUTS_TOKEN
wrangler secret put MOVE_TO_SPROUTS_EMAIL
wrangler secret put MOVE_TO_SPROUTS_CUSTOMER_ID
Configuration File Example
wrangler.toml:
toml
name = "sprouts-mcp-server"
main = "src/index.js"
compatibility_date = "2024-01-01"
[[kv_namespaces]]
binding = "SPROUTS_MCP_KV"
id = "your-kv-namespace-id"
[vars]
ENVIRONMENT = "production"
π Performance Metrics
Service Level Objectives
Metric | Target | Current |
Response Time (P95) | < 200ms | ~150ms |
Uptime | 99.9% | 99.95% |
Rate Limit | 100ms between requests | Enforced |
Request Timeout | 30 seconds | Configured |
Max Token Result | 25,000 tokens | Compliant |
Rate Limiting
Minimum 100ms between consecutive requests
Burst capacity: 10 requests
Recovery time: 1 second
π Support & Resources
Contact Information
π Website: sprouts.ai
βοΈ Support Email: [email protected]
π Documentation: sprouts.ai/docs
π¬ Slack Community: Join our Slack
Legal & Privacy
π Privacy Policy: sprouts.ai/privacy-policy
π Terms of Service: sprouts.ai/terms
π‘οΈ Data Processing Agreement: sprouts.ai/dpa
π Security: sprouts.ai/security
Technical Resources
π Server Information
Property | Value |
Status | π’ Production Ready |
Version | 1.0.0 |
Last Updated | January 2025 |
License | MIT License |
Maintained By | Sprouts.ai Team |
π Getting Started Checklist
Review authentication requirements
Configure OAuth credentials
Add server to Claude Desktop config
Test with basic search query
Explore advanced features
Set up field preferences
Create custom query templates
Configure ICP profile
Review error handling
Bookmark support resources
π‘ Need Help? Contact our support team at [email protected] or visit our documentation portal