MCP (Model Context Protocol)
Connect AI agents and personal assistants to Jade events. Lets a third-party agent register people, look up registrations, and pull details on the user's behalf — gated by an email OTP that only the person being registered can read.
The endpoint
The externally-callable MCP server lives at:
POST /api/mcp/participant-agent Transport is streamable-http. The internal /mcp endpoint exists too but is reserved for Jade's own agent — third parties only call /mcp/participant-agent.
Discovery
Personal-assistant tooling can find the endpoint without prior configuration by fetching the well-known discovery doc:
GET /api/.well-known/mcp.jsonResponse shape:
{
"endpoints": [
{
"name": "participant-agent",
"url": "/mcp/participant-agent",
"transport": "streamable-http",
"authentication": {
"type": "bearer",
"scheme": "Bearer",
"documentation": "Issued under an API Account with `canActAsParticipantAgent: true`. Contact the event organizer to obtain one."
},
"tools": [
"agent_request_otp",
"agent_verify_otp",
"agent_list_flows",
"agent_submit_registration"
],
"description": "Register a person for an event on their behalf."
}
],
"documentation": "/api/docs"
}Two-layer auth
Every tool call on /mcp/participant-agent carries two identities:
- Agent app identity (bearer token). An
Authorization: Bearer <token>header issued under an API account with thecanActAsParticipantAgentflag enabled. Ask your Jade administrator to provision one — this flag is off by default. - Human identity (participant session). An
X-Participant-Session: <token>header carrying an OTP-derived session token. Issued byagent_verify_otp; scoped to a single(clientCode, eventCode, email); 1-hour TTL.
The OTP tools (agent_request_otp, agent_verify_otp) only require the bearer — no session token yet. Every other tool requires both.
Tool catalog
The participant-agent surface is filtered to four agent-specific tools plus the read-only participant tools used by the in-app participant chat. Mutators outside the registration pipeline, organizer tools, and enterprise tools are not exposed.
Agent tools
agent_request_otp— email a 6-digit code to the user. Throttled to 3 codes per email per hour and 200 codes per API account per day.agent_verify_otp— verify the code; returns the session token to use on subsequent tool calls. The user has 3 attempts before the code burns; codes expire after 15 minutes.agent_list_flows— list the event's visible entry flows (attendee, exhibitor, speaker, etc.) with their field schemas so the agent knows what to collect.agent_submit_registration— submit the registration data. Returns a resume URL the user opens in a browser. Payment always requires the user — the URL drops the user at whatever step is next, including checkout.
Read-only participant tools (once a session is established)
get_my_registration— current registration data + completion status.update_my_registration— patch the active registration; remaining steps still require the user to finish in browser if payment is involved.check_balance_due/describe_my_flow/get_hotel_list— read-only context for the agent's UI.
What's not on the agent surface
By design, none of the following are reachable from /mcp/participant-agent:
- Organizer tools — anything that edits event config (flows, products, discounts, pricing, hotels, theme, etc.).
- Enterprise tools — cross-event queries, event creation, billing.
- Support tools — agent OTP for support inboxes, identity lookup.
- Background and reporting bulk-export tools.
- Payment completion. Agents always hand off to the user via the resume URL returned from
agent_submit_registration.
Rate limits
- OTP per email: 3 codes per hour. Codes are bcrypt-hashed at rest; 6 digits with 3 verification attempts before burn; 15-minute TTL.
- OTP per account: 200 codes per day. Prevents an agent app from harvesting an address book.
- Bearer rate limit: Inherited from the API account's
rateLimitPerMinute(default 60/min).
Next steps
- Follow the MCP setup guide for a worked example from
agent_request_otpthrough to a completed registration URL. - Tooling that supports MCP discovery (Claude Desktop, custom agents) can ingest
/.well-known/mcp.jsondirectly.