Install the Soba skill, connect the MCP server, and let the coding agent you already have open do the integration — read the checklist, make the edits, and confirm each step landed.
Soba's integration is two edits in your repo. The thing best placed to make them
is the coding agent already sitting in that repo, so there are two pieces that
put Soba in front of it: a skill, which teaches it the integration, and an
MCP server, which lets it read and change this app's setup.
They are independent. The skill works on its own; the server makes the skill
better by giving it the real checklist instead of a description of one.
1. The skill#
Terminal
npx skills add https://soba.so/skill
Run it once in your repo root. It writes a SKILL.md into your agent's skills
directory — .claude/skills/ for Claude Code, .agents/skills/ for most
others — and it works for any agent the skills CLI
supports.
What it carries is the half no dashboard can do for you: which files the two
edits belong in, the shape of the session route, and the one fact an agent must
never guess — that the user id on every request is resolved on your server,
from your session, and never from the request body. An id the browser can choose
is an id any user can use to spend somebody else's compute.
2. The MCP server#
Terminal
claude mcp add soba -- npx -y @soba-so/mcp --token mk_soba_…
The Integrate page in your dashboard prints this line with a key already in
it. The token is a management key: it configures your app and cannot spend
anything, cannot serve a run, and cannot act as one of your users.
With it connected, your agent stops guessing at what is left:
| Tool |
|
soba_status |
The checklist and which steps are done |
soba_next_step |
The first outstanding one, with an instruction written for an agent |
soba_create_key |
Mints your app's secret key, once |
soba_set_connect_url |
Points Connect back at your app |
soba_create_plan |
Creates a plan from numbers you gave it |
There is also a prompt, /soba:set_up in Claude Code, which runs the whole loop:
read the checklist, do the next step, read it back, repeat.
3. Tell it to go#
Set this project up on Soba.
The skill takes it from there. It does not need to be told whether this is an
existing app or a new one — it can see which it is looking at, and if there is no
app yet it runs npx create-soba@latest rather than writing one from memory.
What it will not do
It will not invent a price. Plans, allowances and what connecting a machine earns
back are decisions about your business, so it asks before calling
soba_create_plan. It will not put your key anywhere but .env.local, and it
checks that file is gitignored first. And it cannot pair a machine for you —
that is a person installing the Soba app on their own laptop and approving it.
How the step finishes#
The integrate step ticks when a request arrives from your app's own call site.
Not when the diff is written, not when the pull request merges, and not on a
curl: the gateway stamps a key at authentication, so it cannot tell a test
request from a deployment. Run your app and use it.
Doing it by hand#
Everything above is a faster route to the same place. If you would rather type
it yourself, the Quickstart is four steps and the
Integrate pages are the reference.