Demio MCP by usefulapi
Read webinars, sessions and participants, and register attendees for a webinar in Demio.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"demio": {
"url": "https://demio.usefulapi.io/mcp"
}
}
}Remote endpoints
https://demio.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢demio_check_connection
Check that the API key and secret are valid. Returns pong=true and whether the key pair is a sandbox pair. Demio API: GET /ping.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢demio_list_events(type)
List active (not canceled) webinar events with their next session, status, time and registration URL. Use type=upcoming for future sessions, past for finished ones, or automated for evergreen events. Demio API: GET /events.
Input Schema
{
"type": "object",
"properties": {
"type": {
"description": "Filter by event type. Omit for all active events.",
"type": "string",
"enum": [
"upcoming",
"past",
"automated"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢demio_get_event(event_id, active)
Get one event with its registration URL, next session ID and every session (date) in its series, with status and time. Demio API: GET /event/{id}.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Event ID (from demio_list_events)."
},
"active": {
"description": "Return only the active sessions in the series.",
"type": "boolean"
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢demio_get_event_session(event_id, date_id)
Get one session (event date) with its status, Unix timestamp and time zone. Demio API: GET /event/{id}/date/{date_id}.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Event ID (from demio_list_events)."
},
"date_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Session ID, also called Event Date ID (from demio_get_event)."
}
},
"required": [
"event_id",
"date_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢demio_list_participants(date_id, status)
List the participants of one session with their name, email, custom field values, attendance flag and status. Use status to filter (attended, did not attend, completed, left early, banned). Demio API: GET /report/{date_id}/participants.
Input Schema
{
"type": "object",
"properties": {
"date_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Session ID, also called Event Date ID (from demio_get_event)."
},
"status": {
"description": "Only return participants with this status.",
"type": "string",
"enum": [
"attended",
"did not attend",
"completed",
"left early",
"banned"
]
}
},
"required": [
"date_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴demio_register_attendee(event_id, ref_url, date_id, name, email, ...)
WRITE: register one person for a webinar and return their personal join link. Give event_id or ref_url. Without date_id, Demio uses the nearest active session. A repeat call can create a second registrant. Demio API: PUT /event/register.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID. Give this or ref_url.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"ref_url": {
"description": "Event registration page URL, when the event ID is unknown.",
"type": "string",
"format": "uri"
},
"date_id": {
"description": "Session ID. Omit to use the nearest active session.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"description": "First name of the registrant."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email address of the registrant."
},
"last_name": {
"description": "Last name (predefined field).",
"type": "string"
},
"company": {
"description": "Company (predefined field).",
"type": "string"
},
"website": {
"description": "Website (predefined field).",
"type": "string"
},
"phone_number": {
"description": "Phone number (predefined field).",
"type": "string"
},
"gdpr": {
"description": "Value for the predefined GDPR field.",
"type": "string"
},
"custom_fields": {
"description": "Custom registration fields as { field_id: value }. Field IDs are in the event's Registration block.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"name",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence