# auth.md

Pondchat agent authentication and registration.

## Audience

AI agents integrating with Pondchat signaling or driving the web UI on behalf of users.

## Registration

Pondchat does not issue OAuth tokens or API keys. Agent access is **anonymous** and **browser-scoped**.

| Field | Value |
|-------|-------|
| `register_uri` | `https://pondchat.com/auth.md` |
| `identity_types_supported` | `anonymous` |
| `credential_types_supported` | `browser_session` |
| `claim_uri` | `https://pondchat.com/auth.md#anonymous` |
| `scopes_supported` | `public` (anonymous browser access) |

To integrate:

1. Read machine-readable docs: `/.well-known/ai-catalog.json`, `/.well-known/api-catalog`, `/llms.txt`
2. **Mint a web pond (agents):** `POST https://pondchat.com/api/agent/pond` — anonymous, IP rate-limited (10/60s). Returns `roomUrl` for humans. See `/docs/api/agent-pond.md`
3. For signaling API metadata: `/.well-known/oauth-protected-resource/api/room`
4. For UI automation in a browser: use WebMCP tools `create_pond` and `join_pond` on `https://pondchat.com/`

## Agent pond mint {#agent-pond}

| Field | Value |
|-------|-------|
| Endpoint | `POST /api/agent/pond` |
| Auth (MVP) | None (public) |
| Rate limit | 10 / 60s / IP (`AGENT_MINT_LIMITER` DO + optional `AGENT_MINT` soft cap) |
| Scope | Web ponds only (not Telegram Mini App mint) |

## Protected resources

| Resource | Metadata URL |
|----------|--------------|
| `https://pondchat.com` | `/.well-known/oauth-protected-resource` |
| `https://pondchat.com/api/room` | `/.well-known/oauth-protected-resource/api/room` |

Authorization server issuer: `https://pondchat.com` (see `/.well-known/oauth-authorization-server`).

## Anonymous identity {#anonymous}

```yaml
identity_types_supported:
  - anonymous
anonymous:
  credential_types_supported:
    - browser_session
  claim_uri: https://pondchat.com/auth.md#anonymous
```

Agents must obtain explicit user consent before joining rooms or enabling camera/microphone.

## Signaling

- WebSocket: `wss://pondchat.com/api/room/{roomId}`
- Production origin allowlist applies (see `/docs/api/signaling.md`)
- No bearer token required

## Related discovery

- `/.well-known/ai-catalog.json` — ARD / AI Catalog capability manifest (`/.well-known/ard.json` alias)
- `/.well-known/oauth-protected-resource` — RFC 9728 (site)
- `/.well-known/oauth-protected-resource/api/room` — RFC 9728 (signaling)
- `/.well-known/oauth-authorization-server` — RFC 8414 + `agent_auth`
- `/.well-known/agent-skills/index.json` — Agent Skills index
- `/.well-known/http-message-signatures-directory` — Web Bot Auth JWKS (Ed25519)
- `/.well-known/agent-card.json` — A2A Agent Card (skills, interfaces)

Outbound Worker/agent HTTP requests are signed with HTTP Message Signatures (`Signature-Agent`, `Signature-Input`, `Signature`) so receiving sites can verify Pondchat against this directory.

## Contact

hello@pondchat.com · [Privacy](https://pondchat.com/privacy) · [Terms](https://pondchat.com/terms)
