Repository avatar
Other Tools
v1.4.0
active

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.

Endpointhttps://api.activationking.com/mcp
TransportMCP Streamable HTTP (stateless)
AuthSign in with your ActivationKing account (OAuth 2.1, PKCE) or Authorization: Bearer ak_live_... (personal API key)
Rate limit300 requests per minute per key
Referencellms.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

  1. Sign in at activationking.com/dashboard/api-keys.
  2. Create a key. It starts with ak_live_ and is shown once.
  3. 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

  1. In Claude open Customize > Connectors, then Add > Add custom connector.
  2. Name: ActivationKing, MCP server URL: https://api.activationking.com/mcp, then Continue.
  3. Keep the detected settings (Sign in now, Register automatically) and click Add.
  4. 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.
  5. 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_..."} to claude 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 /mcp shows the server as failed, the key was revoked or mistyped: create a new one and run /plugin configure again.
  • Upgrading from plugin 1.2.x: the plugin no longer reads ACTIVATIONKING_API_KEY. Run /plugin configure activationking@activationking once 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:

AreaTools
Accountget_account, get_credit_balance
Events and sessionslist_events, get_event, get_event_stats, list_event_sessions, get_session
Event settingsget_settings_catalog, get_event_settings, update_event_settings (writes)
White labelget_white_label, update_white_label (writes)
Remote controllist_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_catalog lists 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 return settings_not_supported.
  • Read: get_event_settings returns an event's current values; isSet: false means the kiosk uses the default.
  • Change only what you pass: update_event_settings takes { "Key": value } pairs; null resets 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_label take an optional app (default com.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 #RRGGBB for a solid color, or an object {color1, color2, color3, fillType: Solid|Gradient, gradientType: Linear|Radial, lineerGradientAngle} for a gradient. null clears a color or text.
  • Needs a plan that includes white label (403 white_label_not_allowed otherwise). 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_booths lists your booths open for remote control (one row per booth and event) with online, operatorEnabled and the current screen.
  • Read the screen first: get_remote_booth returns what the booth shows right now: actions (role: guest = an on-screen button, role: operator = pause, resume, run…), choices, form fields with their allowed options, mediaRequest when it waits for a photo or video, a countdown, the shareUrl when there is one, and its stateVersion. screenIsLive: false means the booth is offline and this is the last screen it reported.
  • Act on it: send_remote_command runs one action from that screen as the operator and returns the screen after it settles. For a choice use actionId: "choice" with choiceId; for a form use actionId: "submitFields" with fields. Pass the stateVersion you read: if the screen changed in the meantime, the command isn't sent and you get stale_state with 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 the start_upload action), upload_remote_media sends a photo or video by public https url 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 has mediaId (the stored file; the same content returns the same id), sessionId and the booth's next screen.
  • Follow the session: the screen and each list_remote_booths row carry sessionId, the running booth session (null on the welcome screen and until the booth first syncs the session, usually within a few seconds). Pass it to get_session to 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 fill sessionId, the last segment of the shareUrl shown 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_disabled otherwise); 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_offline otherwise; a booth running a test build shows as offline).
  • Missing fields: fields whose value is null are left out of the JSON (for example sessionId or eventName); treat a missing field as null.
  • The REST equivalents are under Remote control in the OpenAPI (/v1/remote/booths).

How the Ops tools work:

  • Organization: Ops tools take an organizationId. Call get_account to 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) to ops_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_deal to 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

License

MIT

No installation packages available.