
activationking
com.activationking/activationking
ActivationKing events, sessions, credits, event settings, white label, booth remote control, Ops.
Documentation
ActivationKing MCP
Connect your AI assistant to your ActivationKing account.
ActivationKing runs photo booths, AI experiences and games at live events. This MCP server lets an AI agent (Claude, Cursor, and other MCP clients) read your own ActivationKing data, change your event settings and white label branding, remote-control your booths, and manage your Ops Calendar: look up events and guest sessions, check credits, adjust a kiosk's screen texts, colors and timings, start, pause or drive a running booth and send it a photo, and create or update companies, event jobs and deals, for example to push a deal won in your CRM straight into Ops as a job.
| Endpoint | https://api.activationking.com/mcp |
| Transport | MCP Streamable HTTP (stateless) |
| Auth | Sign in with your ActivationKing account (OAuth 2.1, PKCE) or Authorization: Bearer ak_live_... (personal API key) |
| Rate limit | 300 requests per minute per key |
| Reference | llms.txt · llms-full.txt · OpenAPI · Interactive docs |
This repository holds the connection guide, a Claude Code plugin and the MCP Registry manifest. The server itself is hosted by ActivationKing; there is nothing to install or run.
1. Choose how to sign in
- Claude (claude.ai, Claude Desktop, mobile) and ChatGPT: no key needed. You add the server as a connector and sign in with your ActivationKing account; see Claude: connector.
- Claude Code, Cursor and other clients: use a personal API key (below). Claude Code can also sign in with your account instead (see Claude Code: server only).
Get an API key
- Sign in at activationking.com/dashboard/api-keys.
- Create a key. It starts with
ak_live_and is shown once. - With the Claude Code plugin you paste the key during the install (see below). For the other clients, store it as an environment variable rather than pasting it into config files:
# macOS / Linux
export ACTIVATIONKING_API_KEY="ak_live_..."
# Windows (persists for new terminals)
setx ACTIVATIONKING_API_KEY "ak_live_..."
A key only sees the data of the user who created it. Ops Calendar tools additionally follow that user's role in each organization.
2. Connect your client
Claude (claude.ai, Claude Desktop, mobile): connector
- In Claude open Customize > Connectors, then Add > Add custom connector.
- Name:
ActivationKing, MCP server URL:https://api.activationking.com/mcp, then Continue. - Keep the detected settings (Sign in now, Register automatically) and click Add.
- Click Connect. activationking.com opens: sign in if asked, check the account shown and click Connect & Continue. You return to Claude with Connected to ActivationKing.
- Choose per tool whether Claude may use it without asking. Write tools (settings, white label, booth commands, Ops) should stay on Needs approval.
The connector is added to your Claude account, so it also works in Claude Desktop and the mobile apps. To disconnect, open the connector and click Disconnect. Access tokens last one hour and renew automatically for 30 days of use; after that Claude asks you to sign in again.
On a Team or Enterprise plan an owner may have to add the connector for the organization first.
Claude Code: plugin (recommended)
The plugin adds the server and a skill that teaches Claude how to use the tools safely.
/plugin marketplace add activationking/activationking-mcp
/plugin install activationking@activationking
During the install Claude Code asks for your ActivationKing API key (ak_live_...). It is stored in Claude Code's secure credential store, not in a config file, and no environment variable is needed. Restart Claude Code, then check /mcp: plugin:activationking:activationking should show as connected.
- To change the key later:
/plugin configure activationking@activationking. - From a terminal:
claude plugin install activationking@activationking --config api_key=ak_live_...(or pipe{"api_key":"ak_live_..."}toclaude plugin configure activationking@activationking --values-stdin). - Until a key is set the plugin's server is not started, so you won't see a sign-in prompt for it. If
/mcpshows the server as failed, the key was revoked or mistyped: create a new one and run/plugin configureagain. - Upgrading from plugin 1.2.x: the plugin no longer reads
ACTIVATIONKING_API_KEY. Run/plugin configure activationking@activationkingonce and paste your key.
Claude Code: server only
Sign in with your ActivationKing account (no key):
claude mcp add --transport http activationking https://api.activationking.com/mcp
Then run /mcp in Claude Code, pick activationking and choose Authenticate; your browser opens activationking.com to approve.
Or with an API key:
claude mcp add --transport http activationking https://api.activationking.com/mcp --header "Authorization: Bearer ${ACTIVATIONKING_API_KEY}"
Cursor
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"activationking": {
"url": "https://api.activationking.com/mcp",
"headers": {
"Authorization": "Bearer ${env:ACTIVATIONKING_API_KEY}"
}
}
}
}
Claude Desktop (config file)
The connector above is the easiest way. If you prefer an API key in the config file: Claude Desktop's config file starts local servers, so use the mcp-remote bridge (requires Node.js). Edit claude_desktop_config.json:
{
"mcpServers": {
"activationking": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://api.activationking.com/mcp",
"--header", "Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer ak_live_..."
}
}
}
}
Other MCP clients
Any client that supports Streamable HTTP with a custom header works: point it at https://api.activationking.com/mcp and send Authorization: Bearer <your key>.
ChatGPT
Add https://api.activationking.com/mcp as a custom connector (in ChatGPT's connector or developer mode settings, depending on your plan) and sign in with your ActivationKing account when asked.
3. What you can do
Try prompts like:
- "List my events from last month and show the session count for each."
- "How many prints and AI credits did the event Summer Launch use?"
- "What's my AI credit balance?"
- "On the Summer Launch photo booth, set the AI effect screen title to Pick your style and turn on surprise mode."
- "Change my white label button color to #E4007C and the app name to Acme Booth."
- "Which of my booths are online right now? Pause the one at Summer Launch."
- "On the Summer Launch booth, start a photo session and send it this picture: https://example.com/photo.jpg"
- "Create this CRM deal as an Ops job: client Acme, photo booth, 14–15 March in Berlin, price 2,400 EUR."
- "Move the Acme job's deal to Won and add a line for an extra print station."
Tools
The authoritative, always up-to-date list with every parameter is in llms.txt and llms-full.txt. In short:
| Area | Tools |
|---|---|
| Account | get_account, get_credit_balance |
| Events and sessions | list_events, get_event, get_event_stats, list_event_sessions, get_session |
| Event settings | get_settings_catalog, get_event_settings, update_event_settings (writes) |
| White label | get_white_label, update_white_label (writes) |
| Remote control | list_remote_booths, get_remote_booth, send_remote_command (writes), upload_remote_media (writes) |
| Ops Calendar (read) | ops_reference_data, ops_list_companies, ops_get_company, ops_list_jobs, ops_get_job, ops_get_deal |
| Ops Calendar (write) | ops_save_company, ops_save_job, ops_update_deal, ops_delete_company, ops_delete_job |
How the event settings tools work:
- Catalog first:
get_settings_cataloglists the settings an app allows through the API, with type (boolean, integer, number, string, color, enum), default, range or allowed values and a description. The full list is also in llms-full.txt under Event settings catalog. Currently available for the Photo Booth app (com.activationking.photobooth); other apps returnsettings_not_supported. - Read:
get_event_settingsreturns an event's current values;isSet: falsemeans the kiosk uses the default. - Change only what you pass:
update_event_settingstakes{ "Key": value }pairs;nullresets a key to its default. If any value is invalid (invalid_setting), nothing is saved. - The kiosk picks up the change on its next sync.
How the white label tools work:
get_white_label/update_white_labeltake an optionalapp(defaultcom.activationking.photobooth). App fields (Enabled,AppName,HidePromoSections) are per app; microsite fields (MicrositeEnabled, colors,TitleText,CopyrightText,CompanyNameText) are shared by all your apps.- Colors: a hex string
#RRGGBBfor a solid color, or an object{color1, color2, color3, fillType: Solid|Gradient, gradientType: Linear|Radial, lineerGradientAngle}for a gradient.nullclears a color or text. - Needs a plan that includes white label (
403 white_label_not_allowedotherwise). Logos, background media and the custom domain are changed in the app, not through the API. - Apps pick up the change within about 5 minutes.
How the remote control tools work:
- Find the booth:
list_remote_boothslists your booths open for remote control (one row per booth and event) withonline,operatorEnabledand the current screen. - Read the screen first:
get_remote_boothreturns what the booth shows right now:actions(role: guest= an on-screen button,role: operator= pause, resume, run…),choices, formfieldswith their allowed options,mediaRequestwhen it waits for a photo or video, acountdown, theshareUrlwhen there is one, and itsstateVersion.screenIsLive: falsemeans the booth is offline and this is the last screen it reported. - Act on it:
send_remote_commandruns one action from that screen as the operator and returns the screen after it settles. For a choice useactionId: "choice"withchoiceId; for a form useactionId: "submitFields"withfields. Pass thestateVersionyou read: if the screen changed in the meantime, the command isn't sent and you getstale_statewith the current screen. An action, choice or field that isn't on the screen is rejected before anything is sent, with a message listing what is valid. - Send media: when the screen has a
mediaRequest(for example after thestart_uploadaction),upload_remote_mediasends a photo or video by publichttpsurl or as base64, with its file extension (.jpg,.png,.heic,.webp,.mp4,.mov). Photos up to 50 MB, videos up to 250 MB. The booth uses it like a capture; the reply hasmediaId(the stored file; the same content returns the same id),sessionIdand the booth's next screen. - Follow the session: the screen and each
list_remote_boothsrow carrysessionId, the running booth session (nullon the welcome screen and until the booth first syncs the session, usually within a few seconds). Pass it toget_sessionto follow the session while it runs (status: "in_progress") and to get the result photos and videos when it completes. With older booth app versions that don't fillsessionId, the last segment of theshareUrlshown at the end is the session id. - Requirements: only the account that runs the booth can control it (organization members can't). Operator control must be on for the event (
403 operator_disabledotherwise); turn it on in the booth app under Settings > Run > Remote Control > Operator control, with the event selected. The booth must be online and connected to the live service (409 booth_offlineotherwise; a booth running a test build shows as offline). - Missing fields: fields whose value is
nullare left out of the JSON (for examplesessionIdoreventName); treat a missing field asnull. - The REST equivalents are under Remote control in the OpenAPI (
/v1/remote/booths).
How the Ops tools work:
- Organization: Ops tools take an
organizationId. Callget_accountto see the organizations you belong to. - Reference values: phases, event and venue types, member ids, products and deal statuses come from
ops_reference_data. - Sync from your CRM without duplicates: pass
externalSource+externalId(your system's id) toops_save_company/ops_save_job. The first call creates the record; later calls with the same pair update it. - Partial updates: only the fields you pass change.
- New jobs open a deal automatically; use
ops_update_dealto set its status, currency and price lines. - Permissions follow your role in the organization (for example, deals need Deal.View / Deal.Edit). The organization needs an Ops Calendar subscription; without one, Ops tools return an error.
- Write tools are annotated (
readOnlyHint/destructiveHint), so MCP clients ask for confirmation before calling them.
Security
- Connector sign-ins can be removed at any time by disconnecting the connector in your client.
- Treat your API key like a password. Never commit it, paste it into shared configs or put it in a prompt.
- Prefer environment variables (as in the examples above).
- If a key leaks, revoke it at activationking.com/dashboard/api-keys and create a new one.
- Review write actions (create, update, delete) before approving them in your client.
Support
- API reference: api.activationking.com/docs
- Issues with this repository: open a GitHub issue.
- Account or data questions: contact ActivationKing support via activationking.com.
License
No installation packages available.