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 neededPartner integrations (API account)Connect an AI assistant (organizers)

Endpoints and discovery

POST /api/mcp/agents
POST /api/mcp/participant
POST /api/mcp/organizer

All three use the streamable-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.json

Response 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"
}

Off-the-shelf assistants are set up with the endpoint address instead — see Connect an AI assistant (organizers).

Personal-assistant endpoint

A person’s own assistant connects with no account, key or OAuth sign-in. Until the person’s email is proven it can only search events, read a flow’s questions and ask for a code: 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.

Only flows whose organizer turned on Open to personal agents (off by default) are offered, and only public or email-verified flows that are not hidden, not limited by tags and have no waiting room. When money is due, the submit tools return 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.

Each connected app may make 120 requests per minute. Beyond that Jade answers 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:

  1. The assistant (bearer token). An Authorization: Bearer <token> header with a token issued under an API account that has canActAsParticipantAgent turned on. The flag is off by default; ask your Jade administrator for an account with it.
  2. 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.

The sign-in tools (agent_request_otp, agent_verify_otp) need only the bearer token — there is no session yet. Every other tool needs both.

A session identifies the person’s registration only if they were already registered when they verified their code. After registering someone new, request and verify a fresh code before calling the tools that work on their registration or recommend for them, such as get_my_registration or recommend_products.

Tools

The participant endpoint serves 23 tools: four tools that sign the person in and register them (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_registration returns.
  • 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 rateLimitPerMinute applies to the /v1 REST API only. Going over a sign-in code limit makes agent_request_otp return a tool error, not an HTTP 429.

A worked partner example, from the emailed one-time code to the registration link →

Guides