Install the MCP server
Connect the Tap & Scale MCP server to Claude Code, a claude.ai connector, or Codex.
The MCP server lives at /api/mcp on your app's origin. Authentication is OAuth 2.1 — there
is no token to mint, copy, or store. Every client discovers the authorization server from the
endpoint and sends you to a browser to approve. A headless agent with no browser sends a tsk_
API key as the Bearer instead — see Authentication & scopes.
Personal access tokens (asa_…) were removed. If you have an older asa_ token in a config
file, delete the header — it no longer authenticates anything.
An OAuth session is always workspace-scoped with write access: every account in the workspace, setup tools, proposals, and approvals.
Add the server
Install the plugin bundle — it ships the asa_* tools plus setup / audit / optimize / report /
approvals slash commands:
claude --plugin-url https://your-app-domain/api/mcp/plugin.zipOr add just the server, without the plugin:
claude mcp add --transport http tapandscale https://your-app-domain/api/mcpEither way, run /mcp and authorize tapandscale in the browser on first use.
Use the Copy MCP install command item in any page's "Copy page" menu to get this line with your real origin already filled in.
First calls
List accounts and grab a projectId before anything account-specific — a session reaches the
whole workspace, so account-scoped tools need to be told which account you mean:
// 1. Which accounts are in this workspace?
asa_list_ad_accounts()
// → { ok: true, accounts: [{ projectId: "…", name: "…", asaOrgId: "…" }, …] }
// 2. Then pass projectId to account-scoped tools:
asa_get_optimization_plan({ projectId: "…" })Setup is drivable over MCP up to the credential step: connection status, discover/import orgs, trigger and inspect syncs, set targets. The credentials themselves must be pasted by a human in the settings page — there's no OAuth consent screen for Apple's Campaign Management API. See Connect an account.