b2match-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| B2MATCH_TOKEN | No | Session-cookie value used in memory for authenticated B2match tools. Not persisted. Do not pass tokens on the command line. | |
| B2MATCH_ALLOW_RAW | No | Set to 1 to register the optional raw graphql_read tool. Non-query operations are still rejected. | 0 |
| B2MATCH_MCP_CONFIG_DIR | No | Directory for auth.json and the dedicated browser profile. Defaults to $XDG_CONFIG_HOME/b2match-mcp or ~/.config/b2match-mcp. | |
| B2MATCH_MCP_DISABLE_KEYCHAIN | No | Set to 1 to use the private file fallback instead of the OS keychain for token storage. | 0 |
| B2MATCH_ALLOW_SIDE_EFFECT_READS | No | Set to 1 to allow side-effect reads such as messagesV2 or the notification list, when also explicitly acknowledged by the tool argument. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | Show whether a local B2match token is available and, when valid, who it belongs to. Never returns the token. |
| list_my_eventsB | List events visible from the authenticated viewer account. |
| get_eventB | Fetch public event metadata, dates, registration window, login methods, and navigation. |
| my_participationA | Fetch authenticated participant status, activation, permissions, organisation pages, and opportunities for one event. |
| list_participantsA | List public participants as a compact summary. Set detail=true for the fuller record; use get_participant for one profile. |
| get_participantB | Fetch a participant profile without sending B2match's profile-view tracking mutation. |
| list_organisationsA | List event organisation pages. Resolves the menu path automatically; pass path to override. |
| get_organisationB | Fetch an organisation/participation page. Resolves the menu path automatically; pass path to override. |
| list_opportunitiesA | List marketplace opportunities. Resolves the menu path automatically; pass path to override. |
| get_opportunityA | Fetch a marketplace opportunity. Use the id or url from list_opportunities (published marketplace ids differ from opportunity ids on my_participation). Resolves the marketplace menu path automatically; pass path to override. |
| get_agendaA | Fetch agenda sessions and networking blocks. Resolves the menu path automatically; pass path to override. |
| get_sessionA | Fetch a session route. Provide session_id, or path to a session URL. Path alone is enough; session_id is not required when path is set. |
| list_session_attendeesC | List attendees for a session. Returns only the attendees connection, not the full session route. Provide session_id or path. |
| list_speakersB | List event speakers. Resolves the menu path automatically; pass path to override. |
| my_scheduleA | Fetch the authenticated viewer's event schedule. The PDF agenda URL is omitted unless include_pdf_link is true. |
| my_meetingsA | Fetch authenticated meetings, optionally returning one status bucket. Unfiltered responses include a compact availability summary (merged free ranges per day) unless detail=true. |
| my_availabilityA | Fetch authenticated availability. Default is merged free ranges per day; set detail=true for the full timeslot grid. |
| find_meeting_slotsB | Read common free meeting slots for the viewer and selected participants. Does not book anything. |
| meeting_recommendationsB | Fetch authenticated recommended and newest participants to meet. |
| list_conversationsA | List authenticated conversations and last-message previews. This list does not mark conversations as read. |
| get_conversationA | Fetch conversation messages. B2match marks that conversation as read when messagesV2 is fetched, even though this client never sends MarkConversationAsSeen. Disabled unless B2MATCH_ALLOW_SIDE_EFFECT_READS=1 and acknowledge_marks_read is true. Use list_conversations for last-message previews. Unknown ids return a not-found error. |
| list_notificationsA | Returns unread/unseen notification counters by default. Fetching the notification list resets B2match's unseen counter (unseen goes to 0) even though this client never sends ReadNotification. The unread counter is unchanged. The full list requires B2MATCH_ALLOW_SIDE_EFFECT_READS=1 and acknowledge_marks_seen=true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Most tools map to a distinct resource+action, and the descriptions do a good job distinguishing near-neighbors (e.g. list_participants vs get_participant vs my_participation, and list_opportunities' published ids vs my_participation's opportunity ids). Some overlap remains between the 'my_' cluster (my_schedule, my_availability, my_meetings) and the agenda/session tools, but boundaries are largely workable.
The dominant pattern is a clean verb_noun convention (get_event, list_participants, get_session, find_meeting_slots). Deviations are the consistent 'my_' viewer-scoped group (my_participation, my_schedule, my_availability, my_meetings) plus a couple of noun-style names (auth_status, meeting_recommendations), which is readable but not a single uniform pattern.
22 tools is on the heavier side but justified by a genuinely broad domain covering events, participants, organisations, opportunities, agenda, sessions, speakers, meetings, availability, conversations, and notifications. Almost every tool targets a distinct resource, so few feel redundant, though a couple could arguably be merged.
Coverage of read/list/get operations is thorough across resources, but the surface is lopsided: there is no send-message operation for the conversation tools, no meeting booking beyond find_meeting_slots, and no create/update actions anywhere, leaving common writing workflows as dead ends. For a read-mostly client this is largely workable but leaves notable gaps.