This page documents the Python MCP surface (
mcp.heybtw.com). It reflects mcp-server/tools/invite_recommendations.py as of this page’s publication — see Schema stability.Purpose
get_invite_recommendations ranks companies as invite candidates for a specific event (identified by channel_id), drawing on ABM list membership, past event attendance, and historical conversion signals (opportunity/MQL/meeting). Each candidate carries a plain-English reasoning string naming the factors that surfaced it.
When to use this
- “Who should we invite to our upcoming event?” once the event exists in heyBTW as a channel.
- Building or refreshing an invite list from ABM + attendance history rather than starting from a blank spreadsheet.
Parameters
Name the event either way.
event_name is the human-facing resolver; channel_id is the programmatic one. Both default to "" at the function signature level, so a call omitting both does not raise a Python-level type error, but it cannot identify a target event and will not produce recommendations.
Default behavior
Given one event identifier, returns up to 25 candidates, strongest candidate first, excluding companies already signed up for that event and excluding the workspace’s own domain.metadata.coverage_note always states the “excludes already-signed-up” exclusion so an agent doesn’t misread a short list as “nobody qualified.”
An event_name that resolves to nothing yields no recommendations and says so in metadata — it never falls back to a workspace-wide list. An ambiguous one returns the candidate events with their channel_ids under an ambiguous_event_name coverage note; re-call with the channel_id you want.
Sample request
Sample response
Response field reference
Envelope
data[i]
Errors
channel_idis malformed. Raised as a registeredinvalid_parametererror before any lookup runs.channel_idnames a channel that does not exist, or is outside your workspace. Raised as a registeredentity_not_founderror (HEY-1906). It does not silently produce an empty list — a target event that resolves to nothing is an error, never a fabricated recommendation list.event_nameresolves to nothing. Not an error. Returns no recommendations with ametadatacoverage note naming what failed to resolve.event_nameis ambiguous. Not an error. Returns the matching events with theirchannel_ids under anambiguous_event_namecoverage note.- Everything else funnels through the same generic sanitized error as every tool on this surface — see
get_workspace_overview— Errors.
Pagination and limits
No cursor-based pagination.limit (default 25, clamped to [1, 500]) caps candidates returned after ranking — there is no offset/cursor to page past it.
Related tools
get_event_details— see who’s already registered for the target event before deciding who else to invite.get_cross_event_patterns— a broader view of accounts with repeat engagement, useful when you don’t yet have a targetchannel_id.