Agent Chef
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AGENT_CHEF_API_KEY | No | API key from https://agentchef.net/app/settings/agents. Optional: without it the server lists tools but cannot act on a household. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_agent_chefA | The one call to make when the user says 'run agent chef' (or run the app / plan dinner / do the weekly thing). Returns the operating manual plus the checklist of tool calls that are due right now. Execute them in order, then call next_actions again until it returns no actions. Stop before any checkout. |
| record_scheduleA | Call after creating (or changing) the recurring 'Run Agent Chef.' task in your own scheduler, with a one-line description, e.g. 'Claude scheduled task, daily 9:00 and 18:00 America/Los_Angeles'. Lets the app stop reminding you and shows the owner that the loop is automated. |
| dismiss_setup_checklistA | Hides the 'Get set up' card on the household dashboard (e.g. when the owner says they don't need it). Pass show=true to bring it back. |
| get_connected_agentsA | Agents connected to this household via OAuth sign-in (Claude, ChatGPT…), with when they connected and last used. API keys are separate. |
| revoke_connected_agentA | Revoke an OAuth-connected agent's access (client_id from get_connected_agents). It must sign in again to reconnect. |
| next_actionsA | START HERE. Returns the current phase and an ordered checklist of tool calls that are due right now (propose, send ballot, remind non-voters, add options for feedback, lock in, shop), with why and the arguments/message text to use. Execute them, then call again until empty. Idempotent and time-aware; safe to call on a schedule. |
| get_instructionsA | The full operating manual for agents: the run loop, phases, how to write recipes, messaging and safety rules. Read once per session. |
| get_recipe_preferencesC | Household name, recipe preferences prompt (diet, allergies, dislikes, cuisines, time budget), shopping preferences prompt (brands, organic, store quirks) plus settings: plan_day, servings, grocery_store, recipes_per_week, votes_per_member. |
| update_recipe_preferencesB | Update any subset of the preferences prompt and settings. Omitted fields are unchanged. |
| get_membersA | List household members with contact info, whether they have signed in to Agent Chef themselves (has_account), whether they get push notifications, and their personal vote links. |
| upsert_memberA | Add a household member, or edit one: name is the key (case-insensitive), or pass member_id from get_members to rename. Phone and email update when given; an empty string clears them. Use this when someone wants to add or fix a member's contact details; never remove and re-add, which breaks their vote link. Roles: member (default) can vote, rate and browse once they sign in; admin can also change settings, recipes and weeks like the owner. |
| remove_memberA | Remove a household member by name (their votes and ratings stay attached to past weeks). The owner can't be removed. |
| get_ingredientsA | What the household already has, so the shopping list can skip it. Staples (staple: true) are always on hand unless marked out; leftovers carry expires_at and drop off on their own. |
| update_ingredientsA | Keep the pantry: add staples the household always has (omit days), add leftovers that should be skipped for a while and then drop off (days, 7 is typical), mark staples out when they run low so they go back on the shopping list, or remove items. Adding a staple that was out puts it back in stock. Don't add a week's groceries: they get cooked that week. |
| get_favorite_recipesA | Recipes marked as household favorites, with ratings. Good candidates to re-propose by recipe_id. |
| favorite_recipeB | Mark (or unmark) a recipe as a household favorite. |
| get_recipeA | Full details for one recipe: ingredients, steps, servings, source, tags, ratings, comments, how often it's been cooked, a link to its page, and a public share_url anyone can open. |
| search_recipesA | Every recipe the household has ever had proposed, with ratings and cook counts. Filter by text, favorites, or tag. Use recipe_id from here with propose_recipes to re-propose. |
| add_library_recipeA | Copy a recipe from Community recipes (search_recipes with scope 'library') into this household. Pass favorite: true to also mark it a favorite. Returns the household's copy; use its id on ballots. Passing a library id straight to propose_recipes or add_candidates does the same copy automatically. |
| update_recipeA | Edit a stored recipe: fix an ingredient, add steps, change servings, tags, image or source, or set public to publish it on agentchef.net/recipes. Only provided fields change. |
| import_recipeA | Fetch a recipe page (most cooking sites) and save it to the library with its real photo, ingredients, and steps. Returns the recipe; pass its recipe_id to propose_recipes or add_candidates to put it on a ballot. |
| create_recipeA | Save a recipe to the library from details you already have: one you read in your browser (when a site blocks import_recipe or has no recipe markup), one the owner dictated, or one you wrote. Provide the complete ingredient list with quantities and the steps; include the source page and a real photo URL when you have them. Optionally mark it a favorite. |
| set_recipe_imageA | Store a photo for a recipe permanently and set it as the recipe's image. Use for images you generated with your image tool (their URLs expire) or any photo you have as a URL or base64. Pass either image_url (we fetch and copy it) or image_base64 + content_type. Max 6 MB; JPEG, PNG, WebP or GIF. |
| import_recipesA | Bulk version of import_recipe: fetch up to 15 recipe pages and save them to the library, optionally marking each as a favorite. Use when the owner is moving favorites from another app (Mealime, a meal kit, a recipe manager). Names without URLs are your job: search for a real recipe page first, then pass the URLs here. Per-URL failures are reported, not thrown. |
| get_past_recipesA | Every recipe selected for a past week, newest first, with week, status, and ratings/comments. Use to avoid repeats and learn what landed. |
| get_current_weekB | Where the cycle stands: latest week + status (voting/selected/ordered/done), candidates with tallies, who has/hasn't voted, selected recipes, pending_feedback. Call this first. |
| propose_recipesA | Start a weekly cycle: store the candidate recipes (normally 10) and return numbered candidates, a ballot_text (with a {vote_link} placeholder for message_group), and each member's vote link. Re-calling for the same week_start replaces the candidates. |
| add_candidatesA | Append extra recipes to the current voting ballot (positions continue after the existing ones; votes are kept; 15 max). Use in response to ballot_feedback from get_current_week; open feedback is marked addressed. Follow up with message_group so voters know new options are up. |
| add_ballot_feedbackB | Record a member's comment about the current ballot (optionally about one candidate), e.g. relayed from a text message. Members can also do this themselves on their vote page. |
| send_feedbackA | Pass the owner's feedback about Agent Chef itself (a bug, a missing feature, something confusing) to the people who build it. Use when the owner says something like 'tell Agent Chef that…' or complains about the tool. Not for messages to the household. |
| message_groupA | Send a push notification, SMS/MMS or email to household members. '{vote_link}' in the message becomes each member's personal voting link. Channel 'auto' texts members with a phone and emails the rest. Providers now: {"sms":"dry-run","email":"resend","push":"web-push"} (dry-run = logged only). |
| add_voteA | Record one member's votes for the current week (replaces their earlier votes). Accepts recipe_ids or ballot positions. Unknown member names are created. |
| get_past_votesB | Historical ballots: per week, every candidate with vote count, voters, and whether it was selected. |
| set_this_weeks_recipesA | Lock in the dinners. With no recipe_ids, picks the top N (recipes_per_week) by votes; a tie at the cutoff goes to the earlier ballot position and is reported under tie_break. With recipe_ids, those become the dinners exactly: any number, any household or Community recipe, on the ballot or not (off-ballot picks are added to the week). Call again to change them; an ordered week stays ordered. Moves a voting week to 'selected' and returns the shopping list. |
| reopen_votingA | Undo set_this_weeks_recipes: clears the winners and returns the week to 'voting'. Existing votes are kept. Use if winners were locked in too early. |
| set_voting_deadlineA | One-off override of when the current ballot closes: an ISO timestamp, or extend_hours from the current deadline. Normally the deadline comes from the household schedule (vote_close_day/time); changing those via update_recipe_preferences re-syncs the current week. |
| rate_recipeA | Record post-cook feedback (1-5 + comment) for one member. Every member rates separately; a member's newer rating replaces their older one. Ratings never change the week's status. |
| assemble_online_grocery_orderA | Returns the shopping list for filling an online grocery cart: everything this week's selected recipes need minus what is on hand, grouped by item with quantities and which recipe needs it, plus the preferred store. Drive the browser to fill the cart; stop before checkout for approval; then call record_grocery_order. |
| record_grocery_orderA | Log the placed order and move the week to 'ordered'. Staples marked out that were bought are back in stock (listed under restocked). Purchased items don't join the pantry since they get cooked this week; set add_to_on_hand to keep them as leftovers for 7 days. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| run_agent_chef | Operate the household's meal loop: call next_actions and execute the checklist. Safe to run on a daily schedule. |
| weekly_cycle | Same as run_agent_chef. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 39 tools
Most tools target a distinct resource+action (propose_recipes vs add_candidates, import_recipe vs create_recipe, add_vote vs add_ballot_feedback), and the verbose descriptions clarify boundaries well. The main soft spot is run_agent_chef vs next_actions, which both return checklists, plus the family of get_* read tools, but descriptions make these workable.
Nearly everything is snake_case verb_noun (get_members, update_ingredients, add_vote, import_recipe, record_grocery_order), which is very predictable. A few outliers break the verb_noun form slightly (next_actions, favorite_recipe, message_group, send_feedback) but the convention stays readable and consistent.
39 tools is well past the 25+ threshold the rubric flags as too many for a single server. The domain (voting, recipes, pantry, members, grocery, messaging) is genuinely broad, but the surface is heavy enough to burden an agent's tool selection.
The lifecycle is well covered: recipes (create/import/read/update/favorite/image), members (add/edit/remove/agents), pantry, votes, weekly cycle (propose/add/lock/reopen/deadline), grocery (assemble/record) and messaging. Only minor gaps exist, such as no explicit recipe deletion.