GrowthKit Revenue Intelligence
About
Sales intelligence for DACH & EU SMEs — lead scoring, ICP fit, CRM enrichment & writeback.
Details
- Author
- growthkit-tools
- Downloads
- 308
- Categories
- Other
Jump to
- Structured marketing memory with semantic search and version history
- ICP lead scoring with per-dimension breakdowns
- CRM read and writeback (Twenty live; more on roadmap)
- Company and person enrichment, email finding and verification
- Campaign creation, lead import, and lifecycle triage
- Guided playbooks for onboarding, ICP workshop, and weekly review
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
GrowthKit Revenue IntelligenceCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server to any MCP-compatible client (e.g., Claude Desktop, ChatGPT, Cursor) by configuring the URL https://mcp.growthkit.tools in the mcpServers section. On first connect, you will be taken through an OAuth screen where you paste your GrowthKit token or click "Try the demo" for a read-only sample workspace.
embedMemory
Store knowledge into long-term memory. Supports single items and batch embedding (max 50). IMPORTANT — Chapter System: Every memory MUST be classified into exactly one chapter via metadata.chapter. Available chapters: icp, strategy, campaigns, analytics, brand, competitors, learnings, general, pipeline, signals, playbook. Always analyze the content and pick the most specific chapter. Use general only as a last resort. BEFORE STORING: Search target chapter first to check for duplicates. QUALITY: 50-300 words, specific and factual, one concept per memory. AUTO-TAGGING: Before saving ANY memory, search the playbook chapter for 'tag-taxonomy' to load the current tag taxonomy. Then add 3-7 relevant tags as a comma-separated string in metadata.tags (e.g. metadata: { chapter: 'campaigns', tags: 'saas,series-a,dach,linkedin,demand-gen' }). Pick the most specific tags from the taxonomy. You may add 1-2 free-form tags if needed. For batch embeds, tag each item individually. PLAYBOOK SYSTEM: Available playbooks: icp-workshop, onboarding, campaign-brief, weekly-review, competitor-analysis, content-brief. When the user asks to do any of these tasks, use prompts/get to load the full playbook and follow its steps.
searchMemory
Search long-term memory using semantic similarity. ALWAYS SEARCH BEFORE ANSWERING marketing/strategy questions. Use short, specific keywords as queries. Available chapters: icp, strategy, campaigns, analytics, brand, competitors, learnings, general, pipeline, signals, playbook. TAG FILTERING: Memories are auto-tagged. Use metadata_filter with tags key to filter (e.g. metadata_filter: { chapter: 'campaigns', tags: 'linkedin' }).
listMemories
List stored memories with pagination. Filter by chapter using metadata_filter.chapter.
updateMemory
Update content or metadata of a stored memory. Use to enrich, fix, or reclassify. You MUST provide a change_reason explaining WHAT changed and WHY. The reason is stored in the version history audit log.
deleteMemories
Delete memories by IDs. Always confirm with user first. You MUST provide a change_reason explaining WHY these memories should be deleted. The reason is stored in the version history audit log.
clearMemories
Delete ALL memories. Irreversible. Always ask for explicit confirmation. You MUST provide a change_reason.
countMemories
Count memories, optionally filtered by chapter via metadata_filter.chapter.
getChapterOverview
Get memory count per chapter. Use as FIRST STEP in new conversations or reviews.
uploadDocument
Upload a file to GrowthKit document storage. Optionally extracts text and embeds insights.
listDocuments
List stored documents with optional filtering by category or chapter.
getDocument
Get a specific document with fresh download URL and linked insights.
deleteDocument
Delete a document and its associated insights.
createReminder
Schedule a reminder. Convert relative times to ISO 8601.
listReminders
List reminders. Filter by status.
cancelReminder
Cancel a pending reminder by ID.
getHistory
Get the version history of a specific memory. Shows all previous versions with timestamps and who made changes.
restoreVersion
Restore a memory to a previous version. Works for both existing and deleted memories. Use version_id from getHistory or listDeleted results.
listDeleted
List recently deleted memories that can be restored. Shows content preview and deletion info.
listTeam
List all team members (token holders) for your account. Shows display names, roles, and identifies which token is yours.
sendNotification
Send a notification to a team member. First use listTeam to find the recipient. For 2-person teams, the recipient is auto-resolved.
checkNotifications
Check for unread notifications (direct messages and broadcasts).
crmSearchCompany
Search CRM for a company by name. ALWAYS search before creating to avoid duplicates.
crmGetCompany
Get full company details by ID. Returns name, domain, industry, employees, address, CRM link.
crmCreateCompany
Create a new company. ALWAYS search first to avoid duplicates.
crmGetCompanyDeals
Get all deals linked to a company.
crmGetCompanyContacts
Get all contacts linked to a company.
crmSearchContact
Search CRM for a contact by name.
crmListCompanies
List companies from CRM with structured filters. Use for segment queries like 'all pharma companies with 50-200 employees in DACH'. All filter fields optional. Returns companies with id, name, industry, employees, country, and pagination info. Unlike crmSearchCompany (which does fuzzy name search), this does precise structured filtering.
crmListPeople
List people/contacts from CRM with structured filters. Use for segment queries like 'all CEOs in pipeline companies'. All filter fields optional.
crmGetContact
Get full contact details by ID.
crmCreateContact
Create a new contact. ALWAYS pass company_id when the company exists.
crmGetPipelines
Get all pipelines with stages. ALWAYS call before creating deals to get valid stage_id.
crmCreateDeal
Create a new deal. Requires title + stage_id. MUST call crmGetPipelines first.
crmUpdateDeal
Update a deal. Use generic names: company_id, contact_id, expected_close.
crmGetDeal
Get full deal details by ID.
crmAddNote
Add a note to a deal, company, or contact.
crmCreateActivity
Create a follow-up task/call/meeting.
crmCheckConnection
Check if CRM is connected and which provider is active.
enrichCompany
Get company info by domain or name. Returns industry, employees, revenue, location, technologies.
enrichPerson
Get person profile from email or LinkedIn URL.
findContacts
Find contacts at a company. Filter by seniority or department.
findEmail
Find one person's email by name + domain.
verifyEmail
Check if an email is deliverable. Use before outreach.
scoreLeads
Trigger lead scoring against ICP for this user's CRM companies. Scores each (company, contact) pair on 4 dimensions (industry 35%, employees 25%, geo 20%, seniority 20%) with missing-data renormalization. Use mode='full' for all companies, 'delta' for new/changed since last run, 'company_ids' for specific IDs. Persists to lead_scores table; read results via getTopLeads. Returns counts and per-user summary. Requires Pro plan (active or trialing). Write-operation — scores are persisted to lead_scores table.
getTopLeads
Retrieve the highest-scoring leads from the CRM, ranked by ICP fit. Returns company details, contact (if any), 4-dimension score breakdown, and qualitative reasons like 'Industry X — strong match to ICP'. By default filters out leads with <50% data completeness to avoid false-positives from data-sparse ICP matches (e.g. leads where only the contact's seniority matched but industry/employees/country are unknown). Override via filters.min_completeness if you want incomplete leads too. Requires scoreLeads to have been run at least once. Requires Pro plan. Read-only — does not trigger new scoring. Call scoreLeads first if your CRM has new companies or ICP has changed (check icp_version_hash in the response to detect staleness).
email_compose
Compose an email via the user's connected email provider (currently Gmail; Microsoft 365 coming in Phase B). DEFAULT mode is 'draft' — creates a real draft in Gmail that the user can review before sending. Only use mode='send' when the user explicitly confirms sending with keywords like 'sende', 'schick raus', 'verschicken', 'send it', 'raus damit'. On 'draft' success, response includes draft_url the user can click to open the draft in Gmail. On 'send' success, response includes a tracking_id (1×1 pixel auto-injected for open-tracking). The From address is resolved server-side (5-level precedence: explicit from > user-token integration > user-token default > account default > account email) — do NOT fabricate a From address. Optional crm_deal_id links the message to a deal for future activity writeback. Requires active email provider OAuth connection.
createCampaign
Create a new campaign briefing. Use after collecting the 7 required fields via the campaign-briefing-playbook (search 'campaign-briefing-playbook' in playbook chapter to load the methodology). Sets status='draft'. Returns the created campaign id. NEVER call this without first running the playbook conversation — every campaign needs a complete briefing.
listCampaigns
List campaigns for the current user, optionally filtered by status. Returns campaign metadata plus per-stage lead counts.
getCampaign
Get a single campaign with full briefing details and lead-stage counts.
updateCampaign
Update fields on an existing campaign. Pass only the fields to change.
addCampaignLeads
Add one or more leads to a campaign. Standard fields (company_name, contact_email, etc.) go to typed columns. ANY OTHER FIELD you pass automatically gets stored in the metadata jsonb column — no schema migration needed for new fields. Examples of custom fields: booth_number, source_event, scanned_at, follow_up_priority, notes_from_call. Call getCampaignLeadFields first to discover what custom fields are already used in this campaign.
getCampaignLeadFields
Discover which fields are actually used in a campaign's leads. Returns standard columns with non-null values PLUS all metadata (custom) keys with usage counts and sample values. ALWAYS call this BEFORE asking the user about lead structure or before adding new custom fields — it tells you what's already established for this list.
updateCampaignLead
Update fields on an existing campaign lead. Pass lead_id (UUID from listCampaignLeads) and an updates object with only the fields to change. Use this to mark leads as rejected, manually correct enrichment data, or attach custom metadata. Setting lifecycle_stage='rejected' REQUIRES rejected_reason in the same call. The metadata field is shallow-merged into existing metadata jsonb — existing keys are preserved unless overwritten by the same key. Score/dim_*/icp_version_hash are NOT writable here (those come from scoreLeads). crm_external_id/crm_synced_at are NOT writable either (CRM-Sync owns those).
listCampaignLeads
List leads in a campaign, optionally filtered by lifecycle_stage or enrichment_status. Returns up to 100 per call.
setWorkingMemory
Store structured state for the current chat session. Use this to persist data that must survive history compression — wizard fields, suggestion lists, active entities. Three kinds: 'wizard' (multi-turn field collection), 'working_set' (ephemeral suggestion lists with TTL), 'pinned_entity' (durable context). Call this AFTER the user confirms a value, BEFORE moving to the next step. The state object replaces (not merges) — fetch first if you need to merge.
getWorkingMemory
Retrieve the current state for a (kind, key) in the current session. Returns null if not set. Use this when you need to merge into existing state or verify what's stored. NOTE: Active working memory entries are ALSO automatically injected into the system prompt by Build Messages — you usually don't need to call this manually. Only call when you need a specific record's full state on-demand.
createTask
Create a prioritized task. Provide the four ICE inputs (impact, confidence, effort_constraint, effort_nonconstraint); the DB computes ice_score. Show the inputs to the user for confirmation before calling.
listTasks
List tasks in the workspace, ranked by ICE (highest first). Optional filters.
getOpenTasks
Return the workspace's open/in-progress tasks ranked by ICE (highest priority first) plus the total open count. Call this at the START of any planning, prioritization, or 'what should I work on next' discussion to ground the conversation in current open tasks before advising.
updateTask
Update fields of a task. Partial update; status='done' sets done_at automatically. ice_score recomputes when impact/confidence/effort change.
setTaskWeights
Set the workspace effort weights (constraint vs non-constraint lane) and optional display labels. Re-stamps open tasks so their ICE re-ranks.
toggleStep
Hakt einen Step eines Tasks ab/an. done weglassen = flippen.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"growthkit revenue intelligence": {
"growthkit": {
"url": "https://mcp.growthkit.tools"
}
}
}
}
McpServers
{
"growthkit": {
"url": "https://mcp.growthkit.tools"
}
}
GrowthKit Revenue Intelligence — MCP Server
https://mcp.growthkit.tools
- Hosted: remote MCP over Streamable HTTP, OAuth 2.0 with PKCE. No local install.
---
Quick start
Add the server to any MCP-compatible client (Claude Desktop, Claude.ai, ChatGPT, Cursor, VS Code, Cline, …): ``json
{
"mcpServers": {
"growthkit": {
"url": "https://mcp.growthkit.tools"
}
}
}
`
On first connect you'll be taken through an OAuth screen. Paste your GrowthKit
token (gk_…) to connect your own workspace, or click Try the demo to explore
a read-only sample workspace — no signup required.
Don't have a token yet? See plans & pricing: https://growthkit.tools/en/pricing
---
What it does
GrowthKit organises GTM knowledge into a chaptered memory (icp, strategy,
campaigns, analytics, brand, competitors, learnings, pipeline, signals, playbook)
and lets the assistant read and write that memory, score leads against your ICP,
enrich companies and contacts, and push the result back into your CRM.
Capability areas
- Structured marketing memory — semantic search, batch embedding, auto-tagging, full version history with an audit trail.
- ICP lead scoring — scores company/contact pairs against your ICP and surfaces the highest-fit leads, with per-dimension breakdowns and data-completeness filtering.
- CRM read & writeback — search/create companies, contacts and deals; structured segment queries; notes and follow-up activities. (Twenty live; Pipedrive, HubSpot, Salesforce and others on the roadmap.)
- Enrichment — company and person enrichment, contact discovery, email finding and verification.
- Campaigns — create and manage campaign briefings, import and triage leads through their lifecycle.
- Tasks & reminders — ICE-prioritised tasks and scheduled reminders.
- Email — draft or send via your connected Gmail account (Microsoft 365 on the roadmap).
- Guided playbooks — onboarding, ICP workshop, competitor analysis, campaign brief, content brief and weekly review (available on the Growth and Pro plans).
> Discovery methods (tools/list, prompts/list, resources/list) are open so
> registries and inspectors can enumerate capabilities without authenticating.
> Everything that touches your data is gated behind OAuth and role-/plan-based
> access control.
---
Roles & access
Access is scoped by token type — admin, team, view — with chapter-level
read/write permissions, plus a read-only demo surface. Plan-gated features
(such as the guided playbook bodies) additionally require a Growth or Pro plan.
---
Architecture
`
MCP client ──▶ Cloudflare Worker (this repo) ──▶ Supabase Edge Functions ──▶ Postgres
│ (EU / Frankfurt)
└─ OAuth 2.0 (PKCE), role/plan gating, demo surface
``
This repository contains the Cloudflare Worker that speaks the MCP protocol,
handles the OAuth flow, enforces role- and plan-based access control, and routes
tool calls to the GrowthKit backend. The backend itself (scoring logic, database,
automation) is not part of this repository.
EU-hosted (Supabase, Frankfurt). GDPR-aligned.
---
Links
- Website: https://growthkit.tools - MCP overview: https://growthkit.tools/en/mcp - Pricing: https://growthkit.tools/en/pricing - Smithery: https://smithery.ai/server/growthkit/revenue-intelligence --- <sub>GrowthKit is built in public. This repository is the MCP server surface only; the product backend and proprietary GTM logic live elsewhere.</sub>Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



