Connect your agent
You connect Ploa to your agent once. On your computer that's three commands; for an agent on the web, one address you add and approve. After that you talk to the agent, and it does the store work.
The short way
On the computer where you work, in the app's folder (or its repository):
curl -fsSL https://ploa.dev/install.sh | sh ploa login ploa mcp install
- Install
The first line installs Ploa's command line tool,
ploa, which also runs Ploa's MCP server for your agent. On Windows, in PowerShell:irm https://ploa.dev/install.ps1 | iex(Working from Windows). - Sign in
ploa loginopens Ploa in the browser to confirm a code. There you choose how far your agents may go (below). - Add Ploa to your agents
ploa mcp installadds Ploa to Claude Code, and to Cursor, VS Code (Copilot) and Codex when they're on this computer. Restart the agent, or reload its MCP servers.
Then ask the agent:
Ship this app to the App Store and Google Play with Ploa.
No ploa init needed. The agent links the folder to the app in Ploa itself, with ploa_link: it finds the app in Ploa by its bundle ID or package name, or adds it, and writes ploa.json in the folder. An app with no ID yet gets one suggested by ploa_setup_guide, which the agent asks you to pick. ploa init in the terminal does the same, if you'd rather do it yourself.
https://ploa.dev/mcp for agents that can't run a command on your computer.
What you need
- A Ploa account. Sign up at ploa.dev/join, or from
ploa login. Your stores don't need to be connected first: the agent walks you through connecting them. - Node 24 or newer on the computer, for
ploaand the server on your computer. Check withnode --version. - For builds on this computer: a Mac with Xcode for iOS, JDK 17 or newer and the Android SDK for Android. Not needed when the builds run on GitHub or in your own Google Cloud.
ploa doctorsays what this computer has.
Your agent, the shortest way
| Agent | Shortest way | Then |
|---|---|---|
| Claude Code | ploa mcp install | Restart, or run /mcp: ploa shows as connected. |
| Cursor | ploa mcp install | Turn ploa on in Cursor's settings, under MCP, if it's off. |
| VS Code (Copilot) | ploa mcp install | Start the server from .vscode/mcp.json if VS Code asks, then pick Ploa's tools in Copilot Chat's Agent mode. |
| Codex | ploa mcp install | Start Codex in the app's folder. |
| Windsurf | Its settings file, by hand (Windsurf) | Refresh its MCP servers. |
| Claude Desktop | A connector to https://ploa.dev/mcp (on the web), or its settings file to build on this computer | Restart it after editing the file. |
| Claude on the web | A connector to https://ploa.dev/mcp (on the web) | Approve it on Ploa. |
| Other agents | The command npx -y @ploa/cli mcp in its MCP settings (by hand) | Started in the app's folder, or with --dir. |
Install the CLI
The MCP server on your computer is part of the ploa command line tool. Choose one way:
Install script
For macOS and Linux. It checks for Node 24, puts the files in ~/.ploa/cli and a small ploa launcher in the first folder on your PATH it may write to (~/.local/bin, ~/bin, /usr/local/bin or /opt/homebrew/bin). When none is on your PATH, it uses ~/.local/bin and prints the line to add to your shell's profile. Nothing runs as root.
curl -fsSL https://ploa.dev/install.sh | sh
Update later with ploa update (ploa update --check only says whether there's a newer one).
Windows
In PowerShell. It checks for Node 24, puts the files in %USERPROFILE%\.ploa\cli and a small ploa.cmd launcher in %USERPROFILE%\.ploa\bin, which it adds to your own PATH. Nothing runs as administrator. Open a new terminal afterwards. More: Working from Windows.
irm https://ploa.dev/install.ps1 | iex
Update later with ploa update.
npm
The same CLI as the npm package @ploa/cli, on any system.
npm install -g @ploa/cli
Update later with npm install -g @ploa/cli@latest.
npx (nothing installed)
Runs the newest version each time, without installing anything. Good for agents' settings and for CI.
npx -y @ploa/cli login npx -y @ploa/cli mcp install
Sign in
The server works as you, with the access you choose. Sign in once on the computer:
ploa login
ploa login shows a code and opens Ploa in the browser (--no-browser only prints the link). Check that the code is the one in your terminal, then choose what the CLI and your agents on this computer may do:
| Choice | What the agent can do with it |
|---|---|
| Read | Look only: where the apps stand, builds, the store page, reviews. |
| Draft | Also write drafts, link apps and build to testers. |
| Submit for review (chosen by default) | Also change the store page in the stores directly, and ask you to approve App Review, testers, products and replies under reviews. |
| Production | Also ask you to approve production releases, rollouts and prices. |
| Autonomous agent | Production, approved in advance: no request waits for you. Offered to owners and to members given the Autonomous agents permission. |
An agent can only ask for what its level allows, so for an agent that takes the app all the way to the stores, pick Submit for review or Production. You can change it later in Settings › Tokens. Every level, and what waits for you: Access and approvals.
The sign-in is kept in ~/.config/ploa/config.json, readable only by you, never in your project. No browser on the machine (a server, CI)? Make a token on the dashboard in Settings › Tokens and set it as PLOA_TOKEN.
One command for your agents
In the app's folder (or its repository):
ploa mcp install
It adds Ploa to each agent's MCP settings and leaves the agents' other servers as they are. Claude Code always gets it; the others when they're on this computer:
| Agent | Found when | File it writes | Where |
|---|---|---|---|
| Claude Code | Always | .mcp.json | The project's top folder |
| Cursor | ~/.cursor exists | .cursor/mcp.json | The project's top folder |
| VS Code (Copilot) | VS Code's settings folder exists | .vscode/mcp.json | The project's top folder |
| Codex | ~/.codex exists | ~/.codex/config.toml | Your home folder (Codex reads only its own) |
The project's top folder is the git repository's top, or the app's folder when there's no repository. Only some of the agents? Name them (claude, cursor, vscode, codex):
ploa mcp install --agent claude,cursor
For each agent it says added, updated (an older Ploa entry replaced), unchanged or skipped, with the file. Then restart the agent, or reload its MCP servers.
The files hold no secrets, but they hold this computer's full paths to Node and to ploa (agents opened from the Dock don't get your shell's PATH), so everyone on your team runs ploa mcp install on their own computer. Installed from npm, the files run npx -y @ploa/cli mcp instead.
Left alone: a JSON settings file with comments isn't plain JSON, so it's skipped and said; and a Codex config that already has a [mcp_servers.ploa] entry is kept as it is. Change those by hand from the settings below.
Without installing: npx
Any agent that can start a command can run the server from npm:
npx -y @ploa/cli mcp
Sign in once on the computer with npx -y @ploa/cli login, or give the server a token. What you can set:
| Setting | What it does |
|---|---|
PLOA_TOKEN | A token from Settings › Tokens, in place of ploa login. Keep it in the agent's secret settings, never in the repository. |
--dir <path> | The app's folder, when the agent doesn't start the server in it. The server works on the app linked there by ploa.json (in that folder or one above it). |
PLOA_SERVER | A Ploa server other than ploa.dev (rare). |
Settings by hand, agent by agent
These use npx, so they work on any computer with Node 24. If you installed the CLI, "command": "ploa", "args": ["mcp"] works the same, as long as the agent sees your PATH.
Claude Code
From the project's folder, with Claude Code's own command:
claude mcp add ploa --scope project -- npx -y @ploa/cli mcp
.mcp.json at the project's top folder:
{
"mcpServers": {
"ploa": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@ploa/cli", "mcp"]
}
}
}Claude Code asks once whether to use the project's servers. Check with /mcp: ploa should be connected.
Cursor
.cursor/mcp.json in the project (or ~/.cursor/mcp.json for every project):
{
"mcpServers": {
"ploa": {
"command": "npx",
"args": ["-y", "@ploa/cli", "mcp"]
}
}
}Then in Cursor's settings, under MCP, check that ploa is on and shows its tools.
VS Code (Copilot)
.vscode/mcp.json in the project. Note the key is servers:
{
"servers": {
"ploa": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@ploa/cli", "mcp"]
}
}
}Open Copilot Chat in Agent mode and pick Ploa's tools in its tools list.
Codex
With Codex's own command:
codex mcp add ploa -- npx -y @ploa/cli mcp
~/.codex/config.toml:
[mcp_servers.ploa] command = "npx" args = ["-y", "@ploa/cli", "mcp"]
Codex starts the server in the folder you run it in, so start Codex in the app's folder.
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ploa": {
"command": "npx",
"args": ["-y", "@ploa/cli", "mcp", "--dir", "/path/to/your/app"]
}
}
}The file is for every project, so --dir says which app's folder to work in.
Claude Desktop
Easiest: add Ploa as a connector, as on the web. To run it on your computer instead, so it can also build and read the project's files, edit claude_desktop_config.json (Settings › Developer › Edit Config):
{
"mcpServers": {
"ploa": {
"command": "npx",
"args": ["-y", "@ploa/cli", "mcp", "--dir", "/path/to/your/app"]
}
}
}Restart Claude Desktop after saving.
Other agents
Any agent that runs MCP servers over stdio: the command is npx with the arguments -y @ploa/cli mcp, started in the app's folder (or with --dir /path/to/your/app). Give it PLOA_TOKEN if you haven't signed in on that computer. An agent that only connects to servers on the web uses https://ploa.dev/mcp.
Agents opened from the Dock don't always get your shell's PATH, so a bare ploa or npx may not be found. ploa mcp install writes full paths for this reason. By hand, use the full path from command -v npx.
On the web: ploa.dev/mcp
For agents that can't run a command on your computer, like Claude on the web, Ploa runs the server itself at:
https://ploa.dev/mcp
- Add it to the agent
In Claude: Settings › Connectors › Add custom connector, and paste the address. Other agents call it a remote MCP server or a connector.
- Approve it on Ploa
The agent sends you to ploa.dev. Sign in if you need to, check the agent's name and where it returns to, and choose what it may do: Read only; Drafts and builds (store page drafts and builds on GitHub); or Drafts, builds and requests, which also asks you for App Review, production, prices, testers and replies to reviews. Then Allow.
- Start working
With one app in the workspace, the agent works on it. With more, it names one by its ID (
ploa_appslists them).
What's different on the web:
- There's no project folder, so builds run on GitHub from what's pushed (set up once, see GitHub), and the server's code comes from the repository too.
- What needs your computer isn't offered: the setup guide and linking a folder, preflight, builds on this computer, simulator screenshots, privacy hints from the code, the Android upload key, the steps-only-you-can-do list, and anything uploaded from your disk (screenshots, videos, images, documents). Use the server on your computer for those. Every MCP tool marks the tools that are on this computer only.
- An agent on the web asks; it doesn't act past drafts and builds. With Drafts, builds and requests it asks you for App Review, production, prices, testers, products and replies, and each waits for your approval in Ploa. It never changes the stores directly (screenshots, TestFlight groups, sending the store page) and can't be autonomous: those are done on the dashboard, or by the agent on your computer.
- It can't be made autonomous.
- The approval becomes an ordinary Ploa token, named after the agent with "(web)", at the level you chose. It's listed in Settings › Tokens, where you can revoke it at any time, and the workspace's owners are told when it's made.
In CI and GitHub Actions
An agent running in CI uses the same server, with a token from Settings › Tokens kept in the CI's secrets and passed as PLOA_TOKEN. In GitHub Actions:
env:
PLOA_TOKEN: ${{ secrets.PLOA_TOKEN }}Give CI a token with the lowest level it needs. Builds Ploa runs on GitHub don't need a token in the repository at all: Ploa's own workflow signs in as the run.
Check that it works
- Restart the agent and open its list of MCP servers: ploa should be connected, with its tools.
- Ask:
Which Ploa account and access do you have?
The agent callsploa_accessand answers with your name, level and how it works (autonomous or approvals). - Ask:
Where does this app stand in the stores?
The agent callsploa_setup_guidefor a new app, orploa_shipping_report.
Something off? See Troubleshooting.
Update and remove
- Update:
ploa update(install script),npm install -g @ploa/cli@latest(npm); npx runs the newest by itself. Then restart the agent: the Ploa tools it already started keep running the old version until then, and say so. - Remove from an agent: delete the
ploaentry from the agent's MCP settings file. - Sign out this computer:
ploa logoutsigns out and revokes this computer's token. - Revoke a web agent: Settings › Tokens on the dashboard.