# For agents

> Where an automated reader should start, and what it should load.

These pages are written to be read by software as well as by people.

## Start here

| Document | What it is |
| --- | --- |
| `/.well-known/skills.md` | What this API can do, its rules, and where everything else is. Start here. |
| `/.well-known/mcp.json` | How to reach the MCP server. |
| `/ext/v1/openapi.json` | The full machine-readable description. **No key required.** |
| `/llms.txt` | An index of these documentation pages. |
| `/llms-full.txt` | Every page, concatenated. |

The first three are served by the API host and the last two by the documentation site. Both hosts also carry pointer copies of the first two, so an agent that lands on either finds its way to the other.

```bash
curl https://api-notetaker.nabrah.ai/.well-known/skills.md
curl https://api-notetaker.nabrah.ai/ext/v1/openapi.json
```

## Reading the documentation as markdown

Append `.md` to any documentation URL for the raw source:

```bash
curl https://notetaker.nabrah.ai/docs/api/authentication.md
```

## The rules worth loading into context

These are the ones that produce confidently wrong answers when they are not known:

- A read-only key can only issue `GET`. A write returns `403`.
- **One live bot per account.** A second `POST /bots` returns `409`, and retrying will not help.
- Recording allowances are per calendar month; at the cap, `409` with the reason.
- `POST /calendar/connect-links` returns a URL a **person** must open. It cannot be completed headlessly.
- The calendar holds roughly 7 days back and 30 forward. Beyond that the honest answer is "not synced", not "nothing scheduled".
- Anything belonging to another account answers `404`, never `403`.

**Tip**

`skills.md` carries this same list. If you are building an agent, read that document rather than transcribing this page — it is generated from the live route table and cannot fall behind it.
