# Build with AI agents

Every way an AI agent can read and use Ubriot, from llms.txt and Markdown docs to the MCP server, the CLI with API keys, the HTTP API, SDKs and a rules snippet.

Ubriot is built to be driven by AI agents as well as people. This page lists every entry point and the rules an agent should follow.

Commands below marked 1.3.0 or 1.4.0 fail with "unknown option" or "unknown command" on older CLI releases. Check with `npm view ubriot version` and `ubriot --version`.

## Read the docs

| Resource | URL |
|---|---|
| Product summary for agents | [ubriot.dev/llms.txt](https://ubriot.dev/llms.txt) |
| Docs index for agents | [docs.ubriot.dev/llms.txt](https://docs.ubriot.dev/llms.txt) |
| All docs in one Markdown file | [docs.ubriot.dev/llms-full.txt](https://docs.ubriot.dev/llms-full.txt) |
| Any docs page as Markdown | Add `.md` to its URL, for example [docs.ubriot.dev/quickstart.md](https://docs.ubriot.dev/quickstart.md). The home page is [docs.ubriot.dev/index.md](https://docs.ubriot.dev/index.md). |

Every docs page also has **Copy as Markdown**, **Open in ChatGPT** and **Open in Claude** buttons.

## Use Ubriot

| Entry point | Install | Auth | Guide |
|---|---|---|---|
| MCP server | `npx -y ubriot-mcp@latest` (stdio) | `UBRIOT_TOKEN` API key | [MCP server](https://docs.ubriot.dev/mcp.md) |
| CLI | `npm install -g ubriot` | `UBRIOT_TOKEN` API key, or `ubriot login` for people | [Run Ubriot from CI or an AI agent](https://docs.ubriot.dev/automation.md), [CLI reference](https://docs.ubriot.dev/cli.md) |
| HTTP API | `https://api.ubriot.dev/api/v1` | `Authorization: Bearer ubk_...` | [HTTP API](https://docs.ubriot.dev/api.md) |
| OTA updates SDK for bare React Native | `npm install ubriot-updates-rn` | None in the app | [OTA updates](https://docs.ubriot.dev/ota-updates.md#bare) |
| Push SDK | `npm install @ubriot/notify-rn` | App id in the app, push server key on your backend | [Notify](https://docs.ubriot.dev/notify.md) |

Always check the latest package version with `npm view <package> version` rather than trusting a number on a page.

## Getting access

- A person signs up at [ubriot.dev/signup](https://ubriot.dev/signup), verifies the account's email from the dashboard banner (builds and store submissions return `email_not_verified` until then) and verifies a payment card at [ubriot.dev/dashboard/billing](https://ubriot.dev/dashboard/billing) to start a 14-day trial. The $1 card check is refunded, and billing for the chosen plan starts when the trial ends. There is no free tier. An agent must not sign up, enter card details or choose a plan for someone.
- The person creates an API key at [ubriot.dev/dashboard/api-keys](https://ubriot.dev/dashboard/api-keys) and gives it to the agent through an environment variable or the MCP client config, never in chat or in a committed file.
- Signing credentials (Apple certificates and keys, Android keystores, Google Play service accounts) are uploaded by a signed-in person. API keys cannot read or upload them.

## Safe ways to try

There is no sandbox or test mode. Every build, store submission, OTA update and push notification acts on a real app and can reach real users. Safe, read-only starting points:

- `ubriot apps list`, `ubriot builds list`, `ubriot builds show <id>` and `ubriot builds logs <id>` on any release; `ubriot builds last-good` and `ubriot builds queue` need 1.3.0, and `--json` needs 1.4.0.
- MCP tools `ubriot_list_apps`, `ubriot_app_readiness`, `ubriot_list_builds`, `ubriot_build_status` and `ubriot_build_logs`.
- `ubriot migrate eas` and `ubriot migrate codepush` without `--apply` print the migration plan and change nothing.
- `ubriot ship ios --no-submit` builds without submitting to a store. It still runs a real build on Ubriot's machines.

## Add Ubriot to your repository's agent rules

Paste this into `AGENTS.md`, `CLAUDE.md` or `.cursor/rules` in your app's repository and replace `myapp`:

```markdown
## Mobile releases (Ubriot)

- Releases run on Ubriot. Docs for agents: https://docs.ubriot.dev/llms.txt
- The Ubriot app slug is `myapp`. Auth comes from the UBRIOT_TOKEN environment variable; never print or commit it.
- Use the ubriot CLI (`npm install -g ubriot`) or the ubriot MCP server. On ubriot 1.4.0 or later, add `--json` when you need to parse output.
- Read-only commands are always fine: `ubriot builds list --app myapp`, `ubriot builds show <id>`, `ubriot builds logs <id>`.
- Only when asked: `ubriot ship ios|android --app myapp` (store release), `ubriot update --app myapp --channel <channel>` (OTA to real users), push sends.
- After a failed build, read `ubriot builds logs <id>` before changing code or retrying.
```

## Not available yet

- A hosted MCP server with OAuth sign-in. Today every client runs the local stdio server with an API key.
- A published OpenAPI document, stable error codes with documentation links on every error (today only the newer errors carry them; see [HTTP API](https://docs.ubriot.dev/api.md#errors)), and idempotency keys on writes.
- A sandbox or test mode.
- Browser or device sign-in for the CLI. People use `ubriot login` with a password; automation uses API keys.
