# B2match (unofficial) (npm · b2match-mcp)

Unofficial read-only B2match events: agenda, participants, meetings, schedule, conversations

- Trust score: 81/100 (high trust)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `b2match-mcp`: 81/100 (this document), [markdown](https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp.md), [page](https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp)

## Channel facts

- Registry: `npm`
- Package: `b2match-mcp`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 95 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to barzoj/b2match-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 10 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2387 tokens (~108/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the B2match (unofficial) MCP server?

B2match (unofficial) runs locally as an npm package, launched with npx -y b2match-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add barzoj-b2match-mcp -- npx -y b2match-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "barzoj-b2match-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "b2match-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "barzoj-b2match-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "b2match-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add barzoj-b2match-mcp -- npx -y b2match-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "barzoj-b2match-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "b2match-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add barzoj-b2match-mcp --command npx --arg -y --arg b2match-mcp
```

### Hermes

```yaml
mcp_servers:
  barzoj-b2match-mcp:
    command: "npx"
    args: ["-y", "b2match-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "barzoj-b2match-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "b2match-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add barzoj-b2match-mcp -t stdio -c npx -a -y b2match-mcp
```

### Other

```json
{
  "mcpServers": {
    "barzoj-b2match-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "b2match-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-24 (score 81, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-23 (score 66)

First indexed and scored.

## MCP tools (22)

### `auth_status` (~64 tokens)

B2match auth status

Show whether a local B2match token is available and, when valid, who it belongs to. Never returns the token. Call this first when an authenticated tool (my_*, list_my_events, conversations, notifications) reports a login error; public tools work without a token.

### `list_my_events` (~42 tokens)

List my B2match events

List events the logged-in viewer has joined, with ids/slugs usable as the event argument elsewhere. Requires login; use get_event for any single public event instead.

### `get_event` (~74 tokens)

Get B2match event

Fetch public event metadata, dates, registration window, login methods, and navigation menu paths. Start here to resolve an event before calling the other event tools; use list_my_events to find events you joined. Works without login.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.

### `my_participation` (~64 tokens)

Get my event participation

Fetch the logged-in viewer's own participant status, activation, permissions, organisation pages, and opportunities for one event. Use get_participant for someone else's public profile.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.

### `list_participants` (~123 tokens)

List B2match participants

List public participants as a compact summary. Set detail=true for the fuller record; use get_participant for one profile.

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `detail` (boolean): true returns the full participant records instead of compact summaries (larger output).
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.
- `query` (string): Free-text search on participant name, organisation, or profile text.

### `get_participant` (~93 tokens)

Get B2match participant

Fetch one participant's full public profile without sending B2match's profile-view tracking mutation. Use list_participants to search or find ids; use my_participation for your own status.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `participant_id` (string, required): Participant id from list_participants, list_session_attendees, or meeting_recommendations.

### `list_organisations` (~130 tokens)

List B2match organisations

List organisation pages (participations) of an event, paginated. Use get_organisation for one page, list_participants for people. Resolves the menu path automatically; pass path to override.

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `get_organisation` (~125 tokens)

Get B2match organisation

Fetch one organisation page (a participation: organisation details plus its representatives). Use list_organisations to find participation ids; use get_participant for a single person. Resolves the menu path automatically; pass path to override.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `participation_id` (string, required): Participation id from list_organisations or my_participation.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `list_opportunities` (~128 tokens)

List B2match opportunities

List published marketplace opportunities (offers/requests) of an event, paginated. Use get_opportunity for one entry's full details. Resolves the menu path automatically; pass path to override.

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `get_opportunity` (~118 tokens)

Get B2match opportunity

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.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `opportunity_id` (string, required): Published opportunity id or URL from list_opportunities.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `get_agenda` (~100 tokens)

Get B2match agenda

Fetch the event agenda: sessions and networking blocks with times. Use get_session for one session's details and my_schedule for your personal schedule. Resolves the menu path automatically; pass path to override.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `get_session` (~149 tokens)

Get B2match session

Fetch one agenda session with its details and a first page of attendees. Provide session_id, or path to a session URL; path alone is enough. Use list_session_attendees to page through attendees only, get_agenda to find sessions.

Input parameters:

- `attendees_after` (string): Attendee pagination cursor from a previous response.
- `attendees_first` (integer): Attendee page size, capped at 50.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `path` (string): Session URL path from get_agenda; alternative to session_id.
- `session_id` (string): Session id from get_agenda. Optional when path is set.

### `list_session_attendees` (~139 tokens)

List B2match session attendees

Page through the attendees of one agenda session. Returns only the attendee list with a cursor, not the session details; use get_session for those. Provide session_id or path (from get_agenda).

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.
- `path` (string): Session URL path from get_agenda; alternative to session_id.
- `session_id` (string): Session id from get_agenda. Optional when path is set.

### `list_speakers` (~125 tokens)

List B2match speakers

List the speakers shown on the event's speakers page, paginated. Use list_participants for all registered participants. Resolves the menu path automatically; pass path to override.

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.
- `path` (string): Optional event menu path (e.g. /components/<id>) from get_event navigation; omit to resolve it automatically.

### `my_schedule` (~94 tokens)

Get my B2match schedule

Fetch the logged-in viewer's personal event schedule (booked sessions and meetings). Use get_agenda for the full public agenda and my_meetings for meeting requests by status. The PDF agenda URL is omitted unless include_pdf_link is true.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `include_pdf_link` (boolean): true adds the downloadable PDF agenda URL.

### `my_meetings` (~120 tokens)

Get my B2match meetings

Fetch the logged-in viewer's meetings and meeting requests, optionally one status bucket. Unfiltered responses include a compact availability summary (merged free ranges per day) unless detail=true. Use my_schedule for the overall timetable and find_meeting_slots to find free times with others.

Input parameters:

- `detail` (boolean): true returns the full availability timeslot grid instead of the summary.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `status` (string): Return only this bucket; omit for all buckets.

### `my_availability` (~88 tokens)

Get my B2match availability

Fetch the logged-in viewer's own meeting availability. Default is merged free ranges per day; set detail=true for the full timeslot grid. Use find_meeting_slots for slots shared with specific participants.

Input parameters:

- `detail` (boolean): true returns the full timeslot grid instead of merged ranges.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.

### `find_meeting_slots` (~179 tokens)

Find B2match meeting slots

Find free meeting slots shared by the logged-in viewer and selected participants on one day. Read-only: does not book or request a meeting. Use my_availability for your own free time only.

Input parameters:

- `day` (string): Day to search, as a days[].date value from my_availability; omit for the default day.
- `duration` (string): B2match MeetingDuration enum value (e.g. THIRTHY, B2match's spelling); omit for the event default.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `is_long_term_networking` (boolean): true searches the event's long-term networking calendar instead of the main meeting days.
- `participant_ids` (array, required): 1-10 participant ids (from list_participants) to meet with.

### `meeting_recommendations` (~67 tokens)

Get B2match meeting recommendations

Fetch B2match's recommended and newest participants for the logged-in viewer to meet. Use list_participants to search all participants and find_meeting_slots to check shared free time.

Input parameters:

- `event` (string, required): B2match event URL, slug/euid, or numeric event id.

### `list_conversations` (~94 tokens)

List B2match conversations

List the logged-in viewer's conversations with last-message previews, paginated. Does not mark conversations as read; prefer it over get_conversation unless full message history is needed.

Input parameters:

- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.

### `get_conversation` (~118 tokens)

Get B2match conversation

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.

Input parameters:

- `acknowledge_marks_read` (boolean): Required with B2MATCH_ALLOW_SIDE_EFFECT_READS=1; fetching messages marks the conversation as read.
- `conversation_id` (string, required): Conversation UUID from list_conversations.

### `list_notifications` (~153 tokens)

List B2match notifications

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.

Input parameters:

- `acknowledge_marks_seen` (boolean): Required with B2MATCH_ALLOW_SIDE_EFFECT_READS=1 to fetch the full list; that request resets unseen.
- `after` (string): Opaque pagination cursor from a previous response.
- `event` (string, required): B2match event URL, slug/euid, or numeric event id.
- `first` (integer): Page size, capped at 50.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp#diagnostics

## Score history

- 2026-11-05: 81
- 2026-11-04: 81
- 2026-11-03: 81
- 2026-11-02: 81
- 2026-11-01: 81
- 2026-10-31: 81
- 2026-10-30: 81
- 2026-10-29: 81
- 2026-10-28: 81
- 2026-10-27: 81
- 2026-10-26: 81
- 2026-10-25: 81
- 2026-10-24: 81
- 2026-10-23: 66

## Common questions

### What is the B2match (unofficial) MCP server?

B2match (unofficial) is an MCP server listed in the public MCP registry as io.github.barzoj/b2match-mcp. Unofficial read-only B2match events: agenda, participants, meetings, schedule, conversations. This page covers its npm package (b2match-mcp).

### Is the B2match (unofficial) MCP server safe to use?

B2match (unofficial) scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the B2match (unofficial) MCP server expose?

B2match (unofficial) exposes 22 tools: auth_status, list_my_events, get_event, my_participation, list_participants, and 17 more. Their descriptions and schemas cost roughly 2,387 tokens of context every time the server is loaded.

### Is the B2match (unofficial) MCP server still maintained?

B2match (unofficial) is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the B2match (unofficial) MCP server under?

B2match (unofficial) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the B2match (unofficial) MCP server?

VerifyMCP ran 15 checks on B2match (unofficial), covering Malware scan, Known CVEs, Install scripts, Dependency health and 11 more. One item could not be completed, a gap on our side rather than a finding about B2match (unofficial): Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/b2match-mcp
- Socket report: https://socket.dev/npm/package/b2match-mcp
- Repository: https://github.com/barzoj/b2match-mcp
- Changelog RSS feed: https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp.json
- HTML version of this page: https://verifymcp.io/servers/barzoj-b2match-mcp/b2match-mcp
