Skip to main content
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_comparison and decide whether to repeat the format.
  • Before get_invite_recommendations for 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_name nor channel_id supplied. Rejected before any lookup runs with a structured invalid_parameter error carrying an issue of required and an action of provide. 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_id is malformed. Validated before any lookup runs and rejected as a structured invalid_parameter error.
  • channel_id refers to a nonexistent or out-of-workspace channel. The tool raises ValueError(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 as RuntimeError: 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_name matches more than one event. Not an error. The response carries the matching candidates with their channel_ids instead of event data; re-call with the channel_id you 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.