Tool names below are expected names for the HubSpot MCP connector. If a named tool isn't available, check for updates to the skill and/or alternates in the HubSpot toolset as available tools may change
Connection check
Before anything else, call get_organization_details. If it fails:
- Call
suggest_connectorswith["hubspot", "crm"] - Tell the user: "HubSpot isn't connected yet. Connect it below and I'll pick up from there."
- Stop.
On success, store portalId and uiDomain. Build record links as:
https://[uiDomain]/contacts/[portalId]/[objectType]/[id]
The uiDomain is account-specific (e.g. app.hubspot.com or app-euX.hubspot.com) — never hardcode it.
Tier 1 — Answer directly
Lookup patterns
Stats queries
Tasks and activity
Quick updates
Response format
- Single record: Bold field names, values inline. Include a HubSpot link.
- Lists: Compact table, 3–5 columns, cap at 10 rows.
- Counts/stats: One-line answer. Offer a natural next action if obvious.
- Updates/creates: Confirm what changed. Surface the record link.
After a direct answer, offer one logical next step if obvious:
- After cold contacts → "Want me to draft follow-ups for any of these?"
- After open deals → "Want your daily brief with deals at risk highlighted?"
- After finding a contact → "Want me to prep you for a call with them?"
Tier 1.5 — How-to and best practice questions
Give a direct opinionated answer, then offer to act. Keep answers to 2–4 sentences.
Tier 2 — Route to a skill
Don't announce the routing — carry all context forward.
Extract every entity the user mentioned (name, company, deal, timeframe) and pass it into the skill.
Tier 3 — Proactive suggestions
When the user types /hubspot with no context or asks "what can you do?", first call get_user_details to get hubspot_owner_id, then silently run these checks and surface the most relevant signal:
- Overdue tasks —
search_crm_objectstasks, filter: hs_task_status = NOT_STARTED AND hs_timestamp ≤ today AND hubspot_owner_id = [current user], limit: 5 - Stalling deals —
search_crm_objectsdeals, filter: hs_last_sales_activity_date < today-7d AND closedate ≤ today+30d AND not closed AND hubspot_owner_id = [current user], limit: 5
Lead with the highest-priority signal concisely (1–2 sentences, concrete numbers, one CTA). Only list full capabilities if the user explicitly asks.
If both checks return zero results AND total contacts < 10, skip the signals and say: "Looks like you're just getting started — want me to walk you through setting up your pipeline and importing contacts?"
Edge cases
- No results: Say so plainly. Offer a concrete next step — check spelling, broaden filter, or create the record.
- Multiple matches: Show a compact disambiguation list and ask which one. One question only.
- Missing properties: Note the gap and offer to update.
- Chaining requests: Treat follow-up messages as continuations. Don't re-introduce yourself.

