GrowthKit Revenue Intelligence
REMOTE · MCP.GROWTHKIT.TOOLS · SCANNED AUG 3
Sales intelligence for B2B SMEs — lead scoring, ICP fit, CRM enrichment & writeback.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security91
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 8054 tokens (~111/item across 72 items; 66 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (9% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mcp.growthkit.tools
claude mcp add --transport http tools-growthkit-revenue-intelligence https://mcp.growthkit.tools/
[mcp_servers.tools-growthkit-revenue-intelligence] url = "https://mcp.growthkit.tools/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tools-growthkit-revenue-intelligence": {
"type": "remote",
"url": "https://mcp.growthkit.tools/",
"enabled": true
}
}
} openclaw mcp add tools-growthkit-revenue-intelligence --url https://mcp.growthkit.tools/ --transport streamable-http
mcp_servers:
tools-growthkit-revenue-intelligence:
url: "https://mcp.growthkit.tools/" {
"mcpServers": {
"tools-growthkit-revenue-intelligence": {
"type": "http",
"url": "https://mcp.growthkit.tools/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +5
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 72
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://mcp.growthkit.tools
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=growthkit.tools | CN=WE1,O=Google Trust Services,C=US | 13 Jun 2026 | 11 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | 153581986f53df2c13c9f3b39afdf073 |
| SANs: growthkit.tools, mcp.growthkit.tools | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC secure
Validation of mcp.growthkit.tools. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| tools. | present | 13831 | 8 | Verified |
| growthkit.tools. | present | 2371 | 13 | Verified |
| mcp.growthkit.tools. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.growthkit.tools/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://mcp.growthkit.tools/.well-known/oauth-protected-resource" Protected resource metadata
| Document | https://mcp.growthkit.tools/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.growthkit.tools |
| Authorisation server | https://mcp.growthkit.tools |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.growthkit.tools | Verified | 200 | |
| http (plaintext) | http://mcp.growthkit.tools | HTTPS enforced | 301 | https://mcp.growthkit.tools/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
place_call Place Call (app-private) ~111
APP-PRIVATE: initiates a click-to-call to one lead from the user's own verified caller ID. Not model-callable (hidden via _meta.ui.visibility:["app"]). Invoked only by the lead-call-card iframe when the human clicks ☎ Anrufen. The gk_ session token is taken server-side; the app passes campaign_lead_id only.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_lead_id | string | yes | ID of the campaign lead to call (campaign_lead_id from show_callable_leads' structuredContent). |
No output schema declared.
No examples provided.
restoreVersion Restore Memory Version ~62
Restore a memory to a previous version. Works for both existing and deleted memories. Use version_id from getHistory or listDeleted results.
| Name | Type | Req | Description |
|---|---|---|---|
| version_id | string | yes | The version ID (restore_id) to restore to. Get this from getHistory or listDeleted. |
No output schema declared.
No examples provided.
save_call_outcome Save Call Outcome (app-private) ~148
APP-PRIVATE: saves the post-call disposition / note / next action for one call. Not model-callable (hidden via _meta.ui.visibility:["app"]). Invoked only by the lead-call-card iframe after a call. The gk_ session token is taken server-side; the app passes call_log_id (from place_call) plus optional disposition / notes / next_action.
| Name | Type | Req | Description |
|---|---|---|---|
| call_log_id | string | yes | call_log_id returned by place_call in its structuredContent. |
| disposition | string | — | Optional call disposition. |
| next_action | object | — | Optional follow-up reminder (typically for a callback disposition). |
| notes | string | — | Optional free-text note about the call. |
No output schema declared.
No examples provided.
scoreLeads Lead Scoring: Run ~213
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_ids | array | — | CRM company IDs to score. Required and only used when mode='company_ids'. Max 100 recommended per call. |
| mode | string | yes | Scoring scope. 'full' scores all companies (slow for >1k). 'delta' scores only companies updated since last run or not yet scored (recommended for routine updates). 'company_ids' scores a specific li… |
No output schema declared.
No examples provided.
searchMemory Search Memory ~169
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' }).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results. Default: 10. |
| match_threshold | number | — | Min similarity (0-1). Default: 0.5. |
| metadata_filter | object | — | Filter by metadata. Use chapter to search within a specific chapter. |
| query | string | yes | Search keywords — short and specific. |
No output schema declared.
No examples provided.
sendNotification Send Notification ~107
Send a notification to a team member. First use listTeam to find the recipient. For 2-person teams, the recipient is auto-resolved.
| Name | Type | Req | Description |
|---|---|---|---|
| broadcast | boolean | — | If true, sends to ALL team members. Default: false. |
| context | object | — | Optional context, e.g. {chapter: 'icp'}. |
| message | string | yes | The notification message to send. |
| to_prefix | string | — | Recipient's token_prefix or display_name from listTeam. |
No output schema declared.
No examples provided.
setTaskWeights Set Task Weights ~128
Set the workspace effort weights (constraint vs non-constraint lane) and optional display labels. Re-stamps open tasks so their ICE re-ranks.
| Name | Type | Req | Description |
|---|---|---|---|
| label_constraint | string | — | Optional display label for the constraint lane (e.g. 'Engineering'). |
| label_nonconstraint | string | — | Optional display label for the non-constraint lane (e.g. 'Design'). |
| w_constraint | number | yes | Weight for the constraint (bottleneck) effort lane in the ICE score. |
| w_nonconstraint | number | yes | Weight for the non-constraint effort lane in the ICE score. |
No output schema declared.
No examples provided.
setWorkingMemory Working Memory: Set ~330
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | Logical identifier within a kind. Examples: 'campaign_briefing', 'lead_candidates', 'active_campaign'. Use snake_case. |
| kind | string | yes | wizard = multi-turn field collection. working_set = ephemeral suggestion lists with TTL. pinned_entity = durable context across turns. |
| session_id | string | yes | The current chat session_id. REQUIRED. Comes from the conversation context. |
| state | object | yes | The full state object to store. Replaces any previous state for this (kind, key). Schema is free-form but conventions: wizard = { fields, required, collected, current_step }; working_set = { items, c… |
| status | string | — | Default 'active'. Set to 'completed' when a wizard finishes successfully (triggers completed_at timestamp). |
| ttl_turns | integer | — | Optional TTL in user-turns. After this many turns, the record auto-expires. NULL/omit = permanent (typical for wizard and pinned_entity). Use 5 for working_set / suggestion lists. |
No output schema declared.
No examples provided.
show_callable_leads ☎ Show Callable Leads ~186
Render an interactive call card of leads that have a phone number, each with a ☎ Anrufen button. The HUMAN user clicks a button to place a click-to-call from their own verified caller ID. This tool ONLY displays the card — it never places a call itself, and there is no model-callable call tool (UWG § 7: calls are human-initiated only). Optionally scope to one campaign_id; omit it to aggregate all callable leads across the user's campaigns. Use when the user asks to see or call leads (e.g. "zeig mir anrufbare Leads", "welche Leads kann ich anrufen").
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | — | Optional campaign UUID (from listCampaigns). Omit to aggregate callable leads across all campaigns. |
| limit | integer | — | Max leads to render. Default 50, max 100. |
No output schema declared.
No examples provided.
toggleStep Toggle Step ~129
Check off or re-open a single step in a task's checklist. Provide the task `id` and the `step_id` of the step to toggle. Omit `done` to flip the step's current state; set done=true/false to force a specific state (idempotent). Use when the user completes or reopens a checklist item on a task that has steps.
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | — | Omit to flip the current state. |
| id | string | yes | Task UUID. |
| step_id | string | yes | ID of the step to toggle (from the task's steps). |
No output schema declared.
No examples provided.
updateCampaign Campaign: Update ~304
Update fields on an existing campaign. Pass only the fields to change.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | ID of the campaign to update (from listCampaigns). |
| channels | array | — | Outreach channels for this campaign. |
| end_date | string | — | Optional ISO date YYYY-MM-DD. Null = open-ended. |
| icp_snapshot | object | — | Frozen ICP for this campaign. May be a narrowed variant of the global ICP. |
| messaging_angle | string | — | The hook in the first email/message — the news/trend/insight that earns the read. |
| name | string | — | Short campaign label, 3-200 chars. |
| notes | string | — | Optional internal notes about the campaign. |
| offer | string | — | The concrete CTA, NOT the product name. E.g. 'Free 30-day pilot'. |
| pain_hypothesis | string | — | ONE sentence stating the specific pain this campaign assumes the persona has. |
| persona_snapshot | object | — | Frozen target persona for this campaign. |
| product_snapshot | object | — | Frozen product info. Schema: { name, description, value_props[], differentiators[], pricing_hint }. |
| start_date | string | — | ISO date YYYY-MM-DD. |
| status | string | — | Campaign status: draft | active | paused | completed | archived. |
| success_metric | object | — | { type: 'replies'|'demos'|'sqls'|'pipeline_eur', target: number } |
No output schema declared.
No examples provided.
updateCampaignLead Campaign: Update Lead ~172
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).
| Name | Type | Req | Description |
|---|---|---|---|
| lead_id | string | yes | UUID of the campaign_lead to update |
| updates | object | yes | Object with fields to change. metadata is shallow-merged. |
No output schema declared.
No examples provided.
updateMemory Update Memory ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| change_reason | string | yes | REQUIRED: Why this memory is being updated, e.g. 'Added Q2 metrics', 'Fixed company name', 'User requested update'. Stored in audit log. |
| embedding_id | string | yes | ID of the memory to update. |
| new_content | string | — | Updated text content. |
| new_metadata | object | — | Optional metadata to replace, e.g. chapter or tags. |
No output schema declared.
No examples provided.
updateTask Update Task ~225
Update fields of a task. Partial update; status='done' sets done_at automatically. ice_score recomputes when impact/confidence/effort change.
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | string | — | Time horizon: now | next | later | follow-up. |
| confidence | number | — | ICE confidence, 0-1 (probability the impact materializes). |
| detail | string | — | Optional longer description of the task. |
| effort_constraint | integer | — | Effort on the bottleneck lane (see workspace label_constraint). |
| effort_nonconstraint | integer | — | Effort on the non-bottleneck lane. |
| id | string | yes | ID of the task to update (from listTasks). |
| impact | integer | — | ICE impact, 1-10 (higher = more impact). |
| owner | string | — | Assignee (free text). |
| status | string | — | New status: open | in_progress | done | dropped. |
| steps | array | — | Replace the task's checklist. Omit to leave unchanged. |
| title | string | — | Optional new task title. |
No output schema declared.
No examples provided.
uploadDocument Upload Document ~136
Upload a file to GrowthKit document storage. Optionally extracts text and embeds insights.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | Optional storage category. |
| chapter | string | — | Optional memory chapter to associate extracted insights with. |
| description | string | — | Optional short description of the document. |
| extract_insights | boolean | — | If true, extract text and embed insights into memory. Default: false. |
| file_base64 | string | yes | Base64-encoded file content. |
| filename | string | yes | Filename with extension. |
| mime_type | string | yes | MIME type. |
| title | string | — | Optional document title. Defaults to the filename. |
No output schema declared.
No examples provided.
verifyEmail Verify Email ~34
Check if an email is deliverable. Use before outreach.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address to verify for deliverability. |
No output schema declared.
No examples provided.