Skip to main content
This page documents the Python MCP surface (mcp.heybtw.com). It reflects mcp-server/tools/partner_insights.py as of this page’s publication — see Schema stability.

Purpose

get_partner_insights returns one entry per partner with a full sourcing and funnel breakdown: how many signups/MQLs/opportunities/meetings they’ve driven, per-event detail, a seniority profile of the contacts they’ve brought, and (when HubSpot is connected) pipeline revenue impact.

When to use this

  • “Which partners have a relationship with a target account we could leverage for a warm intro?” — pair with get_account_relationship for a specific account, or scan all partners here first.
  • “Which partner should we lean on more — who’s actually converting, not just attending?”
  • Building a partner performance leaderboard or QBR deck.

Parameters

time_range windows are anchored to the event’s date, not to deal-creation date. This tool answers “what did this partner’s events produce in this window”, not “what deals were created in this window” — a different question a CRM-facing tool would answer. Bounds are computed in UTC and carry an explicit offset on the wire, so parsing is unambiguous; the quarter and year boundaries themselves are anchored to UTC-now, so a workspace far from UTC can see a boundary land up to roughly 12 hours off its local one.

Default behavior

Called with no parameters, returns every partner in the workspace (archived ones excluded by default), strongest relationship first — no result cap, no pagination. Every partner entry is included even if they have zero sourced signups (total_sourced: 0); filter client-side on sourcing_breakdown.total_sourced > 0 if you only want active partners.

Sample request

Sample response

Response field reference

Envelope

data[i]

The sample above is not a verbatim capture. A live response carries one more field per partner than it shows.Contract v1 is the default — omit contract_version and v1 is what you get — and a v1 partner additionally carries warmth_score, a composite between event_names and status. It is the only field the sample omits; everything else above is shown as emitted. Contract v2 drops warmth_score and adds an intro_paths array of ranked, source-backed paths. v2 is defined but not advertised, so v1 is what a live call returns today.warmth_score is withdrawn (HEY-1897) because it was an unbacked composite, and it is documented nowhere on this page on purpose. Rank on order, and compare partners on sourcing_breakdown and funnel_metrics.

Errors

Same generic-sanitized-error behavior as every tool on this surface — see get_workspace_overview — Errors. This tool has no parameter-validation failure modes of its own; every parameter is optional and any string value is a valid (possibly zero-match) filter.

Pagination and limits

No caller-facing limit parameter and no cursor pagination — every matching partner is returned in one call. Internally, the underlying rows are capped at 500 before aggregation (a fixed server-side safety limit, not adjustable); a workspace would need over 500 partner-event-partnership rows to hit it, well beyond any workspace observed today. contacts per partner is separately capped at 50 (see contacts_shown/contacts_total above).
  • get_account_relationship — the account-centric view of the same warm-intro data.
  • get_workspace_overviewprogram_metrics.partner_program is a workspace-wide rollup of this tool’s data.
  • get_event_details — per-event partner performance (partner_performance), scoped to one event instead of across all events.