artefact-mcp-server
The Artefact Revenue Intelligence MCP Server provides AI-native revenue and GTM intelligence for B2B teams, treating GTM strategy like version-controlled code. It exposes three core tools plus structured methodology resources:
RFM Analysis (
run_rfm): Score clients on Recency, Frequency, and Monetary value; segment them into 11 categories (e.g., Champions, Lost); extract ICP patterns from top performers; and receive tier recommendations — with industry presets (B2B service, SaaS, manufacturing) and configurable scoring thresholds.ICP Qualification (
qualify): Score a prospect against a 14.5-point model across Firmographic Fit (5 pts), Behavioral Fit (5 pts), and Strategic Fit (4.5 pts); receive a 4-tier classification, detailed score breakdown, constraint context mapping, and recommended engagement strategy — using either a HubSpot company ID or raw JSON data.Pipeline Health Scoring (
score_pipeline_health): Calculate an overall health score (0–100) with velocity metrics, stage-to-stage conversion rates, bottleneck identification, and at-risk/stalled deal detection — filterable by HubSpot pipeline ID.Methodology Resources: Access 10 structured resources covering scoring models, RFM segments, SPICED framework, signal taxonomy, value engines, revenue formula, GTM commit anatomy, and more — enabling AI agents to reason about and propose structured GTM changes.
All tools work with live HubSpot data (via HUBSPOT_API_KEY) or built-in demo data (source="sample") with no API key required. Custom HubSpot property mappings are also supported.
Provides revenue intelligence tools to analyze HubSpot data, including RFM (Recency, Frequency, Monetary) segmentation, 14.5-point ICP qualification, and pipeline health scoring.
Artefact Revenue Intelligence MCP Server
This repository is archived and is not the source of the published package.
It stopped tracking releases at 0.3.3 (February 2026) while the published package continued to 0.5.1. Anything here is stale by several minor versions and should not be read as describing current behaviour.
To install or use the server:
artefact-mcpon PyPIFor the product: artefactventures.com/mcp
A maintained public mirror is planned for the product launch. Until then, treat PyPI as the only current artifact.
The AI-native interface to your Revenue Operating System. Version-controlled GTM intelligence — signals, commits, and closed-loop measurement — accessible to any AI agent.
A Model Context Protocol (MCP) server that treats your Go-to-Market strategy like code: versioned, diffable, and deployable. Detect pipeline signals, identify scaling constraints, analyze value engines, and draft structured GTM changes — all through AI-native tool calls. Built on the Artefact Formula methodology from real B2B consulting engagements.
Why Artefact MCP?
Traditional ICP models stop at firmographics. We triangulate across three dimensions to identify prospects with the right profile, the right behaviors, AND the right trajectory.
Feature | HubSpot Official MCP | Generic Wrappers | Artefact MCP |
CRUD operations | Yes | Yes | Via HubSpot API |
RFM Analysis | No | No | 11-segment classification |
ICP Triangulation | No | No | Firmographic + Behavioral + Growth Signals |
Pipeline Health | No | No | 0-100 health score + exit criteria testing |
Signal Detection | No | No | 6-type signal taxonomy |
Constraint Analysis | No | No | Dominant bottleneck + Revenue Formula |
Value Engine Analysis | No | No | Growth / Fulfillment / Innovation |
GTM Commit Drafting | No | No | Structured change proposals with evidence |
Methodology built-in | No | No | Artefact Formula (10 resources) |
Works without API key | No | No | Yes (demo data) |
Related MCP server: HubSpot RevOps MCP Server
Who Is This For?
B2B revenue teams using HubSpot who want AI-powered signal detection and pipeline intelligence
RevOps managers who need constraint analysis and value engine health accessible from Claude or Cursor
Consultants who deliver RFM analysis, ICP scoring, and evidence-backed GTM recommendations to clients
Developers building revenue intelligence integrations with MCP
AI agents that need a structured interface to reason about and propose changes to GTM strategy
Tools
Signal Intelligence
detect_signals — Pipeline Signal Detection
Scans pipeline data for all 6 signal types from the Artefact signal taxonomy: velocity anomalies, conversion drop-offs, win/loss patterns, pipeline concentration, data quality issues, and SPICED frequency signals. Returns structured signal objects with strength scores (0-1), evidence, and recommended actions.
identify_constraint — Dominant Constraint Analysis
Identifies which of the 4 scaling constraints (Lead Generation, Conversion, Delivery, Profitability) is bottlenecking revenue. Includes Revenue Formula breakdown (Traffic x CR1 x CR2 x CR3 x ACV) with gap-to-benchmark analysis and recommended focus.
analyze_engine — Value Engine Health
Analyzes health of the 3 value engines: Growth (create/capture/convert demand), Fulfillment (onboard/deliver/renew/expand), and Innovation (gather/prioritize/build/launch). Returns engine-specific metrics, health scores, and integrated signal detection.
propose_gtm_change — GTM Commit Drafting
Enables AI agents to propose structured GTM changes following the commit anatomy: Intent, Diff, Impact Surface, Risk Level, Evidence, and Measurement Plan. Supports 8 entity types (ICP, persona, positioning, pipeline stage, exit criteria, GTM motion, scoring model, playbook).
Analysis Tools
run_rfm — RFM Analysis
Scores clients on Recency, Frequency, and Monetary value. Segments them into 11 categories (Champions through Lost) and extracts ICP patterns from top performers. Now includes signal framing — detects win/loss patterns, revenue concentration, and at-risk client signals. Supports B2B service, SaaS, and manufacturing presets.
qualify — ICP Triangulation Framework
Scores prospects across three dimensions: Firmographic Fit (industry, revenue, employees, geography), Behavioral Fit (tech stack, engagement, purchase history), and Growth Signals (hiring, funding, expansion). Now includes constraint context — maps prospect fit to your dominant scaling constraint. Returns tier classification (Ideal / Strong / Moderate / Poor) with engagement strategy.
score_pipeline_health — Pipeline Health Score
Analyzes open deals for velocity metrics, stage-to-stage conversion rates, bottleneck identification, and at-risk deal detection. Now supports optional exit criteria testing (pass/fail per criterion per deal) and includes signal framing for velocity anomalies and conversion drop-offs. Returns a 0-100 health score.
Resources
URI | Description |
| ICP Triangulation Framework technical reference |
| 4-tier classification system |
| 11 RFM segment definitions with scoring scales |
| SPICED discovery framework |
| HubSpot data setup and enrichment requirements |
| 3 value engine definitions (Growth, Fulfillment, Innovation) with stages and metrics |
| Standard pipeline exit criteria per stage with proof requirements |
| 4 scaling constraints with diagnostic criteria and remediation levers |
| 6 signal types with detection methods and action mappings |
| Revenue Formula breakdown: Traffic x CR1 x CR2 x CR3 x ACV x (1/Churn) |
| 5 components of a structured GTM commit (intent, diff, impact, risk, evidence) |
Data Requirements for ICP Triangulation
⚠️ Important: The qualify tool requires specific data across all three dimensions:
✅ Native HubSpot data (Firmographic + Partial Behavioral):
Firmographic Fit: Industry, revenue, employees, geography — standard properties
Behavioral Fit (Partial): Tech stack, content engagement, purchase history — custom properties or workflows
⚠️ Requires external enrichment (Clay, Clearbit, or manual research):
Growth Signals (Behavioral Fit — Critical Dimension): Hiring trends, funding rounds, product launches, expansion signals, press mentions
HubSpot does NOT track growth signals natively
Without growth signals: You lose the third dimension of triangulation — prospect momentum and buying power indicators
See full guide: Ask your AI assistant to read methodology://data-requirements for complete setup instructions and Clay integration workflow.
Quick Start
Install via PyPI
pip install artefact-mcpInstall via Smithery
npx @smithery/cli install artefact-revenue-intelligenceClaude Code
claude mcp add artefact-revenue -- uvx artefact-mcpThen ask:
"What signals are you detecting in my pipeline?"
"What's our dominant scaling constraint?"
"Analyze the health of our Growth Engine"
"Propose a GTM change: narrow ICP to SaaS companies with 50-200 employees"
"Run an RFM analysis on our HubSpot data"
"Qualify this prospect: SaaS company, $5M revenue, 80 employees in Ontario"
"Score our pipeline health with exit criteria testing"
Claude Desktop
Add to claude_desktop_config.json:
Recommended (Python method):
{
"mcpServers": {
"artefact-revenue": {
"command": "python3",
"args": ["-m", "artefact_mcp"],
"env": {
"HUBSPOT_API_KEY": "pat-na1-xxxxxxxx"
}
}
}
}Alternative (uvx method):
{
"mcpServers": {
"artefact-revenue": {
"command": "uvx",
"args": ["artefact-mcp"],
"env": {
"HUBSPOT_API_KEY": "pat-na1-xxxxxxxx"
}
}
}
}Note: If using uvx and seeing "Server disconnected" errors, see the Troubleshooting section below.
Cursor
Add to .cursor/mcp.json:
Recommended (Python method):
{
"mcpServers": {
"artefact-revenue": {
"command": "python3",
"args": ["-m", "artefact_mcp"],
"env": {
"HUBSPOT_API_KEY": "pat-na1-xxxxxxxx"
}
}
}
}Alternative (uvx method):
{
"mcpServers": {
"artefact-revenue": {
"command": "uvx",
"args": ["artefact-mcp"],
"env": {
"HUBSPOT_API_KEY": "pat-na1-xxxxxxxx"
}
}
}
}Programmatic (Python)
from artefact_mcp.tools.signals import detect_signals
from artefact_mcp.tools.constraints import identify_dominant_constraint
from artefact_mcp.tools.engines import analyze_engine
from artefact_mcp.tools.gtm_commits import propose_gtm_change
from artefact_mcp.tools.rfm import run_rfm_analysis
from artefact_mcp.tools.icp import qualify_prospect
from artefact_mcp.tools.pipeline import score_pipeline
# Signal detection (no HubSpot key needed)
signals = detect_signals(source="sample")
# Dominant constraint analysis
constraint = identify_dominant_constraint(source="sample", quota=500000)
# Value engine health
engine = analyze_engine(engine_type="growth", source="sample")
# GTM commit drafting
commit = propose_gtm_change(
entity_type="icp",
change_description="Narrow ICP to SaaS companies with 50-200 employees",
signal_type="win_loss_pattern",
signal_data={"win_rate_saas": 0.45, "win_rate_other": 0.22},
)
# RFM with sample data
results = run_rfm_analysis(source="sample", industry_preset="b2b_service")
# ICP qualification
score = qualify_prospect(company_data={
"industry": "SaaS",
"annual_revenue": 10_000_000,
"employee_count": 80,
"geography": "Quebec",
"tech_stack": ["HubSpot", "Google Analytics"],
"growth_signals": ["hiring", "funding"],
"content_engagement": "active",
"decision_maker_access": "c_suite",
"budget_authority": "dedicated",
"strategic_alignment": "strong",
})
# Pipeline health with exit criteria
health = score_pipeline(source="sample", exit_criteria=[
{"stage": "Discovery", "criterion": "SPICED complete", "required_proof": "All 6 SPICED fields populated"}
])Troubleshooting
Server Disconnected Errors (uvx PATH issue)
Problem: Claude Desktop shows "MCP artefact-revenue: Server disconnected" error when using uvx as the command.
Cause: Claude Desktop (and other sandboxed applications) may not have access to uvx in your PATH. This commonly happens when uvx is installed via:
Homebrew →
~/.local/bin/uvxcurl installation →
~/.cargo/bin/uvxor other locations
Solutions:
Use Python method (recommended): Switch to
python3 -m artefact_mcpmethod (see Claude Desktop section above). Python is always in PATH.Use full uvx path: Find your uvx location and use the full path:
# Find uvx location which uvx # Example output: /Users/yourname/.local/bin/uvxThen update your config with the full path:
{ "mcpServers": { "artefact-revenue": { "command": "/Users/yourname/.local/bin/uvx", "args": ["artefact-mcp"], "env": {} } } }Verify manually: Test that the MCP server starts correctly:
uvx artefact-mcp==0.3.3 # Should see: "Artefact Revenue Intelligence MCP Server running..."
Other Issues
Issue: Tools return "No HubSpot API key" errors.
Solution: Ensure HUBSPOT_API_KEY is set in your MCP server configuration. Or use source="sample" to test with demo data first.
Issue: Import errors when using python3 -m artefact_mcp.
Solution: Ensure the package is installed: pip install artefact-mcp or pip install --upgrade artefact-mcp.
Configuration
Variable | Required | Description |
| No | HubSpot private app token. Without it, tools work with |
| No | License key for Pro/Enterprise tier. Free tier (sample data) works without a key. |
| No | Path to JSON file with custom HubSpot property mappings (Pro/Enterprise only). |
| No | Path to JSON file with custom RFM scoring thresholds (Pro/Enterprise only). |
Custom Property Mappings (Pro/Enterprise)
If your HubSpot instance uses custom property names for behavioral and strategic fit data, you can configure property mappings. This allows the qualify tool to automatically fetch and score all ICP dimensions from your HubSpot data.
Create a JSON configuration file (e.g., artefact_property_mapping.json):
{
"tech_stack": "technologies_used",
"tech_stack_delimiter": ",",
"growth_signals": ["linkedin_hiring_count", "recent_funding_amount", "press_mentions"],
"growth_signal_keywords": {
"linkedin_hiring_count": "hiring",
"recent_funding_amount": "funding",
"press_mentions": "press"
},
"content_engagement": "hubspot_engagement_score",
"content_engagement_thresholds": {
"active": 10,
"occasional": 3
},
"decision_maker_access": "primary_contact_role",
"budget_authority": "budget_category",
"strategic_alignment": "revenue_ops_conviction"
}Set the environment variable:
export ARTEFACT_PROPERTY_MAPPING_PATH=/path/to/artefact_property_mapping.jsonAvailable Configuration Options:
Property | Type | Description | Default |
| string | HubSpot property name for tech stack | None |
| string | Delimiter for parsing text fields |
|
| array | List of HubSpot properties indicating growth | None |
| object | Map property names to signal keywords |
|
| string | HubSpot property for engagement score | None |
| object | Thresholds for active/occasional |
|
| string | Strategic fit property | None |
| string | Budget authority property | None |
| string | Strategic alignment property | None |
Example HubSpot Properties:
Common custom properties to map:
Tech Stack:
tech_stack_used,technologies,crm_platformGrowth Signals:
linkedin_job_postings_count,recent_funding_round,press_mentions_count,new_office_openedContent Engagement:
hs_analytics_num_page_views,email_engagement_scoreStrategic Fit:
primary_contact_role,budget_category,growth_conviction
The qualify tool will automatically fetch and score these custom properties when a property mapping is configured.
Example Configuration Files:
Two example configurations are included in the repository:
property_mapping.example.json— Full configuration with all available optionsproperty_mapping.minimal.example.json— Minimal configuration for growth signals only
Copy the appropriate example file and customize it for your HubSpot instance:
cp property_mapping.minimal.example.json my_property_mapping.json
# Edit my_property_mapping.json with your HubSpot property names
export ARTEFACT_PROPERTY_MAPPING_PATH=$(pwd)/my_property_mapping.jsonCustom RFM Thresholds (Pro/Enterprise)
Pro/Enterprise users can customize RFM scoring thresholds to match their industry or business model. The built-in presets (b2b_service, saas, manufacturing) may not perfectly fit your buying cycles or revenue ranges.
Create an RFM threshold configuration file (e.g., rfm_thresholds.json):
{
"recency_days": [60, 180, 365, 730],
"recency_scores": [5, 4, 3, 2, 1],
"frequency_counts": [5, 3, 2, 1],
"frequency_scores": [5, 4, 3, 2, 1],
"monetary_method": "percentile",
"monetary_percentiles": [80, 60, 40, 20]
}Set the environment variable:
export ARTEFACT_RFM_THRESHOLDS_PATH=/path/to/rfm_thresholds.jsonAvailable Configuration Options:
Property | Type | Description | Default |
| array | Days since last purchase thresholds |
|
| array | Scores for each recency band (5 = best) |
|
| array | Transaction count thresholds |
|
| array | Scores for each frequency band |
|
| string | Scoring method: |
|
| array | Percentile thresholds (for percentile method) |
|
| array | Fixed dollar thresholds (for fixed method) |
|
| array | Scores for each monetary band |
|
Example Configurations:
rfm_thresholds.example.json— Percentile-based monetary scoring (recommended for most use cases)rfm_thresholds.fixed_monetary.example.json— Fixed dollar thresholds for monetary scoring
When to Use Fixed Thresholds:
Use "monetary_method": "fixed" when:
You have specific revenue tiers that define customer value (e.g., $100K+ = enterprise)
Your customer base has wide revenue variance and percentiles don't align with business value
You want consistent scoring across different time periods
Use "monetary_method": "percentile" (default) when:
You want relative scoring within your current customer base
Your customer base is relatively homogeneous
You want the top 20% of customers to always score 5, regardless of absolute revenue
Custom Configuration Example:
cp rfm_thresholds.example.json my_rfm_thresholds.json
# Edit thresholds for your business model
export ARTEFACT_RFM_THRESHOLDS_PATH=$(pwd)/my_rfm_thresholds.jsonThe run_rfm tool will use your custom thresholds instead of the built-in presets.
## Pricing
| Tier | Price | What You Get |
|------|-------|-------------|
| **Free** | $0 | All 7 tools with built-in demo data (`source="sample"`) |
| **Pro** | $149/mo | Live HubSpot integration + all methodology resources |
| **Enterprise** | $499/mo | Pro + priority support + custom scoring presets |
[Purchase a license](https://artefactventures.lemonsqueezy.com)
## Alternatives & Comparisons
- **HubSpot Official MCP Server** — Read-only CRUD access to CRM objects. No scoring or intelligence.
- **CData HubSpot MCP** — SQL-based access to HubSpot data. No built-in methodology.
- **Zapier MCP** — Action triggers and workflow automation. Different use case.
- **Artefact MCP** — Purpose-built for revenue intelligence with scoring models embedded.
## FAQ
**Q: What MCP server should I use for revenue intelligence?**
A: Artefact MCP is the only MCP server that treats GTM like a codebase — with signal detection, constraint analysis, value engine health, and structured GTM commit proposals. Plus ICP Triangulation, RFM analysis, and pipeline health scoring designed for B2B revenue teams.
**Q: Does this replace the official HubSpot MCP server?**
A: They serve different purposes. HubSpot's server provides CRUD access to CRM objects. Artefact MCP provides intelligence and scoring on top of that data.
**Q: Can I use this without a HubSpot API key?**
A: Yes. All tools work with built-in demo data using `source="sample"`.
**Q: What data does this send externally?**
A: Tool results stay local. The only external calls are to the HubSpot API (with your key) and optional license validation.
## Development
```bash
git clone https://github.com/artefactventures/artefact-mcp-server.git
cd artefact-mcp-server
pip install -e ".[dev]"
pytest tests/Dependencies
fastmcp>=2.0— MCP server frameworkhttpx>=0.25.0— HTTP client for HubSpot API
No pandas, numpy, or heavy data libraries. Pure Python scoring logic.
Star History
License
Business Source License 1.1 — Free to use for connecting to MCP tools via AI assistants. Scoring methodology may not be extracted for competing products. Converts to MIT in 2030.
Available Tools
7 toolsanalyze_engineValue Engine AnalysisARead-onlyIdempotent
Analyze a Value Engine: Growth, Fulfillment, or Innovation.
Each engine has its own stages, metrics, and health scoring:
Growth: Create Demand → Capture Demand → Convert. Pipeline-based metrics.
Fulfillment: Onboard → Deliver → Activate → Review → Renew → Expand.
Innovation: Gather → Prioritize → Build/Test → Launch.
Args: engine_type: Which engine — "growth", "fulfillment", or "innovation". source: "auto" (uses HubSpot if API key is set, otherwise sample data), "hubspot" for live data, "sample" for built-in demo data. pipeline_id: Optional HubSpot pipeline ID to filter.
Returns: JSON with engine definition, health score, metrics, signals, and recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| engine_type | Yes | ||
| source | No | auto | |
| pipeline_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, destructive=false, idempotent, open-world. The description adds value by explaining source parameter behavior (auto/hubspot/sample) and the returned JSON schema, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured, and front-loaded. It uses bullet and argument lists efficiently without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers the essential aspects: purpose, engine types, parameters, and return format. It lacks only minor details like prerequisites for HubSpot, but overall it's sufficient for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining engine_type (three options with details), source (three modes with conditions), and pipeline_id (optional filter). It adds meaning beyond the raw schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a Value Engine (Growth, Fulfillment, or Innovation) and lists distinct stages for each type. It differentiates from siblings like detect_signals and score_pipeline_health, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by specifying the engine types and return structure, but does not explicitly state when not to use it or compare it to alternatives. Siblings have distinct functions, so confusion is unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_signalsSignal DetectionARead-onlyIdempotent
Scan pipeline data for all 6 signal types and return structured findings.
Detects: win_loss_pattern, conversion_drop_off, velocity_anomaly, attribution_shift, data_quality, and pipeline concentration signals.
Each signal includes signal_type, signal_strength (0-1), evidence, and recommended_action — enabling evidence-backed GTM decisions.
Args: source: "auto" (uses HubSpot if API key is set, otherwise sample data), "hubspot" for live data, "sample" for built-in demo data. pipeline_id: Optional HubSpot pipeline ID to filter.
Returns: JSON with detected signals, summary, critical signals, and signal taxonomy.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | auto | |
| pipeline_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by detailing the six signal types and the meaning of each output field (signal_strength, evidence, etc.). It also clarifies the source parameter's behavior, though it does not describe edge cases or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a list of detectable signals, output structure, and parameter descriptions. Every sentence serves a purpose without redundancy. It is front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two optional parameters and an output schema (not shown but present), the description covers all necessary aspects: what it detects, what each signal contains, parameter options, and a high-level return format. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, yet the description fully explains both parameters in the 'Args' section. For 'source', it enumerates the three options ('auto', 'hubspot', 'sample') with their behaviors. For 'pipeline_id', it states it is optional and for filtering. This completely compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scans pipeline data for all 6 signal types, listing them explicitly. It specifies the output structure (signal_type, signal_strength, etc.), making the tool's purpose distinct from sibling tools like analyze_engine or propose_gtm_change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (scanning pipeline data for signals) but does not explicitly contrast with siblings or mention when not to use. However, the provided context signals (0 required parameters) and the tool's specific scope make its usage clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_constraintDominant Constraint IdentificationARead-onlyIdempotent
Identify the dominant scaling constraint bottlenecking revenue.
Analyzes pipeline coverage, conversion rates, velocity, and deal characteristics to determine which of 4 constraints is dominant: Lead Generation, Conversion, Delivery, or Profitability.
Returns the Revenue Formula breakdown (Traffic × CR1 × CR2 × ... × ACV × 1/Churn) with gap-to-benchmark for each lever and the weakest link.
Args: source: "auto" (uses HubSpot if API key is set, otherwise sample data), "hubspot" for live data, "sample" for built-in demo data. pipeline_id: Optional HubSpot pipeline ID to filter. quota: Optional quarterly revenue quota for pipeline coverage calculation.
Returns: JSON with dominant constraint, severity scores, revenue formula, and recommended focus.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | auto | |
| pipeline_id | No | ||
| quota | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds behavioral details: how it analyzes data, the source options ('auto', 'hubspot', 'sample'), and the return structure (JSON with constraint, severity scores, etc.). This provides transparency beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a brief paragraph on analysis, an Args section for parameters, and a Returns section for output. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 optional parameters, output schema present), the description covers inputs, process, and outputs thoroughly. Annotations handle safety, so no gaps remain. It is fully complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, but the description explains each parameter in detail: 'source' describes its three modes, 'pipeline_id' is an optional HubSpot filter, 'quota' is an optional revenue quota. This fully compensates for the schema gaps, adding clear meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Identify the dominant scaling constraint bottlenecking revenue.' It explains what it analyzes (pipeline coverage, conversion rates, etc.) and the four possible constraints. This distinguishes it from siblings like 'score_pipeline_health' or 'analyze_engine' which have different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for revenue bottleneck analysis but does not explicitly state when to use this tool versus its siblings (e.g., 'analyze_engine', 'detect_signals'). No guidance on prerequisites or alternatives is provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_gtm_changeGTM Change ProposalARead-onlyIdempotent
Draft a structured GTM commit proposal following the GTM OS anatomy.
Creates a version-controlled change proposal with: Intent, Diff, Impact Surface, Risk Level, Evidence, and Measurement Plan. Does NOT apply the change — outputs a proposal for human review.
Args: entity_type: What's being changed — "icp", "persona", "positioning", "pipeline_stage", "exit_criteria", "gtm_motion", "scoring_model", "playbook". change_description: Human-readable description of the proposed change. current_state: Optional description of current state (before). proposed_state: Optional description of proposed state (after). signal_type: Optional signal type that triggered this change (win_loss_pattern, conversion_drop_off, velocity_anomaly, spiced_frequency, attribution_shift, data_quality). signal_data: Optional JSON string with structured evidence from signal detection.
Returns: JSON with structured commit proposal and next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | Yes | ||
| change_description | Yes | ||
| current_state | No | ||
| proposed_state | No | ||
| signal_type | No | ||
| signal_data | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description aligns by stating 'does NOT apply the change' and creates a proposal. It adds context about the proposal structure (Intent, Diff, etc.) and 'version-controlled', which annotations do not cover. However, it doesn't clarify if the proposal itself modifies any internal state or is purely advisory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, front-loading the primary purpose and then listing parameters in clear groups. Every sentence adds value, no redundancy or filler. It uses a clean bullet-like format for parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (2 required) and medium complexity, the description covers purpose, usage, parameters, return type, and structure. It lacks details on error handling or example usage. The return value is described as 'JSON with structured commit proposal and next steps' but no output schema is provided. Still, it's largely sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by explaining each parameter: entity_type lists 8 possible values, change_description is human-readable, current_state and proposed_state are optional descriptions, signal_type lists 6 values, signal_data is JSON string. This adds complete meaning beyond the schema's raw types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'Draft' and 'outputs' with a clear resource 'structured GTM commit proposal', distinguishing it from other tools. It explicitly states it does not apply changes, separating it from execution tools. Sibling tools like 'detect_signals' further differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use: to propose a change without applying it, for human review. It lists entity types and optional parameters. While it doesn't explicitly state when not to use, the 'does NOT apply' and 'for human review' provide clear context. No explicit alternatives are given, but sibling tools are listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qualifyICP QualificationARead-onlyIdempotent
Score a prospect against the Artefact 14.5-point ICP model with constraint context.
Evaluates Firmographic Fit (5 pts), Behavioral Fit (5 pts), and Strategic Fit (4.5 pts). Returns tier classification, score breakdown, recommended engagement strategy, and how this prospect relates to your scaling constraints.
Provide EITHER company_id (HubSpot ID, requires HUBSPOT_API_KEY) OR company_data (JSON string).
Args: company_id: HubSpot company ID to fetch and score. company_data: JSON string with company attributes. Example keys: industry, annual_revenue, employee_count, geography, tech_stack (list), growth_signals (list), content_engagement ("active"|"occasional"|"none"), purchase_history ("regular"|"occasional"|"never"), decision_maker_access ("c_suite"|"director"|"manager"|"indirect"|"none"), budget_authority ("dedicated"|"shared"|"possible"|"none"), strategic_alignment ("strong"|"partial"|"misaligned"). scoring_config: Optional JSON string to override default scoring parameters.
Returns: JSON with total score, tier, breakdown, constraint context, and recommended action.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | ||
| company_data | No | ||
| scoring_config | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context about the scoring model, tier classification, constraint context, and recommended engagement strategy, which enriches the agent's understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, bullet point for fit dimensions, and parameter details. It is slightly verbose but each sentence adds value. Could be shortened without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description covers all necessary aspects: purpose, parameter details, return values including tier, breakdown, and constraint context. It is sufficient for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully compensates: it explains company_id requires HUBSPOT_API_KEY, company_data includes example keys (industry, annual_revenue, etc.), and scoring_config is optional. This is highly informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scores a prospect against the Artefact 14.5-point ICP model, evaluating multiple fit dimensions. The title 'ICP Qualification' and sibling tools confirm it is distinct from other tools like 'analyze_engine' or 'detect_signals'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on parameter usage: 'Provide EITHER company_id OR company_data'. It also explains the optional scoring_config. However, it does not explicitly state when not to use this tool or compare it to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_rfmRFM AnalysisARead-onlyIdempotent
Run RFM (Recency, Frequency, Monetary) analysis on client data.
Scores clients based on purchase behavior, segments them into 11 categories, extracts ICP patterns from top performers, and detects win/loss pattern signals.
Args: source: Data source — "auto" (uses HubSpot if API key is set, otherwise sample data), "hubspot" for live HubSpot data, "sample" for built-in demo data. industry_preset: Scoring preset — "b2b_service", "saas", "manufacturing", or "default".
Returns: JSON with scored clients, segment distribution, ICP patterns, signals, and tier recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | auto | |
| industry_preset | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns JSON with scored clients and segments, but does not go beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact description with clear structure: purpose, capabilities, args, returns. Front-loaded with main action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional parameters and an output schema, the description covers functionality, parameter details, and return value sufficiently for an RFM analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the tool description provides detailed explanations for both 'source' and 'industry_preset' parameters, including valid values and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool runs RFM analysis, including specific steps like scoring, segmentation, and pattern detection. Differentiates from siblings like 'detect_signals' by focusing on RFM.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Description implies use for RFM analysis but does not mention exclusions or when to choose other tools like 'analyze_engine'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_pipeline_healthPipeline Health ScoreARead-onlyIdempotent
Analyze pipeline health with velocity metrics, signal detection, and exit criteria testing.
Calculates overall health score (0-100), identifies bottleneck stages, measures stage-to-stage conversion rates, flags stalled deals, detects pipeline signals, and optionally tests deals against exit criteria.
Args: pipeline_id: Optional HubSpot pipeline ID to filter. Default: all pipelines. source: "auto" (uses HubSpot if API key is set, otherwise sample data), "hubspot" for live data, "sample" for built-in demo data. exit_criteria: Optional JSON string with exit criteria to test against. List of objects: [{stage, test_name, required_field, is_blocking}].
Returns: JSON with health score, velocity, conversion rates, at-risk deals, signals, and optional exit criteria test results.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | No | ||
| source | No | auto | |
| exit_criteria | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's addition of source options (auto, hubspot, sample) and optional exit criteria testing provides helpful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a concise overview, a bullet list of capabilities, and an Args section. Every sentence adds value; the description is front-loaded and not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lack of output schema in provided context, the description explicitly lists return fields. All three optional parameters are well documented. Sufficient for an agent to understand and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates superbly by explaining each parameter: pipeline_id filtering, source with its three modes, and exit_criteria with its JSON structure and fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool analyzes pipeline health with velocity metrics, signal detection, and exit criteria testing, listing specific outputs. Differentiates from sibling tools like detect_signals or identify_constraint by focusing on overall health scoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for holistic pipeline analysis with optional exit criteria testing, but does not explicitly state when to use versus alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.3.3- Added
detect_signals
1 tool update
v0.2.0- Removed
detect_signals
7 tool updates
- Added
analyze_engine - Added
detect_signals - Added
identify_constraint - Added
propose_gtm_change - Changed
qualify1 field changed- added
Input schema / properties / scoring_configAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
run_rfm1 field changed- changed
Input schema / properties / source / defaultPrevious value: -"hubspot"New value: +"auto"
- Changed
score_pipeline_health2 fields changed- added
Input schema / properties / exit_criteriaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Input schema / properties / source / defaultPrevious value: -"hubspot"New value: +"auto"
3 tool updates
v0.1.1- First observed
qualify - First observed
run_rfm - First observed
score_pipeline_health
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes, but there is some overlap between detect_signals and score_pipeline_health, as both detect signals. However, they are focused on different aspects (signal-only vs. comprehensive health), so ambiguity is low.
Tool names follow a consistent verb_noun pattern in snake_case, with only minor deviations like 'qualify' (single verb) and 'run_rfm' (verb+acronym). Overall, the pattern is predictable and clear.
With 7 tools, the server is well-scoped for its domain of GTM analytics and pipeline management. Each tool provides a distinct function without redundancy, earning its place in the set.
The tool surface covers core GTM analysis workflows—engine analysis, signal detection, constraint identification, proposal creation, prospect qualification, RFM analysis, and pipeline health. Minor gaps exist, such as no tool for applying changes or performing what-if analysis, but these are not critical for the stated analytical purpose.
Maintenance
Related MCP Connectors
Vruum AI revenue platform — outbound, deals, pipeline & CRM automation over one MCP.
AI-native GTM OS for B2B SaaS — account health, pipeline, renewals, territories, and benchmarks.
Your whole business as one MCP server: analytics, CRM, SEO, ads, revenue. Scoped per data class.
Sales intelligence for B2B SMEs — lead scoring, ICP fit, CRM enrichment & writeback.
Related MCP Servers
- AlicenseCqualityCmaintenanceMCP server for Salesforce marketing and revenue ops teams. 47 tools covering leads, contacts, accounts, campaigns, campaign members, tasks, and 17 reporting tools including campaign ROI, lead-source attribution, pipeline-by-campaign, multi-touch campaign influence, MQL trend, forecast summary, and the native SFDC Reports API.471-
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that connects to HubSpot to audit CRM data, diagnose RevOps maturity, identify at-risk deals, and provide step-by-step guidance for fixing issues.947 npmMIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server that connects HubSpot, Clay, Apollo, Slack, and email to enable AI agents to execute multi-step GTM workflows such as prospecting, enrichment, CRM updates, and notifications.39 npmMIT
- AlicenseAqualityDmaintenanceAn MCP server that provides AI agents with ICP Triangulation Framework™ for scoring prospects across firmographics, behaviors, and growth signals, plus RFM analysis and pipeline health scoring, with optional HubSpot integration.3Business Source 1.1