MCP (Model Context Protocol)
Jade speaks the Model Context Protocol, so AI assistants can work with Jade directly. There are three endpoints: one any person’s own assistant can use to register them, with no account; one for partner integrations that register people with an API account; and one for organizers running their events.
| Personal assistants | Partner integrations | Organizers | |
|---|---|---|---|
| For | A person’s own assistant — Siri, ChatGPT, Claude, Grok, Muse — finding events and registering them, or changing their registration. | An AI assistant you build, registering a person for an event on their behalf. A Jade administrator issues it an API account. | An organizer connecting their own assistant — Claude, ChatGPT, Microsoft Copilot Studio, Cursor, VS Code — to work on their events. |
| Endpoint | /api/mcp/agents | /api/mcp/participant | /api/mcp/organizer |
| Sign-in | None to connect. The assistant proves the person’s email with an emailed 6-digit code and passes the session it gets back as tool arguments. | An API account bearer token for your assistant, plus an emailed one-time code that only the person being registered can read. | OAuth 2.1: the organizer signs in with their Jade login and approves the app. No API account. |
| Can do | Register the person — answers, cart at real prices, discount codes, policies, rooms — and change or cancel their registration, with 25 tools, only on flows an organizer opened to personal agents. Payment always goes back to the person. | 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. | Nearly every organizer tool — 272, in 13 toolsets — with exactly the organizer’s own permissions, for every client unless its administrator turned AI assistant access off. |
| Rate limit | 60 requests per minute per IP address, then 429 Too Many Requests. Sign-in codes: 3 per email per event per hour. | Sign-in codes: 3 per email per hour and 200 per API account per day. No per-minute request limit. | 120 requests per minute per connected app; beyond that, 429 Too Many Requests with a Retry-After header. |
| Guide | Personal assistants — no account needed | Partner integrations (API account) | Connect an AI assistant (organizers) |
Endpoints and discovery
POST /api/mcp/agents
POST /api/mcp/participant
POST /api/mcp/organizerstreamable-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 three above.
Discovery
Your own tooling can find every endpoint without prior configuration by fetching Jade’s MCP discovery document. It needs no token, every path in it is relative to the site origin, the personal-assistant endpoint comes first with authentication none, and it also lists feedback-tracker, an internal endpoint for Jade’s own developers.
GET /api/.well-known/mcp.jsonResponse shape (abridged):
{
"endpoints": [
{
"name": "personal-agents",
"url": "/api/mcp/agents",
"transport": "streamable-http",
"authentication": {
"type": "none",
"documentation": "No account or key to connect. Acting for a person needs their session: `verify_email` returns …"
},
"tools": [
"accept_policy",
"apply_discount_code",
"cancel_registration",
"cancel_room",
"..."
],
"description": "For a person's own AI assistant: find events whose registration accepts assistants …"
},
{
"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"
}Personal-assistant endpoint
start_registration emails the person a 6-digit code, and verify_email exchanges it for the same session the registration page holds (and, for someone already registered, the registration dashboard’s). The assistant passes those as the sessionToken and modifyToken tool arguments and then acts as the person, at the same prices and under the same rules.
payment_required with a link the person pays at in their browser. Limits: 60 requests per minute per IP address, and 3 sign-in codes per email per event per hour.
| Group | What it covers | Tools |
|---|---|---|
| Find | Search events whose registration accepts personal assistants, read one, and read a flow’s questions. No session needed. | search_eventsget_eventdescribe_registration |
| Sign-in | Email the person a 6-digit code and exchange it for the same registration (and modify) session the registration page uses. | start_registrationverify_email |
| Register | Answer the flow’s questions, choose products at real prices, apply discount codes, accept policies and submit — under the registration page’s own rules. | get_registrationsave_answerslist_productsupdate_cartget_cartapply_discount_codeget_policiesaccept_policysubmit_registration |
| Housing | Search hotels, hold and release rooms, list the booking, join or leave a room waitlist and cancel a booked room. | search_hotelshold_roomsrelease_roomlist_my_roomscancel_roomleave_room_waitlist |
| Change a registration | Read a finished registration, change answers, price and submit changes, or cancel — as the modify dashboard does. | get_my_registrationupdate_registrationpreview_changessubmit_changescancel_registration |
Connecting, signing in, a worked example, payment and limits →
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 partner endpoint (API account)
For vetted integrators: 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. An assistant you only configure, rather than build, uses the personal-assistant endpoint instead.
Sign-in: two identities
Every tool call on the participant partner 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 partner 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): personal assistants from search_eventsto a submitted registration, then partner integrations fromagent_request_otpto a registration link.