# Eventee MCP by usefulapi (remote · eventee.usefulapi.io)

Read an Eventee event's program, participants and reviews; create sessions, speakers; invite.

- Trust score: 62/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

- remote · `eventee.usefulapi.io`: 62/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-eventee/eventee.md), [page](https://verifymcp.io/servers/io-usefulapi-eventee/eventee)

## Channel facts

- Endpoint: `https://eventee.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 78/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3675 tokens (~204/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **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.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Eventee MCP by usefulapi server?

Eventee MCP by usefulapi is a hosted endpoint at https://eventee.usefulapi.io/mcp, so there is nothing to install locally. 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 --transport http io-usefulapi-eventee 'https://eventee.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-eventee": {
      "url": "https://eventee.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-eventee": {
      "type": "http",
      "url": "https://eventee.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-eventee]
url = "https://eventee.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-eventee": {
      "type": "remote",
      "url": "https://eventee.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-eventee --url 'https://eventee.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-eventee:
    url: "https://eventee.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-eventee": {
      "Transport": "http",
      "Url": "https://eventee.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-eventee -t streamable-http -u 'https://eventee.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-eventee": {
      "type": "http",
      "url": "https://eventee.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-25 (score 62, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.0.3

### 2026-10-24 (score 62)

First indexed and scored.

## MCP tools (18)

### `eventee_get_program` (~326 tokens)

Get event program

The whole program of the event the API token belongs to: halls, event days, sessions (`lectures`, type 0), workshops (type 1, with capacity and bookings), breaks (`pauses`), speakers and labels (`tracks`). Use it to read back ids (hall_id, speaker ids, label ids, session ids) before changing anything. Replies are compact: long texts are clipped (description_max), each part is paged (limit/offset, `more` maps each part with further rows to the offset to continue from; the reply is cut to a size budget, so for big events read one part at a time with `parts`) and `parts` selects what to read. Times are in the event's time zone. GET /public/api/v1/content.

Input parameters:

- `date` (string): Only this day's program (yyyy-mm-dd). Days without content return empty lists.
- `description_max` (integer): Characters kept of each description / speaker bio (default 300). Raise it to read a full text.
- `limit` (integer): Max rows per part, 1-200 (default 50).
- `offset` (integer): Rows to skip in every part (default 0); With several parts the offset applies to all of them: page a big event one part at a time.
- `parts` (array): Only these parts (default: all): halls, days, sessions, workshops, breaks, speakers, labels.
- `with_overlapping` (boolean): Also list event days that have no content yet in `days`.

### `eventee_list_participants` (~230 tokens)

List participants

Participants of the event (attendees, speakers, moderators, admins) with role, group, tickets, check-in time and registration time. `role`: a = admin, m = moderator, l = speaker, e = attendee. `checked_at` is null until checked in. Anonymous participants and deleted accounts have a placeholder email without '@'. The personal app link of each participant is not returned. Filters apply after the full list is read; use limit/offset for large events. GET /public/api/v1/participants.

Input parameters:

- `checked_in` (boolean): true = only checked-in people, false = only those not yet checked in.
- `group_id` (integer): Only this attendee group (ids from eventee_list_groups).
- `limit` (integer): How many rows to return, 1-200 (default 50).
- `offset` (integer): Rows to skip (default 0). Pass the previous reply's next_offset.
- `role` (string): Only this role.
- `search` (string): Keep participants whose name, email or company contains this text.

### `eventee_list_registrations` (~144 tokens)

List registrations

Registrations of the event (people who registered or were pre-registered) with status (pending / confirmed / declined), group, contact details and registration-form answers. Filters apply after the full list is read; use limit/offset for large events. GET /public/api/v1/registrations.

Input parameters:

- `limit` (integer): How many rows to return, 1-200 (default 50).
- `offset` (integer): Rows to skip (default 0). Pass the previous reply's next_offset.
- `search` (string): Keep registrations whose name, email or company contains this text.
- `status` (string): Only this registration status.

### `eventee_list_groups` (~117 tokens)

List attendee groups

Attendee groups of the event with the app features enabled for each (agenda, questions, polling, networking, ratings, ...), the ticket names that put people into the group automatically, and which group is the default. Use the ids as group_id when inviting or registering people. GET /public/api/v1/groups.

Input parameters:

- `limit` (integer): How many rows to return, 1-200 (default 50).
- `offset` (integer): Rows to skip (default 0). Pass the previous reply's next_offset.

### `eventee_list_reviews` (~181 tokens)

List session reviews

Session ratings left by attendees (1-5 stars with optional comment), each with the rated session, plus a per-session summary (count and average stars; the 50 most reviewed sessions, `summary_truncated` says if more exist: use session_id for a specific one). Filters apply after the full list is read. GET /public/api/v1/reviews.

Input parameters:

- `limit` (integer): How many rows to return, 1-200 (default 50).
- `max_stars` (integer): Only reviews with at most this many stars.
- `min_stars` (integer): Only reviews with at least this many stars.
- `offset` (integer): Rows to skip (default 0). Pass the previous reply's next_offset.
- `session_id` (integer): Only reviews of this session (id from eventee_get_program).

### `eventee_list_partners` (~85 tokens)

List partners

Partners (sponsors and exhibitors) of the event with company details, contact data, code and page sections. GET /public/api/v1/partners.

Input parameters:

- `limit` (integer): How many rows to return, 1-200 (default 50).
- `offset` (integer): Rows to skip (default 0). Pass the previous reply's next_offset.

### `eventee_create_session` (~379 tokens)

Create session

WRITE: add a session (lecture or workshop) to the event program. It appears in the event app for attendees. The event day is taken from `start` and created if missing. The hall, speakers and labels must already exist (create them first and pass their ids). POST /public/api/v1/lecture.

Input parameters:

- `capacity` (integer): Seats for a workshop (bookable). Default 0; only applies to workshops.
- `checkin` (boolean): Enable attendee check-in at the session (workshops only). Default false.
- `description` (string): Description (plain text or simple HTML).
- `discussion` (boolean): Allow attendee questions (Q&A). Default false.
- `end` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).
- `hall_id` (integer): Hall id (eventee_get_program → halls).
- `label_ids` (array): Label (track) ids to attach.
- `moderating` (boolean): Questions need moderator approval first. Default false.
- `name` (string, required): Title of the session.
- `polling` (boolean): Allow live polls. Default false.
- `speaker_ids` (array): Speaker ids in display order.
- `start` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).
- `stream_url` (string): Live stream URL (YouTube, Vimeo, Twitch, Zoom...).
- `type` (string): lecture (default) or workshop (bookable, limited capacity).
- `virtual_meeting_url` (string): Virtual meeting URL attendees can join (Zoom, Google Meet...).

### `eventee_update_session` (~482 tokens)

Update session

WRITE: replace a session (full update, not a patch). Eventee RESETS what is omitted: speakers, labels, type, capacity and the Q&A / moderation / polling switches, so `type`, `speaker_ids`, `label_ids`, `capacity`, `discussion`, `moderating` and `polling` are required here; read the session first with eventee_get_program and pass its current values (an empty list removes all). The hall and live stream are kept when omitted. `start` must fall on an existing day of the event. PATCH /public/api/v1/lecture/{session_id}.

Input parameters:

- `capacity` (integer, required): Workshop seats (required: an omitted capacity is reset to 0); pass the current value, 0 for a lecture.
- `description` (string): Description (plain text or simple HTML).
- `discussion` (boolean, required): Attendee questions (Q&A) on/off (required: omitted = off). Pass the current value.
- `end` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).
- `hall_id` (integer): Hall id (eventee_get_program → halls).
- `label_ids` (array, required): Label (track) ids; [] removes all labels.
- `moderating` (boolean, required): Questions need moderator approval (required: omitted = off). Pass the current value.
- `name` (string, required): Title of the session.
- `polling` (boolean, required): Live polls on/off (required: omitted = off). Pass the current value.
- `session_id` (integer, required): Session id (eventee_get_program → lectures / workshops).
- `speaker_ids` (array, required): Speaker ids in display order; [] removes all speakers.
- `start` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).
- `stream_url` (string): Live stream URL (YouTube, Vimeo, Twitch, Zoom...).
- `type` (string, required): lecture or workshop (required: an omitted type turns a workshop into a lecture).
- `virtual_meeting_url` (string): Virtual meeting URL attendees can join (Zoom, Google Meet...).

### `eventee_delete_session` (~105 tokens)

Delete session

WRITE, IRREVERSIBLE: delete a session (lecture or workshop) together with its questions, polls, workshop bookings and ratings. Needs confirm: true (without it: a preview, nothing deleted). DELETE /public/api/v1/lecture/{session_id}.

Input parameters:

- `confirm` (boolean): Must be true to run. Without it nothing is changed and a preview is returned; ask the user to approve first.
- `session_id` (integer, required): Session id to delete.

### `eventee_create_hall` (~78 tokens)

Create hall

WRITE: add a hall (room, stage or virtual space) to the event. Use the returned id as hall_id for sessions. POST /public/api/v1/hall.

Input parameters:

- `name` (string, required): Name of the hall.
- `order` (integer): Position in the agenda (0 = first). Default: the end.

### `eventee_create_break` (~147 tokens)

Create break

WRITE: add a break (coffee, lunch...) to the event program on the day of `start` (created if missing). POST /public/api/v1/pause.

Input parameters:

- `description` (string): Optional description.
- `end` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).
- `name` (string, required): Name of the break.
- `start` (string, required): Local time in the event's time zone, 'yyyy-mm-dd hh:mm:ss' (e.g. 2026-06-01 09:00:00).

### `eventee_create_label` (~97 tokens)

Create label

WRITE: add a label (track) for sessions, with a colour. Use the returned id in label_ids of a session. POST /public/api/v1/label.

Input parameters:

- `color` (string, required): Colour as a hex code, e.g. #3B82F6.
- `name` (string, required): Name of the label.
- `order` (integer): Position in lists (0 = first). Default: the end.

### `eventee_create_speaker` (~225 tokens)

Create speaker

WRITE: add a speaker profile to the event (shown in the event app). Use the returned id in speaker_ids of a session. The photo, if given, is downloaded by Eventee from the URL. POST /public/api/v1/speaker.

Input parameters:

- `bio` (string): Biography (plain text or simple HTML).
- `company` (string): Company or organisation.
- `country` (string): Country, two-letter ISO code (e.g. CZ).
- `email` (string): Email address.
- `facebook` (string): Facebook profile URL.
- `instagram` (string): Instagram profile URL.
- `language` (string): Language the speaker presents in (e.g. en, cs).
- `linkedin` (string): LinkedIn profile URL.
- `name` (string, required): Full name.
- `phone` (string): Phone number.
- `photo_url` (string): URL of a profile photo.
- `position` (string): Job title.
- `twitter` (string): X (Twitter) profile URL.
- `web` (string): Website URL.

### `eventee_invite_attendees` (~260 tokens)

Invite attendees

WRITE: add up to 100 people to the event as attendees, optionally with a group and tickets. People who already have an Eventee account are added directly; others get a profile that links when they sign up with the same email. With send_email=true Eventee SENDS AN INVITATION EMAIL to every person listed (default false: no email); sending needs confirm: true (without it: a preview, nothing sent or added). Invalid entries and the event's admins/moderators are skipped silently by Eventee, so re-read eventee_list_participants to confirm. The first 25 are processed immediately, the rest in the background. Tickets replace the person's existing tickets. PUT /public/api/v1/attendee/invite.

Input parameters:

- `confirm` (boolean): Required (true) only with send_email=true. Without it nothing is sent or added and a preview is returned; ask the user to approve the recipients first.
- `group_id` (integer): Default attendee group for people without their own group_id (eventee_list_groups).
- `send_email` (boolean): Send each person the invitation email. Default false. Needs confirm: true.
- `users` (array, required): The people to add (1-100).

### `eventee_register_people` (~206 tokens)

Pre-register people

WRITE: pre-register up to 100 people for the event (an existing registration with the same email is updated, not duplicated). With send_email=true Eventee SENDS A REGISTRATION EMAIL to every person listed (default false: no email); sending needs confirm: true (without it: a preview, nothing sent or registered). Invalid entries are skipped silently by Eventee, so re-read eventee_list_registrations to confirm. PUT /public/api/v1/registration/invite.

Input parameters:

- `confirm` (boolean): Required (true) only with send_email=true. Without it nothing is sent or registered and a preview is returned; ask the user to approve the recipients first.
- `group_id` (integer): Default attendee group for people without their own group_id (eventee_list_groups).
- `registrations` (array, required): The people to register (1-100).
- `send_email` (boolean): Send each person the registration email. Default false. Needs confirm: true.

### `eventee_check_in_attendee` (~114 tokens)

Check in attendee

WRITE: check a participant in at the event (sets checked_at to now) or undo the check-in. Use the participant `id` from eventee_list_participants. Fails if the person is not a participant of the event. PATCH /public/api/v1/attendee/{attendee_id}/checkin.

Input parameters:

- `attendee_id` (integer, required): Participant id (eventee_list_participants → id).
- `checkin` (boolean, required): true = check in, false = undo the check-in.

### `eventee_remove_attendee` (~128 tokens)

Remove attendee

WRITE, IRREVERSIBLE: remove the person with this email from the event: their participation, invitation and tickets for this event are deleted (their Eventee account is not). Eventee reports success even when nobody had that email. Needs confirm: true (without it: a preview, nothing removed). DELETE /public/api/v1/attendee?email=.

Input parameters:

- `confirm` (boolean): Must be true to run. Without it nothing is changed and a preview is returned; ask the user to approve first.
- `email` (string, required): Email of the attendee to remove.

### `eventee_remove_registration` (~104 tokens)

Remove registration

WRITE, IRREVERSIBLE: delete the registration with this email. Eventee reports success even when no such registration exists. Needs confirm: true (without it: a preview, nothing deleted). DELETE /public/api/v1/registration?email=.

Input parameters:

- `confirm` (boolean): Must be true to run. Without it nothing is changed and a preview is returned; ask the user to approve first.
- `email` (string, required): Email of the registration to delete.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-eventee/eventee#diagnostics

## Score history

- 2026-10-25: 62
- 2026-10-24: 62

## Common questions

### What is the Eventee MCP by usefulapi server?

Eventee MCP by usefulapi is listed in the public MCP registry as io.usefulapi/eventee. Read an Eventee event's program, participants and reviews; create sessions, speakers; invite. This page covers its hosted endpoint (https://eventee.usefulapi.io/mcp).

### Is the Eventee MCP by usefulapi server safe to use?

Eventee MCP by usefulapi scores 62 out of 100 on VerifyMCP. 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 Eventee MCP by usefulapi server expose?

Eventee MCP by usefulapi exposes 18 tools: eventee_get_program, eventee_list_participants, eventee_list_registrations, eventee_list_groups, eventee_list_reviews, and 13 more. Their descriptions and schemas cost roughly 3,408 tokens of context every time the server is loaded.

### Does the Eventee MCP by usefulapi server require authentication?

Yes. Eventee MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Eventee MCP by usefulapi server still maintained?

Eventee MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://eventee.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/eventee/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-eventee/eventee.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-eventee/eventee.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-eventee/eventee
