This page documents the Python MCP surface (
mcp.heybtw.com). It reflects mcp-server/tools/event_details.py as of this page’s publication — see Schema stability.Renamed. This tool shipped as
get_event_summary and was renamed to
get_event_details by HEY-2029: “summary” read as retrospective-only, which
this tool never was — it answers pre-event questions like roster and capacity
just as well as post-event ones. get_event_summary is not a registered
tool name and a call using it will not resolve. The response envelope’s
tool field is "get_event_details".Purpose
get_event_details is the single-event deep dive: logistics and roster, attendance broken into host/partner/external, seniority distribution, per-partner sourcing performance, top engaged accounts, how this event compares to the workspace’s own program average, and (when HubSpot is connected) pipeline attribution for this one event.
When to use this
- “Give me a report on last month’s Robotics Summit.”
- Before an event runs, to see who is registered and how the roster is filling against capacity.
- Immediately after an event, to compare it against
program_comparisonand decide whether to repeat the format. - Before
get_invite_recommendationsfor a similar upcoming event, to see who attended last time.
Parameters
This tool needs one specific event, named either way. Supply
event_name or
channel_id; supplying neither is rejected before any lookup runs (see
Errors). Both have a "" default at the function signature level,
so an omitting call does not raise a Python-level type error.
Default behavior
Given one event identifier, returns the full logistics/attendance/funnel/seniority/top-accounts/comparison report without the attendee-level contact list and without the partner performance breakdown — both are opt-in via their respective flags, keeping the default response smaller for the common “just show me the numbers” case.Sample request
Sample response
Response field reference
Envelope
data[0]
Errors
- Neither
event_namenorchannel_idsupplied. Rejected before any lookup runs with a structuredinvalid_parametererror carrying an issue ofrequiredand an action ofprovide. This is a real structured error, not the generic sanitized one — an agent can act on it by supplying an identifier and re-calling. channel_idis malformed. Validated before any lookup runs and rejected as a structuredinvalid_parametererror.channel_idrefers to a nonexistent or out-of-workspace channel. The tool raisesValueError(f"Channel {channel_id!r} not found in workspace {workspace_id!r}")internally, but like every tool on this surface, that specific message does not reach the client — it’s caught by the generic handler and surfaces asRuntimeError: Internal error executing get_event_details (error_id=...). There is currently no way for an agent to distinguish “channel not found” from any other internal failure from the error message alone.event_namematches more than one event. Not an error. The response carries the matching candidates with theirchannel_ids instead of event data; re-call with thechannel_idyou want.
Pagination and limits
Not applicable to the report itself — one event in, one report out.contacts (when requested via include_contacts) is capped at 200 with no further pagination; use contacts_raw_total/contacts_total to know if you’re seeing everyone.
Related tools
get_event_attribution— the same event’s pipeline numbers in the multi-event comparison shape, plus sourced/influenced breakdown by company.get_partner_insights— a given partner’s performance across all events, not just this one.get_invite_recommendations— who to invite to a similar future event.