Manage your Appside test store with an AI agent

Appside's publisher MCP adapter lets a coding agent (Claude Code, Codex, Cursor, or any MCP client) read and edit your store draft, configure offers and promo codes, confirm products and publish a test version, through the same checks the Studio applies. It runs on your machine, authenticates as your existing publisher account, and is read-only unless you opt in to writes.

This is a v0, local adapter for TEST stores. It is not a hosted connector, there are no scoped API tokens yet, and it never moves real money.

Install from the download

mkdir appside-publisher-agent && cd appside-publisher-agent
curl -O https://appside.build/docs/downloads/publisher-mcp-0.1.0.tgz
curl -O https://appside.build/docs/downloads/publisher-mcp-0.1.0.tgz.sha256
shasum -a 256 -c publisher-mcp-0.1.0.tgz.sha256      # expect: OK
tar -xzf publisher-mcp-0.1.0.tgz                      # server.mjs, stdio.mjs, package.json, README.md

It's a plain archive, not an npm package, and it has no dependencies beyond Node 20+. Don't use npx with the package name.

Configure your MCP client

Run node /absolute/path/appside-publisher-agent/stdio.mjs as a stdio server. Credentials go in the environment, never in tool arguments:

VariableMeaning
APPSIDE_AGENT_EMAIL, APPSIDE_AGENT_PASSWORDAn existing publisher account. Alternatively APPSIDE_AGENT_SESSION, an existing session token
APPSIDE_AGENT_ORIGINDefaults to https://app.appside.build. HTTPS is required except on loopback
APPSIDE_AGENT_WRITES=1Opt in to draft edits, product confirmation and publishing. Default: read-only

Example for a client that takes a JSON config:

{"mcpServers":{"appside-publisher":{"command":"node","args":["/absolute/path/appside-publisher-agent/stdio.mjs"],"env":{"APPSIDE_AGENT_EMAIL":"you@studio.example","APPSIDE_AGENT_PASSWORD":"…"}}}}

Tools

Read (always available): get_agent_capabilities, list_games, get_store, get_analytics, get_checkout_link.

Write (with APPSIDE_AGENT_WRITES=1): set_theme_tokens, set_product, set_promo_code, set_section, set_banner, set_payment_methods, set_translation, confirm_product, publish_store.

Setters take {tenant, revision, value} after a get_store. A product, promo code, section or banner value replaces one complete item; theme tokens and regional payment settings merge top-level keys. If the draft changed in the Studio since the agent read it, the call is refused with a revision conflict and nothing is overwritten: the agent re-reads and reapplies deliberately.

Two actions need an explicit confirmation string in the call, so an agent can't stumble into them: confirm_product needs "confirmation":"PUBLISHER_APPROVED_PRODUCT", and publish_store needs "confirmation":"PUBLISHER_APPROVED_PUBLICATION" plus the expected liveVersion. Publishing also needs the owner role, and the server runs the same publish checks as the Studio (confirmed products, legal links, readable colours).

What "personalization" means here

An offer can target a minimum player level, a spender tier, a country or new players. Those values come from the signed player attributes your backend puts in the player token. The adapter configures the rule; it doesn't guess a player profile or run a model.

Checkout and analytics

get_checkout_link returns an existing published store link. Player sign-in, payment and delivery stay with the SDK, the checkout and your signed webhook: the agent can't spend on a player's behalf. get_analytics returns the backend's test aggregates (revenue in minor units for today and the last 7 days, refunds, top pack, funnel). They describe the test purchase flow, not visitors, attribution or production revenue.

Verify the adapter

Without credentials, the server still answers initialize and lists the five read-only tools:

printf '%s\n%s\n' \
 '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"check","version":"0"}}}' \
 '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | node stdio.mjs

Expected: server appside-publisher-local 0.1.0, then get_agent_capabilities, list_games, get_store, get_analytics, get_checkout_link.

Security notes

Two different MCP connections

The public https://appside.build/mcp is read-only documentation for coding agents: it searches the docs, returns SDK examples and the published price, and needs no account. The publisher adapter on this page manages a store you own. Start with the MCP docs page for the first, and this page for the second.