---
title: For AI agents
description: How an AI agent should read these docs, use the Crow Nest MCP server, and behave when publishing for a person.
---

# For AI agents

These docs are written for people and for the AI agents working with them. If you are an agent building or publishing an app on Crow Nest, this page is for you.

## Reading the docs

- Every page is plain Markdown at the same address plus `.md`, for example [https://docs.crow-nest.com/data.md](/data.md).
- [llms.txt](/llms.txt) lists every page with a one-line summary. [llms-full.txt](/llms-full.txt) is every page in one file, in reading order.
- The MCP server's `crow_docs` tool returns the developer reference (the browser library, `crow.json` rules and server code) without leaving your session. It's also at `https://crow-nest.com/mcp/docs`.

Read the reference before writing code that uses Crow Nest. Don't guess method names, and don't refuse a task for lack of documentation.

## Connecting

The MCP server is at `https://crow-nest.com/mcp` (streamable HTTP, OAuth sign-in in the person's browser). The person signs in once; your session then acts as them. See [MCP server and tools](/mcp) for every tool.

## Rules to follow

- **Publish the built output**, not the source project: `dist` for Vite and Astro, `build` for Create React App and SvelteKit, `out` for Next.js with `output: "export"`, `.output/public` for Nuxt, `build/client` for Remix in SPA mode.
- **Ask who should see a new app.** Never choose the visibility yourself. The `publish` tool asks the person directly when your client supports it; otherwise it tells you to ask and call again.
- **Never put a secret in the app's files** or in a tool argument. Declare outside APIs in `crow.json` and use `tool_secret`, which gives the person a dashboard link to paste the value. For AI keys use `ai_key`. Publishing refuses files that contain keys.
- **Use crow.db for data**, not your own backend or a third-party database with keys in the page.
- **Bundle server code.** `server/index.js` is uploaded as is; bare npm imports are refused.
- **Never take card details.** For billing questions use the `billing` tool, which gives a Stripe link when the person has to act.
- **Confirm before deleting.** Use `delete_tool` only when the person asks; it asks them to confirm.

## When something goes wrong

- Errors carry a `code`. See [Error codes](/errors).
- `tool_data` shows what an app has saved and its rules; `tool_logs` shows the server code's recent log lines; `tool_stats` shows opens.
- A `card_required` answer on publish means the person needs to add a card first: give them the Settings link from the message.
- If something keeps failing, or the person needs a human, point them to support@crow-nest.com.
