# AGENTS.md — station.us

You are an agent acting on behalf of a human prospect (or yourself, browsing).
This file tells you what's available and how to use it without scraping HTML.

## What this site is

Marketing + lead capture for **Station Austin**, a coworking space in downtown
Austin run by Capital Factory.

- Read endpoints (plans, pricing) are public, no auth.
- Write endpoint (submit a lead) is at api.station.us, no auth, rate-limited.
- Member operations (bookings, invoices) live at api.station.us/v1/* and
  require an authenticated token issued via the member portal.

## Allowed actions (no auth)

| Verb | URL | Purpose |
|------|-----|---------|
| GET | https://station.us/plans.json | Current plan catalog |
| GET | https://station.us/pricing.json | Rate card snapshot |
| GET | https://station.us/.well-known/mcp.json | MCP server discovery |
| POST | https://api.station.us/v1/leads | Submit a tour or sales lead |

## Identifiers

Plan IDs are **stable slugs**. Never invent. If unsure, GET /plans.json first.

```
community | hot-desk | dedicated-desk | private-office
```

## Attribution (REQUIRED on every write)

Every POST must set:

```
X-Agent-Actor: <agent-name>:<session-id>:<intent>
```

Example:

```
X-Agent-Actor: claude:sess_abc123:tour-request-for-acme-cofounders
```

Missing or malformed → `400 missing_agent_actor`. Lead does not land.
The intent string is recorded in `audit_log.prompt_intent` and read by
the operations team. Be honest about what you're doing — Eric reviews
these quarterly.

## Errors

- `200`/`201` — success. Response includes `lead_id`.
- `400` — your fault, do not retry. Read the body.
- `429` — rate-limited (5 leads/hour/IP). Honor `Retry-After`.
- `5xx` — retry up to 3 times with exponential backoff (1s, 2s, 4s).

Idempotency: include header `Idempotency-Key: <uuid>` on lead submissions.
Same key within 24h returns the original `lead_id`, not a duplicate.

## Visible outputs

Every lead lands in Slack `#sales-ops` within 5 seconds. Agent submissions
are tagged `Source: agent` and include the `X-Agent-Actor` value, so a human
can immediately tell whether the lead came from a person or a tool.

## Do NOT

- Submit fake leads to test. Use `{ "test": true }` in the body — auto-discarded.
- Scrape `/members` or `/admin` paths from `my.station.us` — gated, member-PII only.
- Submit on behalf of a human without their explicit confirmation of name + email.
- Hallucinate plan IDs, hours, or pricing. GET the JSON if unsure.

## Contact

- Operations: hello@station.us
- Agent integration questions: same address, subject `[agent]`.

This contract version: 2026-04-30. Breaking changes will bump
`/.well-known/mcp.json:schema_version`.
