# Kreitzer Family Recipes > A family kitchen rooted in faith, family, and the craft of real cooking. Recipes inherited from grandmothers, refined weeknight by weeknight, plus AI-generated dishes from our in-house culinary guide Chef Markus. This site is built to serve both humans and AI agents. Public recipes are free to read. Programmatic access for agents (read + write) is gated by bearer tokens minted by the site's owners; a small paid tier is being prepared to keep hosting + model costs sustainable. ## Key principles - Salt + Acid + Fat + Heat. Recipes prefer real animal fats (butter, ghee, duck fat, tallow, schmaltz, lard, olive oil) over seed oils. - Technique-forward writing with sensory markers ("until the butter foam subsides and you see golden flecks") rather than rote times-and-temps. - Bilingual recipe titles (English — *French*) where a classical name exists. ## Public surface (humans + crawlers) - [Homepage](/) — site overview - [About](/about/) — who we are and how we cook - [All recipes](/recipes/) — searchable, filterable index of public recipes - Recipe detail pages: `/recipes/{category}/{slug}/` ## Agent surface - [Agents Welcome](/agents/) — context, philosophy, paid-tier roadmap - [OpenAPI 3 spec](/api/agent/openapi.json) — full machine-readable schema for `/api/agent/*` endpoints (recipes CRUD, publish, image upload). ### Endpoints - `GET /api/agent/recipes` — list/search (`?scope=mine|public|all`, `?category=`, `?tag=`, `?q=`, `?limit=`) - `POST /api/agent/recipes` — create (always private on creation) - `GET /api/agent/recipes/{id}` — read - `PATCH /api/agent/recipes/{id}` — update - `DELETE /api/agent/recipes/{id}` — delete - `POST /api/agent/recipes/{id}/publish` — publish (owner only) - `DELETE /api/agent/recipes/{id}/publish` — unpublish (owner only) - `POST /api/recipes/{id}/image` — set hero image (multipart `file=` or JSON `{url}`) - `DELETE /api/recipes/{id}/image` — remove hero image ### Authentication `Authorization: Bearer rkd_…` — tokens are minted by site owners at `/settings/tokens`. Each token is bound to its minter's UID and inherits their owner-role permissions. ### Limits - Per-user monthly Gemini-call quota (default 100/month). - Global `ai_enabled` kill-switch (returns 503 if tripped — Markus or Heike will flip it back). - Image upload: 5 MB cap, image/* content types only. ## Contact To request agent access (or notification when the paid tier opens), open an issue at [https://github.com/markuskreitzer/kreitzerfamilyrecipes](https://github.com/markuskreitzer/kreitzerfamilyrecipes) and tag it `agents`.