MCP (Model Context Protocol)
Jade speaks the Model Context Protocol, so AI assistants can work with Jade directly. There are two endpoints, for two different people: organizers running events, and participants registering for them.
| Organizers | Participants | |
|---|---|---|
| For | An organizer connecting their own assistant — Claude, ChatGPT, Microsoft Copilot Studio, Cursor, VS Code — to work on their events. | An AI assistant you build, registering a person for an event on their behalf. A Jade administrator issues it an API account. |
| Endpoint | /api/mcp/organizer | /api/mcp/participant |
| Sign-in | OAuth 2.1: the organizer signs in with their Jade login and approves the app. No API account. | An API account bearer token for your assistant, plus an emailed one-time code that only the person being registered can read. |
| Can do | Nearly every organizer tool — 234, in 13 toolsets — with exactly the organizer’s own permissions, for every client unless its administrator turned AI assistant access off. | Register one person, then work on their own registration — answers, balance due, hotels, exhibitor appointments, group members, recommendations — with 23 tools. Payment always goes back to the person. |
| Rate limit | 120 requests per minute per connected app; beyond that, 429 Too Many Requests with a Retry-After header. | Sign-in codes: 3 per email per hour and 200 per API account per day. No per-minute request limit. |
| Guide | Connect an AI assistant (organizers) | Connect an AI assistant (participants) |
Endpoints and discovery
POST /api/mcp/organizer
POST /api/mcp/participantstreamable-http transport, statelessly: send each JSON-RPC message as its own POST; GET and DELETE answer 405. Jade also has an internal MCP endpoint, reserved for Jade’s own assistant; outside assistants use one of the two above.
Discovery
Your own tooling can find both endpoints without prior configuration by fetching Jade’s MCP discovery document. It needs no token, every path in it is relative to the site origin, and it also lists feedback-tracker, an internal endpoint for Jade’s own developers.
GET /api/.well-known/mcp.jsonResponse shape (abridged):
{
"endpoints": [
{
"name": "participant",
"url": "/api/mcp/participant",
"transport": "streamable-http",
"authentication": {
"type": "bearer",
"scheme": "Bearer",
"documentation": "An API account token (`jdo_…`) issued by a Jade administrator, on an account with `canActAsParticipantAgent: true` …"
},
"tools": [
"agent_list_flows",
"agent_request_otp",
"agent_submit_registration",
"agent_verify_otp",
"..."
],
"description": "Connect an AI assistant that registers a person for a Jade event on their behalf. …"
},
{
"name": "organizer",
"url": "/api/mcp/organizer",
"transport": "streamable-http",
"authentication": {
"type": "bearer",
"scheme": "Bearer",
"documentation": "OAuth 2.1 (authorization code + PKCE, dynamic client registration) — discover via /.well-known/oauth-protected-resource/api/mcp/organizer …"
},
"tools": [
"add_contract_version",
"add_email_block",
"add_hotel_from_leonardo",
"..."
],
"description": "Connect an organizer's own AI assistant (Claude, ChatGPT, Microsoft Copilot Studio, Cursor, VS Code) to Jade. …"
}
],
"documentation": "/developers/mcp"
}Organizer endpoint
Add the organizer endpoint to an assistant as a custom connector. The assistant finds Jade’s sign-in on its own from the first response, registers itself, and sends the organizer to Jade to sign in and approve it — standard OAuth 2.1 with PKCE, dynamic client registration and RFC 9728 discovery.
Event tools take the event they act on (an eventCode from list_my_events) and client tools take a clientCode, so one connection works across all of an organizer’s events and clients; a connection can limit itself to a few toolsets with ?toolsets=. Every request is re-checked against the organizer’s current access. Tools are marked read-only or not, and actions that cannot be undone — payments, sends, contract signature, deletes and resets — are marked destructive, so assistants ask before running them. Access is on for every client unless a client administrator turns it off, and organizers can disconnect an app at any time.
429 Too Many Requests with a Retry-After header.
Setup for each assistant, the full tool list, limits and troubleshooting →
Participant endpoint
An AI assistant you build registers a person for an event on their behalf, then looks up and updates their registration. It can act for the person only after they confirm an emailed one-time code that only they can read.
Sign-in: two identities
Every tool call on the participant endpoint carries two identities:
- The assistant (bearer token).
An Authorization: Bearer <token>header with a token issued under an API account that hascanActAsParticipantAgentturned on. The flag is off by default; ask your Jade administrator for an account with it. - The person (participant session).
An X-Participant-Session: <token>header carrying the session token the person’s one-time code was exchanged for.Issued by agent_verify_otp; scoped to one(tenantCode, clientCode, eventCode, email); valid for one hour.
agent_request_otp, agent_verify_otp) need only the bearer token — there is no session yet. Every other tool needs both.
get_my_registration or recommend_products.
Tools
agent_request_otp, agent_verify_otp, agent_list_flows, agent_submit_registration), plus a subset of the participant tools Jade’s own assistant uses inside registration. Several of them change data or send email — sending a sign-in code, submitting or updating the registration, registering group members, booking or cancelling an appointment, resending the confirmation email and saving the person’s generated profile — so the assistant should confirm with the person before each.
| Group | What it covers | Tools |
|---|---|---|
| Sign-in | Email the person a one-time code and exchange it for their session. The only tools that work before a session exists. | agent_request_otpagent_verify_otp |
| Registration | List the flows, submit a registration, then read and update the person’s own registration, their balance due and their confirmation email. | agent_list_flowsagent_submit_registrationdescribe_my_flowget_my_registrationupdate_my_registrationcheck_balance_dueresend_my_confirmation_emaillist_data_fields |
| Housing | The event’s hotels, and a hotel recommendation for the person. | get_hotel_listrecommend_hotel |
| Groups | Register the members of the person’s group from a template. | get_group_import_templateimport_group_members |
| Exhibitors & appointments | The booth map, exhibitor availability, and booking or cancelling the person’s appointments. | get_booth_maplist_exhibitor_availabilitybook_exhibitor_appointmentlist_my_appointmentscancel_my_appointment |
| Recommendations | Products, exhibiting companies and other participants suited to the person, from their profile, once the session knows the registered person. | recommend_productsrecommend_companiesrecommend_participantsgenerate_participant_profile |
What it does not serve
The endpoint acts for one verified person at one event, so it serves only what that person may do for themselves. Left out:
- Working through the form with the person: the cart, the product list, policy agreements, moving between form pages and form progress. Jade’s own in-registration assistant has these because it sits beside the form the person has open; here the person does those steps in their browser, at the link.
Payment. The assistant never sees payment details; the person pays at the link agent_submit_registrationreturns.- Organizer tools — event setup, other people’s registrations, reports and exports. They need an organizer’s own Jade login, through the organizer endpoint.
- Tenant-wide tools — queries across events, creating events and account administration.
- Jade’s support-inbox tools, and the tools an exhibiting company’s administrators use for their company.
Rate limits
Sign-in codes per email: 3 per hour. Codes are 6 digits, stored hashed, allow 3 attempts and expire after 15 minutes. Sign-in codes per API account: 200 per day, so an assistant cannot work through an address book. There is no per-minute request limit on this endpoint: an API account’s rateLimitPerMinuteapplies to the/v1REST API only. Going over a sign-in code limit makesagent_request_otpreturn a tool error, not an HTTP 429.
A worked example, from the emailed one-time code to the registration link →
Guides
Connect an AI assistant (organizers): setup for Claude, ChatGPT, Microsoft Copilot Studio, Cursor and VS Code, the full tool list, limits and troubleshooting. Connect an AI assistant (participants): a worked example from agent_request_otpthrough to a completed registration link.