# AddEvent MCP by usefulapi (remote · addevent.usefulapi.io)

Read AddEvent calendars, events, RSVPs and subscribers; create and update calendars and events.

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

## Components

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

## Channel facts

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

## 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-16.

- **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**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3345 tokens (~185/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**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 93% 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 18 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - 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 AddEvent MCP by usefulapi server?

AddEvent MCP by usefulapi is a hosted endpoint at https://addevent.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-addevent 'https://addevent.usefulapi.io/mcp'
```

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-addevent": {
      "type": "http",
      "url": "https://addevent.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-16 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-13 (score 61, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional improvement] Stability: unverified → 0.03
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-12 (score 59)

First indexed and scored.

## MCP tools (18)

### `addevent_list_calendars` (~139 tokens)

List calendars

List the account's calendars (newest first by default) with id, title, timezone, whether it is the default calendar, landing-page links and counts of events and subscribers. GET /calendars.

Input parameters:

- `calendar_ids` (array): Only these calendar ids.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-20 (default 10).
- `sort_by` (string): Sort field (default created).
- `sort_order` (string): Sort direction. Needs sort_by.

### `addevent_get_calendar` (~61 tokens)

Get calendar

One calendar by id: title, timezone, week start, template ids, subscriber and event counts, links, custom data. GET /calendars/{id}.

Input parameters:

- `calendar_id` (required): Calendar id (see addevent_list_calendars).

### `addevent_create_calendar` (~214 tokens)

Create calendar

WRITE: creates a new calendar in the AddEvent account (a new, empty calendar; nothing existing is changed and nobody is notified). Needs a title. POST /calendars.

Input parameters:

- `calendar_color` (integer): Color 1-20 from the palette.
- `custom_data` (object): Arbitrary key-value pairs to store on the object (snake_case keys), e.g. an external id.
- `description` (string): Shown on the calendar landing page.
- `embeddable_calendar_template_id` (string): Embeddable calendar template id, or 'default'.
- `internal_name` (string): Internal name, never shown publicly.
- `landing_page_template_id` (string): Calendar landing page template id, or 'default' (see addevent_list_calendar_templates).
- `timezone` (string): Default timezone for events on this calendar (IANA name).
- `title` (string, required): Calendar title (single line).
- `weekday_begin` (string): First day of the week.

### `addevent_update_calendar` (~223 tokens)

Update calendar

WRITE: changes fields of an existing calendar (only the fields you pass; the rest stay). Title, description and timezone changes show on its landing page and can reach people who subscribe to the calendar feed. Not reversible by this server (no previous values are kept), so read the calendar first. PATCH /calendars/{id}.

Input parameters:

- `calendar_color` (integer): Color 1-20 from the palette.
- `calendar_id` (required): Calendar id to change.
- `custom_data` (object): Key-value pairs to store on the calendar (snake_case keys).
- `description` (string)
- `embeddable_calendar_template_id` (string)
- `internal_name` (string): Internal name, never shown publicly.
- `landing_page_template_id` (string)
- `timezone` (string): IANA timezone such as America/Los_Angeles, or 'floating' (same local time for everyone). See addevent_list_timezones.
- `title` (string): New title (single line).
- `weekday_begin` (string)

### `addevent_list_events` (~272 tokens)

List events

Search the account's events (newest created first; by start time when a date filter is used): title, start/end, timezone, location, RSVP settings and stats, landing-page links. Filter by calendar, event ids, text, date window or a custom_data pair. GET /events.

Input parameters:

- `calendar_ids` (array): Only events on these calendar ids.
- `custom_data_key` (string): Custom data key (needs custom_data_value).
- `custom_data_value` (string): Custom data value (needs custom_data_key).
- `ends_after` (string): Only events that end after this date-time (datetime_min; naive comparison, timezones ignored).
- `event_ids` (array): Only these event ids.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-20 (default 10).
- `search` (string): Case-insensitive text in title, internal name, description or location.
- `sort_by` (string): Sort field.
- `sort_order` (string): Sort direction. Needs sort_by.
- `starts_before` (string): Only events that start before this date-time (datetime_max; naive comparison, timezones ignored).

### `addevent_get_event` (~87 tokens)

Get event

One event by id (evt-...): all fields incl. description, organizer, reminder, recurring rule, RSVP settings and stats, custom data and share links. GET /events/{id}.

Input parameters:

- `event_id` (required): Event id, like evt-0f571af553d8437eb6a9ce22384fdcba (see addevent_list_events).

### `addevent_create_event` (~525 tokens)

Create event

WRITE: creates a new event on a calendar (the account's default calendar if calendar_id is omitted). Creates a public event landing page and share links; it does not e-mail anyone, though people subscribed to that calendar's feed will see the event on their next sync. Needs title and datetime_start. POST /events.

Input parameters:

- `all_day_event` (boolean): All-day event: only the dates are used.
- `calendar_id`: Calendar to add the event to (see addevent_list_calendars); default calendar if omitted.
- `color` (integer): Color 1-20 from the palette.
- `custom_data` (object): Arbitrary key-value pairs to store on the object (snake_case keys), e.g. an external id.
- `datetime_end` (string): End date-time (default: start + 1 hour). Same formats as the start.
- `datetime_start` (string, required): Start date-time: YYYY-MM-DD, YYYY-MM-DD hh:mm or YYYY-MM-DD hh:mm:ss.
- `description` (string): Plain text or simple HTML (keep under ~500 characters for cross-browser links).
- `free_busy` (string): How the event shows in an attendee's calendar.
- `internal_name` (string): Internal name, never shown publicly.
- `landing_page_template_id` (string): Event landing page template id or 'default' (see addevent_list_event_templates).
- `location` (string): Address or URL (meeting link). Use either location or location_id, not both.
- `location_id` (integer): Id of a saved location (0 = none). Not together with location.
- `organizer_email` (string): Organizer e-mail (needs organizer_name).
- `organizer_name` (string): Organizer name (needs organizer_email).
- `recurring_rule` (string): iCalendar recurrence rule such as FREQ=WEEKLY;COUNT=10. The start must match the rule. Omit for a one-off event; on update an empty string makes the event stop repeating.
- `reminder` (integer): Minutes before the start for a calendar-app reminder (0-10800).
- `rsvp_enabled` (boolean): Require an RSVP before the event can be added to a calendar.
- `rsvp_form_id` (string): RSVP form id or 'default' (see addevent_list_rsvp_forms).
- `timezone` (string): IANA timezone for the start/end (default: the calendar's timezone), or 'floating'.
- `title` (string, required): Event title (single line).

### `addevent_update_event` (~542 tokens)

Update event

WRITE: changes fields of an existing event (only the fields you pass; the rest stay). The change goes live on its landing page and share links, and people who subscribed to the calendar or added the event with a live link are updated on their next calendar sync, so a time or location change can notify real people. No previous values are kept: read the event first. PATCH /events/{id}.

Input parameters:

- `all_day_event` (boolean): All-day event: only the dates are used.
- `calendar_id`: Move the event to this calendar id.
- `color` (integer): Color 1-20 from the palette.
- `custom_data` (object): Arbitrary key-value pairs to store on the object (snake_case keys), e.g. an external id.
- `datetime_end` (string): End date-time (default: start + 1 hour). Same formats as the start.
- `datetime_start` (string): New start: YYYY-MM-DD, YYYY-MM-DD hh:mm or YYYY-MM-DD hh:mm:ss.
- `description` (string): Plain text or simple HTML (keep under ~500 characters for cross-browser links).
- `event_id` (required): Event id (evt-...) to change.
- `free_busy` (string): How the event shows in an attendee's calendar.
- `internal_name` (string): Internal name, never shown publicly.
- `landing_page_template_id` (string): Event landing page template id or 'default' (see addevent_list_event_templates).
- `location` (string): Address or URL (meeting link). Use either location or location_id, not both.
- `location_id` (integer): Id of a saved location (0 = none). Not together with location.
- `organizer_email` (string): Organizer e-mail (needs organizer_name).
- `organizer_name` (string): Organizer name (needs organizer_email).
- `recurring_rule` (string): iCalendar recurrence rule such as FREQ=WEEKLY;COUNT=10. The start must match the rule. Omit for a one-off event; on update an empty string makes the event stop repeating.
- `reminder` (integer): Minutes before the start for a calendar-app reminder (0-10800).
- `rsvp_enabled` (boolean): Require an RSVP before the event can be added to a calendar.
- `rsvp_form_id` (string): RSVP form id or 'default' (see addevent_list_rsvp_forms).
- `timezone` (string): IANA timezone for the start/end (default: the calendar's timezone), or 'floating'.
- `title` (string): New title (single line).

### `addevent_list_rsvp_attendees` (~190 tokens)

List RSVP attendees

List RSVP attendees (personal data: e-mail addresses and the answers they gave on the RSVP form). Filter by calendar, event or response (going/maybe/not-going). Paged, 20 at most per page: read only what the task needs. IP address and coordinates are removed from the reply. GET /rsvps.

Input parameters:

- `attending` (string): Only attendees with this response.
- `calendar_ids` (array): Only attendees of events on these calendar ids.
- `event_ids` (array): Only attendees of these event ids.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-20 (default 10).
- `sort_by` (string)
- `sort_order` (string): Sort direction. Needs sort_by.

### `addevent_get_rsvp_attendee` (~62 tokens)

Get RSVP attendee

One RSVP attendee by id (personal data: e-mail and form answers; IP address and coordinates removed). GET /rsvps/{id}.

Input parameters:

- `attendee_id` (required): RSVP attendee id (see addevent_list_rsvp_attendees).

### `addevent_create_rsvp_attendee` (~176 tokens)

Create RSVP attendee

WRITE: adds ONE RSVP attendee (one e-mail address, personal data) to an event. This server never asks AddEvent to send the confirmation or organizer notification e-mails, but the event's own reminder and follow-up e-mails (if the event has them) will later go to this address, so only add someone who really RSVP'd. The e-mail must be unique per event. POST /events/{id}/rsvps.

Input parameters:

- `attending` (string): The attendee's response.
- `email` (string, required): Attendee e-mail address (unique per event).
- `event_id` (required): Event id (evt-...) to RSVP to.
- `rsvp_form_data` (object): Answers to the event's RSVP form as field-name -> value. The default form needs {"name": "..."}.

### `addevent_update_rsvp_attendee` (~141 tokens)

Update RSVP attendee

WRITE: changes ONE RSVP attendee (email, response or form answers; only the fields you pass). The event's reminder and update e-mails go to the e-mail address stored here, so changing it redirects those e-mails to that person. This server never triggers the confirmation or organizer notification e-mails. PATCH /rsvps/{id}.

Input parameters:

- `attendee_id` (required): RSVP attendee id.
- `attending` (string)
- `email` (string): New e-mail address.
- `rsvp_form_data` (object): Answers to the event's RSVP form as field-name -> value. The default form needs {"name": "..."}.

### `addevent_list_calendar_subscribers` (~190 tokens)

List calendar subscribers

List people subscribed to the account's calendars (personal data: the form answers they gave, such as name and e-mail; calendar app type, sync status). Paged, 20 at most per page. IP address and coordinates are removed. GET /subscribers.

Input parameters:

- `calendar_ids` (array): Only subscribers of these calendar ids.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-20 (default 10).
- `sort_by` (string)
- `sort_order` (string): Sort direction. Needs sort_by.
- `status` (string): active = synced in the last 30 days; inactive = not; blocked = blocked by the owner. AddEvent returns only active ones when omitted, so call once per status.

### `addevent_get_calendar_subscriber` (~52 tokens)

Get calendar subscriber

One calendar subscriber by id (personal data; IP address and coordinates removed). GET /subscribers/{id}.

Input parameters:

- `subscriber_id` (required): Subscriber id (see addevent_list_calendar_subscribers).

### `addevent_list_rsvp_forms` (~46 tokens)

List RSVP forms

The account's RSVP forms (id, name), newest first. Use the id as rsvp_form_id on an event. GET /events/rsvp-forms.

### `addevent_list_event_templates` (~44 tokens)

List event landing page templates

The account's event landing page templates (id, name), newest first. Use the id as landing_page_template_id on an event. GET /events/templates.

### `addevent_list_calendar_templates` (~81 tokens)

List calendar templates

The account's calendar landing page templates or embeddable calendar templates (id, name), newest first. Use the id as landing_page_template_id / embeddable_calendar_template_id on a calendar. GET /calendars/templates.

Input parameters:

- `type` (string): calendar-landing (default) or calendar-embed (embeddable calendars).

### `addevent_list_timezones` (~87 tokens)

List timezones

Timezone names AddEvent supports (use them as the timezone of events and calendars), with current UTC offset. Optional text filter on the name. GET /timezones.

Input parameters:

- `limit` (integer): Most entries to return (default 100).
- `search` (string): Case-insensitive part of the name, e.g. 'Prague' or 'America/'.

## Diagnostics

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

## Score history

- 2026-10-16: 63
- 2026-10-15: 62
- 2026-10-14: 62
- 2026-10-13: 61
- 2026-10-12: 59

## Common questions

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

AddEvent MCP by usefulapi is listed in the public MCP registry as io.usefulapi/addevent. Read AddEvent calendars, events, RSVPs and subscribers; create and update calendars and events. This page covers its hosted endpoint (https://addevent.usefulapi.io/mcp).

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

AddEvent MCP by usefulapi scores 63 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 AddEvent MCP by usefulapi server expose?

AddEvent MCP by usefulapi exposes 18 tools: addevent_list_calendars, addevent_get_calendar, addevent_create_calendar, addevent_update_calendar, addevent_list_events, and 13 more. Their descriptions and schemas cost roughly 3,132 tokens of context every time the server is loaded.

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

Yes. AddEvent 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 AddEvent MCP by usefulapi server still maintained?

AddEvent MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 16 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://addevent.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/addevent/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-addevent/addevent.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-addevent/addevent.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-addevent/addevent
