hubspot-pipeline-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HUBSPOT_MODE | No | Run mode: 'fixtures' for the bundled synthetic snapshot (default), or 'live' to read your HubSpot portal. | fixtures |
| HUBSPOT_AS_OF | No | Override the 'today' date (UTC) used in live mode. | |
| HUBSPOT_TOKEN | No | Private-app token with read scopes. Required only for live mode; keep it in .env. | |
| HUBSPOT_PROFILE | No | Set to 'seeded' when running the server against a seeded HubSpot developer test account. | |
| HUBSPOT_CACHE_SECONDS | No | Cache duration in seconds for one portal read. Defaults to five minutes (300). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Read-only tools over a HubSpot CRM pipeline. Start with pipeline_summary for the big picture, then drill in with find_stalled_deals, rep_conversion, find_duplicate_contacts or deals_missing_fields, and get_deal for one deal. Amounts are USD. usd_basis says whether a figure is measured (deal amounts) or estimated (win-rate gaps). Current mode: fixtures.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_stalled_dealsA | Open deals sitting in a stage with no activity for Returns count, usd_at_risk (sum of their amounts) and the largest deals first: id, name, owner, amount_usd, last_activity, days_idle. |
| find_duplicate_contactsA | Duplicate contacts: the same mailbox (case and dots ignored), or the same company with a matching name ('Steve' ~ 'Steven', 'N. Galloway' ~ 'Nina Galloway'). usd_at_risk is the open deal value sitting on the duplicates (pipeline counted twice). Rows list duplicate_id, original_id, match_type, reason and open_deal_ids. |
| pipeline_summaryB | By stage: deal count, value, how many reached it, the rate to the next stage, the win rate from that stage, and stalled deals (idle 30+ days) as usd_at_risk. Plus pipeline totals: open value, won value, win rate. |
| deals_missing_fieldsA | Deals with empty required fields, and which fields. An open deal whose contact has no email cannot be worked, so its amount is at risk; other gaps are routing/reporting costs, valued at $0. |
| rep_conversionA | Stage-to-won rate by owner: of each owner's closed deals that entered |
| get_dealA | One deal: stage, owner, amount, days idle, stage history, contacts, and every check it trips (stalled, duplicate contact, missing fields, weak rep), with usd_at_risk. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct diagnostic question (stalled deals, duplicates, stage funnel, missing fields, rep conversion, single-deal detail), so an agent can pick correctly in most cases. There is mild overlap: stalled deals appear both in find_stalled_deals and inside pipeline_summary, and get_deal re-surfaces every check, but the descriptions frame one as aggregate and the other as drill-down.
Names mix verb-first (find_stalled_deals, find_duplicate_contacts, get_deal) with noun-first (pipeline_summary, deals_missing_fields, rep_conversion). All are snake_case and readable, but there is no single predictable verb_noun convention an agent can rely on.
Six tools is well-scoped for a pipeline health/diagnostics server — one per distinct audit dimension plus a per-deal drill-down. No tool looks redundant or filler.
The read/diagnostic surface is strong and covers most health checks, but every workflow dead-ends: there are tools to find duplicate contacts or stalled deals yet none to merge, update, reassign, or log activity. An agent can report at-risk value but cannot remediate it.