# Camp Notice for agents

> Everything an automated client needs to read, quote and query Camp Notice. Public, read-only, no credential required.

Camp Notice emails parents the moment it sees a seat open at a sold-out summer camp: it reads the camp's public registration page around the clock, then emails the parent. Independent of all camps; registration always happens on the camp's own site.

## Endpoints

| What | Where | Type |
| --- | --- | --- |
| MCP server (Streamable HTTP, stateless) | `POST https://campnotice.com/mcp` | `application/json` |
| Camp data API (read-only) | `GET https://campnotice.com/api/v1/…` | `application/json` |
| MCP server card | https://campnotice.com/.well-known/mcp/server-card.json | `application/json` |
| API catalog (RFC 9727) | https://campnotice.com/.well-known/api-catalog | `application/linkset+json` |
| OpenAPI 3.1 (public surface) | https://campnotice.com/api/openapi.json | `application/vnd.oai.openapi+json;version=3.1` |
| Agent skills index | https://campnotice.com/.well-known/agent-skills/index.json | `application/json` |
| Authentication guide | https://campnotice.com/auth.md | `text/markdown` |
| Site summary for LLMs | https://campnotice.com/llms.txt | `text/plain` |
| Every page's full text | https://campnotice.com/llms-full.txt | `text/markdown` |
| Health | https://campnotice.com/api/health | `application/json` |

Every HTML page also carries a `Link` header (RFC 8288) pointing at the catalog, the OpenAPI description, this guide, and the markdown copy of that page.

## Pages as markdown

Ask for markdown and you get markdown; ask for anything else and you get the HTML page, unchanged:

```bash
curl -sH 'accept: text/markdown' https://campnotice.com/
curl -s 'https://campnotice.com/?format=markdown'   # when you can't set a header
```

Markdown responses carry `Content-Type: text/markdown; charset=utf-8` and `x-markdown-tokens`, an estimate (~4 characters per token) of the body's size so you can budget context before reading it. Both representations send `Vary: Accept`.

## Camp data API

The same camp answers as the MCP camp tools, as plain HTTP. Read-only, no credential, CORS-open, cached for a few minutes.

- `GET https://campnotice.com/api/v1/states` — the states the directory covers, with camp counts.
- `GET https://campnotice.com/api/v1/camps?q=&state=&type=&limit=&offset=` — search by name or town, state, and type (day, overnight, family). Give `q`, `state`, or both; up to 25 per page, with a `total`.
- `GET https://campnotice.com/api/v1/camps/{state}/{camp}` — one camp by the `id` a search returned: its facts, the programs its listing publishes, and `live` — for a camp parents are watching, each session's open/full status with when we last read it (`null` otherwise).

```bash
curl -s 'https://campnotice.com/api/v1/camps?q=pine+hollow&state=CT'
```

Every camp carries a `watchUrl`. That is how a parent gets alerts: hand them the link, and they confirm the emailed code themselves. Nothing on this API starts, changes or stops a watch. Full schema: https://campnotice.com/api/openapi.json.

## MCP tools

- `list_pages` — List every public Camp Notice page — home, the watch wizard, pricing, and the policies — with its path, title and one-line description. Start here, then read one with get_page.
- `get_page` — Read one public Camp Notice page as markdown — its full prose, key points, any step-by-step guide, and its FAQ. Takes a path from list_pages, e.g. "/pricing" or "/watch".
- `search_docs` — Search Camp Notice pages and FAQs by keyword — waitlist, full camp, alerts, pricing — and get back the matching pages with the passage that matched.
- `get_pricing` — Get what Camp Notice costs: one price, per camp, paid once — no subscription and no tiers. Read from the same constant the site prints, so it is never a stale quote.
- `list_camp_states` — List the US states the camp directory covers, each with how many camps it lists. Use a state code from here as the "state" filter of search_camps.
- `search_camps` — Search the summer camp directory by camp name or town, optionally within a state and by type (day, overnight, family). Returns each camp's id, town, ages, accreditation, its page, and watchUrl — the link a parent opens to get emailed when a seat opens. "watched: true" means live session status is available from get_camp.
- `get_camp` — Get one camp by its id from search_camps (e.g. "california/camp-kennolyn") or its page URL: its facts, the programs its directory listing publishes, and — for a camp parents are watching — each session's live open/full status as last read from the camp's own registration page, with when it was read. Status can lag; registration and any seat are only ever on the camp's own site.

```bash
curl -sX POST https://campnotice.com/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_docs","arguments":{"query":"waitlist"}}}'
```

## Skills

- [`camp-seat-alerts`](https://campnotice.com/.well-known/agent-skills/camp-seat-alerts/SKILL.md) — Explain Camp Notice — the service that watches a sold-out summer camp’s public registration page and emails a parent the moment a seat opens. Use when someone asks what Camp Notice does, whether it can watch a given camp, how alerts and consent work, or what it costs.
- [`query-camp-notice`](https://campnotice.com/.well-known/agent-skills/query-camp-notice/SKILL.md) — Query Camp Notice programmatically — its public MCP server, markdown versions of every page, llms.txt, and the discovery documents under /.well-known. Use when you need current pages or pricing as structured data rather than scraped HTML.

Each entry in https://campnotice.com/.well-known/agent-skills/index.json carries a `sha256:` digest of the exact document served.

## Pages

- [Home](https://campnotice.com/) — Summer camp full or waitlisted? Get an email when a spot opens. Camp Notice checks the camp’s page for openings day and night. $25 per camp, paid once.
- [Watch a camp](https://campnotice.com/watch) — Name the camp, confirm your email with a 6-digit code, pay $25 once — and Camp Notice checks the camp’s page day and night and emails you when a spot opens.
- [Pricing](https://campnotice.com/pricing) — Camp Notice costs $25 per camp, paid once. One camp, all season: checked day and night until camp starts, alerts for up to 3 adults, nothing renews.
- [About](https://campnotice.com/about) — Camp Notice checks a full summer camp’s public page day and night and emails you when a spot may be open. Paid by parents, not camps. We never hold a spot.
- [Summer camp glossary](https://campnotice.com/glossary) — Sessions, deposits, waitlists, CITs, camperships: the words on summer camp sites and sign-up pages, explained in plain English for parents.
- [Terms of Service](https://campnotice.com/terms) — The terms that govern your use of Camp Notice — the service that emails parents the moment it sees a seat open at a sold-out camp.
- [Privacy Policy](https://campnotice.com/privacy) — How Camp Notice collects, uses, and protects data — your email address and your watches.
- [Accessibility](https://campnotice.com/accessibility) — Camp Notice targets WCAG 2.1 AA across the watch wizard, the home page, and every server-rendered parent page. How we build to be usable by everyone.

## Ground rules

- **Crawling.** https://campnotice.com/robots.txt is the authority. The staff console, API, auth and private parent pages are disallowed; the public pages are open, and the `Content-Signal` line there says how the content may be used: indexing and answering yes, model training no.
- **Identify yourself.** Send a `User-Agent` that names your client and a way to reach you. There is no rate limit on the discovery documents or the MCP server today; behave like there is one, and it stays that way.
- **No parent data here.** Email addresses and watches are never on this surface — see https://campnotice.com/auth.md.
- **Hand the parent the link.** To get a parent alerts, give them the camp's `watchUrl`. Never try to start a watch for them.
- **Independent, and honest about it.** Camp Notice is not affiliated with any camp or registration platform; availability is read from public pages with a freshness timestamp and can lag. Never present it as the camp's own word, and never claim a seat is guaranteed.

Something missing? hello@campnotice.com.
