AddEvent MCP by usefulapi
REMOTE · ADDEVENT.USEFULAPI.IO
Read AddEvent calendars, events, RSVPs and subscribers; create and update calendars and events.
Available components
Last scanned (21 hours ago)
Scores higher than 46% of remote servers
Reachable. Last reached 16 Oct 2026.
Category Productivity and Notes
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. How we score → Why this is hard to score →
Endpoint Security78
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- 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. View diagnostics → Pass
- HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
- Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 93% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 16 Oct 26 +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.
- 14 Oct 26 +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.
- 13 Oct 26 +2
- The server rewrote its instructions, which are the text every model session reads security
- 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 functional
- 12 Oct 26 59
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Probed https://addevent.usefulapi.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=usefulapi.io | CN=WE1,O=Google Trust Services,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | d9be3287b0fde9630e825ba1f79bff3f |
| SANs: usefulapi.io, *.usefulapi.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of addevent.usefulapi.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| usefulapi.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 302 |
WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://addevent.usefulapi.io/.well-known/oauth-protected-resource/mcp"
Bearer realm="OAuth", resource_metadata="https://addevent.usefulapi.io/.well-known/oauth-protected-resource/mcp" Protected resource metadata
| Document | https://addevent.usefulapi.io/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://addevent.usefulapi.io/mcp |
| Authorisation server | https://addevent.usefulapi.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://addevent.usefulapi.io/mcp | Redirected | 302 | https://usefulapi.io/addevent/ |
| http (plaintext) | http://addevent.usefulapi.io/mcp | Inconclusive | 302 | http://addevent.usefulapi.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
addevent_create_calendar Create calendar ~214
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Calendar title (single line). |
| weekday_begin | string | – | First day of the week. |
No output schema declared.
No examples provided.
addevent_create_event Create event ~525
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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 | yes | Event title (single line). |
No output schema declared.
No examples provided.
addevent_create_rsvp_attendee Create RSVP attendee ~176
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.
| Name | Type | Req | Description |
|---|---|---|---|
| attending | string | – | The attendee's response. |
| string | yes | Attendee e-mail address (unique per event). | |
| event_id | – | yes | 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": "..."}. |
No output schema declared.
No examples provided.
addevent_get_calendar Get calendar ~61
One calendar by id: title, timezone, week start, template ids, subscriber and event counts, links, custom data. GET /calendars/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar_id | – | yes | Calendar id (see addevent_list_calendars). |
No output schema declared.
No examples provided.
addevent_get_calendar_subscriber Get calendar subscriber ~52
One calendar subscriber by id (personal data; IP address and coordinates removed). GET /subscribers/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| subscriber_id | – | yes | Subscriber id (see addevent_list_calendar_subscribers). |
No output schema declared.
No examples provided.
addevent_get_event Get event ~87
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| event_id | – | yes | Event id, like evt-0f571af553d8437eb6a9ce22384fdcba (see addevent_list_events). |
No output schema declared.
No examples provided.
addevent_get_rsvp_attendee Get RSVP attendee ~62
One RSVP attendee by id (personal data: e-mail and form answers; IP address and coordinates removed). GET /rsvps/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| attendee_id | – | yes | RSVP attendee id (see addevent_list_rsvp_attendees). |
No output schema declared.
No examples provided.
addevent_list_calendar_subscribers List calendar subscribers ~190
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
addevent_list_calendar_templates List calendar templates ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| type | string | – | calendar-landing (default) or calendar-embed (embeddable calendars). |
No output schema declared.
No examples provided.
addevent_list_calendars List calendars ~139
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
addevent_list_event_templates List event landing page templates ~44
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
addevent_list_events List events ~272
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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). |
No output schema declared.
No examples provided.
addevent_list_rsvp_attendees List RSVP attendees ~190
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
addevent_list_rsvp_forms List RSVP forms ~46
The account's RSVP forms (id, name), newest first. Use the id as rsvp_form_id on an event. GET /events/rsvp-forms.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
addevent_list_timezones List timezones ~87
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Most entries to return (default 100). |
| search | string | – | Case-insensitive part of the name, e.g. 'Prague' or 'America/'. |
No output schema declared.
No examples provided.
addevent_update_calendar Update calendar ~223
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar_color | integer | – | Color 1-20 from the palette. |
| calendar_id | – | yes | 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 | – | – |
No output schema declared.
No examples provided.
addevent_update_event Update event ~542
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | yes | 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). |
No output schema declared.
No examples provided.
addevent_update_rsvp_attendee Update RSVP attendee ~141
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| attendee_id | – | yes | RSVP attendee id. |
| attending | string | – | – |
| 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": "..."}. |
No output schema declared.
No examples provided.
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.
remote · addevent.usefulapi.io
claude mcp add --transport http io-usefulapi-addevent 'https://addevent.usefulapi.io/mcp'
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.