File a finished draft
finalize_recipeTurn a draft into a saved recipe: sets status final, infers filing, applies the sharing default, estimates nutrition. DESTRUCTIVE: the user's other same-title drafts from the last 6 hours go to trash (not erased; restore with delete_recipe action=restore within 7 days). Not idempotent. Needs 1+ ingredient and step; blocked on read-only accounts. Returns {id, title, filed, assumed, closed_duplicate_drafts?}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Draft recipe id (UUID) returned by start_recipe_draft or search_recipes status=draft, e.g. "3f2b8c1e-7a4d-4e0b-9c55-1d2e3f4a5b6c". Required. | |
| title | No | Optional final title, plain text, max 200 chars, e.g. "Nonna's Sunday Sauce". Defaults to the draft title with a trailing "(draft)" removed. | |
| visibility | No | Optional. "private" = only the user; "family" = shared with family_group_id. Omit to apply the user's sharing default, e.g. "private". | |
| inspired_by | No | Optional sources this recipe riffs on, e.g. [{"title": "Serious Eats carbonara", "url": "https://www.seriouseats.com/..."}]. | |
| menu_entry_id | No | Menu slot to fill once saved | |
| family_group_id | No | Optional group id (UUID) from manage_family action=list; only used with visibility="family", e.g. "9a1c0e2d-4b3f-4c6a-8d7e-0f1a2b3c4d5e". |