# Deploy from an agent

one9x mcp is a built-in MCP server — an AI agent can deploy, roll back and list releases as tool calls, with no shell glue.

A deploy is a single authorized action, so it maps cleanly to a single agent
tool call. Our MCP server exposes Pages as tools an AI agent can call directly —
hand it a built directory and it ships a live URL, with no shell glue. It runs
through the same signed-in account as the CLI, so an agent only ever touches
your sites.

> **The MCP server is the CLI.** `one9x mcp` speaks MCP over stdin/stdout, and
> your MCP client starts it as a local process on your own machine — there is no
> endpoint to point at and nothing to sign up for separately. Install the CLI,
> run `one9x login` once, and it uses that session.

## Claude Code

One command registers it — `--` separates Claude's flags from the command it
runs:

```console title="claude code"
$ claude mcp add one9x -- one9x mcp
Added stdio MCP server one9x
```

Or write the same server into a project's `.mcp.json`, which is the file the
command above edits and which any MCP client can read:

```json
{
  "mcpServers": {
    "one9x": {
      "command": "one9x",
      "args": ["mcp"]
    }
  }
}
```

## Cursor

Add One9x to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` in a repo
(that project only) — the same block as above.

## What the agent gets

```console title="claude · mcp"
tool: release
  dir:    ./dist
  site:   mysite
  deploy: true
✓ Deployed → https://mysite.one9x.app/
```

The server exposes `release`, `deploy`, `releases_list` and `sites_list` — the
same operations as the CLI, returning structured JSON rather than prose — and is
published to the public MCP directories so agents can discover it.

## Troubleshooting

`one9x` must be on the PATH your MCP client inherits. If the client is launched
from a GUI and can't find it, use the absolute path (`which one9x`) as the
`command`.

On a machine where no browser login is possible, set `ONE9X_TOKEN` in the
server's `env` instead of running `one9x login`.

## Reading the docs as an agent

If your agent can't run processes and has to read instead, these docs are served
as markdown:

- [`/llms.txt`](/llms.txt) — an index of every page with a one-line summary.
- [`/llms-full.txt`](/llms-full.txt) — the entire documentation set as one
  document, for ingesting in a single request.
- `/docs/<page>.md` — the markdown source beside every HTML page, e.g.
  [`/docs/cli.md`](/docs/cli.md).