# Use Volter World with a coding agent

Have your coding agent set up a world for your app, run its tests there, and show you what the
app did at each vendor.

This page is executed as written by `packages/cli/src/journeys/tutorials.test.ts`.

Claude Code, Cursor, VS Code and Codex drive Volter World through `volter mcp`, an MCP server whose
tools are the `volter` command's own verbs, and learn it from the `volter-world` skill. One command
installs both into the agents on your machine. Then you ask in plain words.

## The app

An app that creates a Stripe customer with the real Stripe SDK, and names its key in
`.env.example`:

```json file=package.json
{ "name": "acme-web", "private": true, "type": "module", "dependencies": { "stripe": "^17" } }
```

```text file=.env.example
STRIPE_SECRET_KEY=
```

```js file=signup.mjs
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
const customer = await stripe.customers.create({ email: 'ada@example.com' });
console.log(`created ${customer.id}`);
```

## 1. Install the command and the twin

```bash
npm install
npm install -g @volter/world
npm install -D @volter/twin-stripe
```

## 2. Give your agent the tools

`volter agents install` finds the coding agents on your machine and puts the skill and the MCP
server into each: Claude Code (`claude mcp add`, and `~/.claude/skills/volter-world`), Cursor
(`~/.cursor/mcp.json`), VS Code (`.vscode/mcp.json` in this project) and Codex
(`~/.codex/config.toml` and `~/.codex/AGENTS.md`). Name one to set up only that agent. Here it is VS
Code, whose server entry lives in the project:

```bash
volter agents install --vscode --yes
```

```text
for      VS Code
skill    volter-world
.vscode/mcp.json: added the volter server
```

It changes only its own `volter` entry and its own skill folder; running it again changes
nothing. Without a flag it sets up every agent it finds, and without `--yes` it asks first:

```console
$ volter agents install
for      Claude Code, Cursor
skill    volter-world
server   volter mcp

Install? [y/N]
```

Restart the agent so it starts the server.

## 3. Ask

Paste this into your agent. The platform's Get started and a world's Connect menu offer the same
text with your platform's address filled in.

```text
Set up Volter World for this app, so its calls to Stripe, Slack, GitHub, OpenAI and the other services it uses go to local twins instead of the real APIs. The app keeps its real SDKs and code.

1. You have the Volter World tools (volter mcp). If the `volter` command is missing, install it: `npm install -g @volter/world`.
2. In the app's folder, world_init (`volter world init`). Show me the vendors it detected and why, before keeping them.
3. Start it with world_up, then run the tests inside it: world_run (`volter world run -- <the test command>`). Fix anything that fails because a call went to the real service.
4. Tell me what the app did at each vendor (world_log (`volter world log`)), and give me the dashboard link (world_view).
```

The agent's tools run the same commands you would, and answer what they answer. Here are those
commands, as the agent runs them.

```bash
volter world init
```

```text
  stripe | injector | STRIPE_TWIN_URL | env: STRIPE_SECRET_KEY; npm: stripe
COVERED: every detected vendor has a twin in world acme-web.
```

```bash
volter world up
volter world run -- node signup.mjs
```

```text
created cus_twin_1
```

```bash
volter world log
```

```text
stripe   customer.create        customer:cus_twin_1
```

For the dashboard the agent calls `world_view`, which runs the world with its dashboard and hands
you the link; `volter world view` is the same from a terminal.

## 4. Share it with your team

A world on your machine is yours. To share one, your agent signs the command in to your team's
platform, and you approve the sign-in in your browser: the agent cannot. Then it links this world
to one on the platform, making it there from this world's vendors, and pushes:

```console
$ volter login https://your-platform.example
approve    https://your-platform.example/-/cli/approve?code=QWER-TYUI
$ volter remote add origin acme/web --create
$ volter world changeset -m "The signup flow"
$ volter world push
```

The MCP tools are `platform_login`, `remote_link` (with `create: true`), `world_changeset` and
`world_push`.
Use the hosted product covers the platform itself.

## Clean up

```bash
volter world down
```

The tools and flags are in the [CLI reference](../reference/cli.md#agents).
