# Straatagbasen auth.md — Agent Authentication & Registration Policy

Dette dokument definerer adgangsbetingelser, autorisationsprotokoller og maskinlæsbare retningslinjer for AI-agenter (LLM'er, søgecrawlere og autonome tækkefaglige assistenter) på **Straatagbasen.dk**.

---

## 1. Oversigt & Standardadgang (Zero-friction Public Access)

Straatagbasen stiller Danmarks mest komplette register over 37.994 stråtækte ejendomme til rådighed for samfundet, tækkemænd og AI-modeller.

Følgende endpoints kræver **ingen forudgående registrering eller API-nøgle** til standardbrug:
- `GET /api/agent/properties`: Søgning og filtrering blandt alle 38.000 ejendomme.
- `GET /api/agent/properties/{id}`: Hent teknisk dossier med BBR-opmålinger og 360° SDFI skråfotos.
- `POST /api/agent/estimate`: Dynamisk priskalkulation for stråtag, lyngmønning og Sepatec®.
- `POST /api/mcp`: Standard JSON-RPC 2.0 WebMCP (Model Context Protocol) værktøjer.
- `GET /api/openapi.json`: OpenAPI 3.1 maskinlæsbar specifikation.
- `GET /.well-known/agent-skills/index.json`: Agent Skills Discovery v0.2.0 index.
- `GET /.well-known/ai-catalog.json`: ARD Capability Manifest.

---

## 2. Agent Identifikation & Content Negotiation

AI-agenter opfordres til at sende en informativ `User-Agent` header i HTTP-forespørgsler:
```http
User-Agent: YourAgentName/1.0 (+https://your-domain.com/agent-policy)
```

Når din agent anmoder om tekstoptimeret indhold til context windows, sendes headeren:
```http
Accept: text/markdown
```

---

## 3. Beskyttede Handlinger & Agent Registrering

For at interagere programmatisk med administrative funktioner eller indsende tilbudsforespørgsler på vegne af brugere, kan AI-agenter benytte OAuth 2.0 / RFC 9728 beskyttet ressourceadgang.

### Discovery Metadata:
- **Protected Resource Metadata**: `/.well-known/oauth-protected-resource`
- **Authorization Server Metadata**: `/.well-known/oauth-authorization-server`
- **OpenID Connect Metadata**: `/.well-known/openid-configuration`

### Understøttede Autentificeringsmetoder:
1. **Anonymous Agent Token Flow**:
   - `identity_types_supported: ["anonymous"]`
   - Claim URI: `/api/auth/claim-anonymous`
   - Giver et tidsbegrænset Bearer token til rate-limit forhøjelse.
2. **Identity Assertion Flow (ID-JAG & Verified Email)**:
   - `identity_types_supported: ["identity_assertion"]`
   - Assertion typer: `urn:ietf:params:oauth:token-type:id-jag`, `verified_email`
   - Claim URI: `/api/auth/claim-assertion`
   - Revocation URI: `/api/auth/revoke`

### Understøttede scopes (OAuth 2.0 / RFC 9728):
- `read:properties`: Ubegrænset opslag i ejendomsdatabasen.
- `read:assessments`: Hent detaljerede Jev System 1 og Gemini 2.5 tilstandsvurderinger.
- `calculate:estimate`: Kør simuleringer på tækkepriser og tagkonstruktioner.
- `write:leads`: Opret tilbudsforespørgsel til Dansk Tækkemandslaug.

### Header format:
```http
Authorization: Bearer <TOKEN>
```
eller
```http
x-api-key: <API_KEY>
```

---

## 4. Fair Use & Rate Limiting

- **Offentlige GET opslag**: Op til 120 kald / min.
- **WebMCP / JSON-RPC**: Op til 60 kald / min.
- **Henvendelser vedrørende enterprise integration**: `kontakt@straatagbasen.dk`
