# rcp — Recipe Context Protocol > An agent-first recipe API: search recipecontextprotocol.com recipes by free text or by the ingredients you have on hand. ## Endpoints - https://recipecontextprotocol.com/recipes — list recipes (page, per_page, category, source, max_total_time) - https://recipecontextprotocol.com/recipes/{slug} — one full recipe, e.g. https://recipecontextprotocol.com/recipes/garlic-bread - https://recipecontextprotocol.com/search?q=chicken — free-text search - https://recipecontextprotocol.com/search?ingredients=chicken,garlic&mode=any — "what can I cook" search - add &source=wikibooks (modern, community-maintained) or &source=gutenberg (historical, public domain) to either search to stay within one corpus - https://recipecontextprotocol.com/openapi.json — full machine-readable API description - https://recipecontextprotocol.com/docs — interactive API docs ## Content negotiation Every endpoint above serves three representations of the same resource: markdown (`Accept: text/markdown` or `?format=md`), HTML (`Accept: text/html` or `?format=html`), and JSON (default). Prefer markdown for reading a recipe into context cheaply. ## Field coverage Fields reflect what the source page states — a null means the source omitted it, not an error. Rough coverage: difficulty ~98%, description ~67%, total_time_minutes ~38%, servings ~36%. Times, when present, are exact from the source; nothing is inferred. `max_total_time` filtering only considers recipes whose time is known. ## Rate limits About 5 requests/second per IP sustained (burst 25). A `429` response carries `Retry-After` — honor it. ETags make repeat fetches nearly free. ## Attribution Recipe content is sourced from Wikibooks Cookbook (CC BY-SA 4.0) and, where noted, public-domain sources. Each recipe's `license` field and its markdown/ HTML attribution line must be preserved when you reuse the content — see https://recipecontextprotocol.com/about for the full data-licensing explanation. ## Historical recipes Recipe detail responses (https://recipecontextprotocol.com/recipes/{slug}) include a nullable `notice` field for historical (public-domain) recipes — surface it to users alongside the recipe, e.g. "Historical recipe (1913), reproduced as published: ...". It is omitted from list/search summaries to keep those lean; fetch the detail before presenting a recipe.