agent-chef-mcp 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog.json +545 -15
- package/package.json +1 -1
package/catalog.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"synced_at": "2026-09-
|
|
2
|
+
"synced_at": "2026-09-10T03:13:44.979Z",
|
|
3
3
|
"server": {
|
|
4
4
|
"name": "agent-chef",
|
|
5
5
|
"version": "0.4.0"
|
|
6
6
|
},
|
|
7
|
-
"instructions": "# How to run Agent Chef\n\nYou are the household's agent. Agent Chef is the state machine; you are the hands. You never need to remember where the week stands: the server tells you.\n\nRUN LOOP. When the user says \"run agent chef\", call run_agent_chef (it returns this manual, today's checklist, and whether a recurring schedule exists) and follow it. The first time, also schedule yourself to run \"Run Agent Chef.\" twice a day (09:00 and 18:00 in the household's timezone) and confirm it with record_schedule, so the whole week runs end to end without anyone asking. Then:\n1. Call next_actions.\n2. Execute the returned actions in order. Each one names the tool, why it's due, and the arguments or message text to use. Where an argument is in <angle brackets>, you fill it in (e.g. write the 10 recipes).\n3. Call next_actions again. Repeat until it returns no actions, then stop and report a one-line summary.\n\nWHAT THE PHASES MEAN\n- new_cycle: it's past the household's plan day. Propose 10 recipes and send the ballot. Last week's unrated dinners are collected on the ballot page itself (a rating card sits above the new options), so don't send a separate rating request; the ballot text mentions it.\n- voting: people vote on their personal links until voting_closes_at (household setting: weekday + time; set_voting_deadline moves it). You may be asked to send one reminder to non-voters shortly before the deadline, or to add 2-3 options answering ballot feedback. When everyone has voted or the deadline passes, lock in the winners, announce them, and build the cart.\n- shopping: assemble_online_grocery_order gives you the list minus the pantry plus the household's shopping_preferences (brands, organic, substitutions): follow them when picking products. Fill the cart in the store's website, show the total, and STOP for explicit approval before checkout. Then record_grocery_order.\n- cooking / idle: nothing to do until the next plan day.\n\nWRITING RECIPES (propose_recipes / add_candidates): read get_recipe_preferences first. Source recipes from real pages: import_recipe(url) saves a recipe from a trusted site with its photo, ingredients and steps, then pass its recipe_id; aim for most of the ballot to come from real sources. search_recipes finds anything already in the library. PHOTOS ARE YOUR JOB: every candidate should have a real image_url (the source page's photo, or one you found by searching). The server checks each URL is a live image and rejects dead ones; a card without a photo means you skipped this. If no real photo exists, generate one with your image tool (a realistic photo of the plated dish, natural light, no text, no people) and attach it with set_recipe_image, which stores it permanently; image-tool URLs expire, so never pass them as image_url directly. After propose_recipes, check the returned candidates for a missing image_url and fix each with set_recipe_image. Use get_favorite_recipes (include 1-2), get_past_recipes (avoid repeats from the last ~4 weeks), get_past_votes (lean into what wins), get_ingredients (use what's on hand). Each recipe: title, one appetizing sentence, servings, complete ingredients with quantities, steps, tags, and a real image_url (see PHOTOS).\n\nMESSAGING: message_group sends push notifications (to members who tapped \"notify me\" on their vote page), SMS or email, and personalises {vote_link} per person; channel auto picks push first, then text, then email. Pass the kind the action specifies so the server can track what was sent. If the household prefers, you may post the same text into their own group chat instead; still call message_group so it's logged (it dry-runs if no provider is configured).\n\nSWITCHING FROM ANOTHER APP: when the owner lists meals they loved elsewhere (Mealime, a meal kit, a recipe manager), find a real recipe page for each name on a well-known recipe site, then save them all at once with import_recipes (favorite_all: true); URLs they give you go straight in. If you have a browser tool, you can collect the favorites yourself: open the old app, let the owner sign in (never type their password), gather the recipe links, then import. Mealime and HelloFresh recipe pages import cleanly; Blue Apron and Marley Spoon block automated fetching, so for those read each recipe card in your browser and save it with create_recipe (title, ingredients with quantities, steps, servings, photo URL, source link, favorite: true). Use create_recipe whenever import_recipe fails on a page you can read. Report what you saved and what you could not find. Favorites are re-proposed on future ballots.\n\nON-DEMAND REQUESTS: when the owner asks for something the schedule wouldn't do yet (\"start next week's ballot now\", \"add two more options\", \"lock it in early\", \"send a reminder\"), do it directly with the matching tool even if next_actions says nothing is due. For an early ballot, call propose_recipes with week_start set to the coming cycle start (next_actions returns it as on_demand / cycle_start) and then message_group with the ballot.\n\nHOUSEHOLDS OF ONE work the same way: one voter, top N by their votes, same loop. Never block on adding members.\n\nRULES: never invent a vote or a rating; never check out without explicit approval in this conversation; keep messages short and friendly; if a tool errors, fix the input and retry once, then report.",
|
|
7
|
+
"instructions": "# How to run Agent Chef\n\nYou are the household's agent. Agent Chef is the state machine; you are the hands. You never need to remember where the week stands: the server tells you.\n\nRUN LOOP. When the user says \"run agent chef\", call run_agent_chef (it returns this manual, today's checklist, and whether a recurring schedule exists) and follow it. The first time, also schedule yourself to run \"Run Agent Chef.\" twice a day (09:00 and 18:00 in the household's timezone) and confirm it with record_schedule, so the whole week runs end to end without anyone asking. Then:\n1. Call next_actions.\n2. Execute the returned actions in order. Each one names the tool, why it's due, and the arguments or message text to use. Where an argument is in <angle brackets>, you fill it in (e.g. write the 10 recipes).\n3. Call next_actions again. Repeat until it returns no actions, then stop and report a one-line summary.\n\nWHAT THE PHASES MEAN\n- new_cycle: it's past the household's plan day. Propose 10 recipes and send the ballot. Last week's unrated dinners are collected on the ballot page itself (a rating card sits above the new options), so don't send a separate rating request; the ballot text mentions it.\n- voting: people vote on their personal links until voting_closes_at (household setting: weekday + time; set_voting_deadline moves it). You may be asked to send one reminder to non-voters shortly before the deadline, or to add 2-3 options answering ballot feedback. When everyone has voted or the deadline passes, lock in the winners, announce them, and build the cart.\n- shopping: assemble_online_grocery_order gives you the list minus the pantry plus the household's shopping_preferences (brands, organic, substitutions): follow them when picking products. Fill the cart in the store's website, show the total, and STOP for explicit approval before checkout. Then record_grocery_order.\n- cooking / idle: nothing to do until the next plan day.\n\nCOMMUNITY RECIPES: Agent Chef has a shared pool of public recipes (\"Community recipes\") with photos, ingredients and steps, plus how many households cooked, favorited and rated each one. Before writing or importing recipes, call search_recipes with scope 'library' (a query or tag helps). Put library ids straight on the ballot with propose_recipes or add_candidates; the recipe is copied into the household automatically. add_library_recipe saves one as a favorite without a ballot. Prefer well-cooked, well-rated library recipes over untested ones from the web.\n\nWRITING RECIPES (propose_recipes / add_candidates): read get_recipe_preferences first. Source recipes from real pages: import_recipe(url) saves a recipe from a trusted site with its photo, ingredients and steps, then pass its recipe_id; aim for most of the ballot to come from real sources. search_recipes finds anything already in the library. PHOTOS ARE YOUR JOB: every candidate should have a real image_url (the source page's photo, or one you found by searching). The server checks each URL is a live image and rejects dead ones; a card without a photo means you skipped this. If no real photo exists, generate one with your image tool (a realistic photo of the plated dish, natural light, no text, no people) and attach it with set_recipe_image, which stores it permanently; image-tool URLs expire, so never pass them as image_url directly. Photos copied from recipe sites stay private to the household; when a recipe is shared to Community recipes, only ingredients, a source link and an original photo are shown. After propose_recipes, check the returned candidates for a missing image_url and fix each with set_recipe_image. Use get_favorite_recipes (include 1-2), get_past_recipes (avoid repeats from the last ~4 weeks), get_past_votes (lean into what wins), get_ingredients (use what's on hand). Each recipe: title, one appetizing sentence, servings, complete ingredients with quantities, steps, tags, and a real image_url (see PHOTOS).\n\nMESSAGING: message_group sends push notifications (to members who tapped \"notify me\" on their vote page), SMS or email, and personalises {vote_link} per person; channel auto picks push first, then text, then email. Pass the kind the action specifies so the server can track what was sent. If the household prefers, you may post the same text into their own group chat instead; still call message_group so it's logged (it dry-runs if no provider is configured).\n\nSWITCHING FROM ANOTHER APP: when the owner lists meals they loved elsewhere (Mealime, a meal kit, a recipe manager), find a real recipe page for each name on a well-known recipe site, then save them all at once with import_recipes (favorite_all: true); URLs they give you go straight in. If you have a browser tool, you can collect the favorites yourself: open the old app, let the owner sign in (never type their password), gather the recipe links, then import. Mealime and HelloFresh recipe pages import cleanly; Blue Apron and Marley Spoon block automated fetching, so for those read each recipe card in your browser and save it with create_recipe (title, ingredients with quantities, steps, servings, photo URL, source link, favorite: true). Use create_recipe whenever import_recipe fails on a page you can read. Report what you saved and what you could not find. Favorites are re-proposed on future ballots.\n\nON-DEMAND REQUESTS: when the owner asks for something the schedule wouldn't do yet (\"start next week's ballot now\", \"add two more options\", \"lock it in early\", \"send a reminder\"), do it directly with the matching tool even if next_actions says nothing is due. For an early ballot, call propose_recipes with week_start set to the coming cycle start (next_actions returns it as on_demand / cycle_start) and then message_group with the ballot.\n\nHOUSEHOLDS OF ONE work the same way: one voter, top N by their votes, same loop. Never block on adding members.\n\nRULES: never invent a vote or a rating; never check out without explicit approval in this conversation; keep messages short and friendly; if a tool errors, fix the input and retry once, then report.",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"name": "run_agent_chef",
|
|
@@ -990,7 +990,7 @@
|
|
|
990
990
|
{
|
|
991
991
|
"name": "get_members",
|
|
992
992
|
"title": "Get household members",
|
|
993
|
-
"description": "List household members with contact info, whether they get push notifications, and their personal vote links.",
|
|
993
|
+
"description": "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.",
|
|
994
994
|
"inputSchema": {
|
|
995
995
|
"type": "object",
|
|
996
996
|
"properties": {}
|
|
@@ -1035,13 +1035,15 @@
|
|
|
1035
1035
|
"type": "string",
|
|
1036
1036
|
"enum": [
|
|
1037
1037
|
"owner",
|
|
1038
|
+
"admin",
|
|
1038
1039
|
"member"
|
|
1039
1040
|
]
|
|
1040
1041
|
},
|
|
1041
1042
|
{
|
|
1042
1043
|
"type": "null"
|
|
1043
1044
|
}
|
|
1044
|
-
]
|
|
1045
|
+
],
|
|
1046
|
+
"description": "owner = primary owner; admin = runs the household like the owner; member = votes, rates and browses"
|
|
1045
1047
|
},
|
|
1046
1048
|
"vote_link": {
|
|
1047
1049
|
"type": [
|
|
@@ -1050,6 +1052,13 @@
|
|
|
1050
1052
|
],
|
|
1051
1053
|
"description": "Personal voting page for this member"
|
|
1052
1054
|
},
|
|
1055
|
+
"has_account": {
|
|
1056
|
+
"type": [
|
|
1057
|
+
"boolean",
|
|
1058
|
+
"null"
|
|
1059
|
+
],
|
|
1060
|
+
"description": "True once this member has signed in to Agent Chef with their own account"
|
|
1061
|
+
},
|
|
1053
1062
|
"push_subscribed": {
|
|
1054
1063
|
"type": [
|
|
1055
1064
|
"boolean",
|
|
@@ -1076,7 +1085,7 @@
|
|
|
1076
1085
|
{
|
|
1077
1086
|
"name": "upsert_member",
|
|
1078
1087
|
"title": "Add or update a member",
|
|
1079
|
-
"description": "Add a household member or update phone/email. Name is the key (case-insensitive).",
|
|
1088
|
+
"description": "Add a household member or update phone/email/role. Name is the key (case-insensitive). Roles: member (default) can vote, rate and browse once they sign in; admin can also change settings, recipes and weeks like the owner.",
|
|
1080
1089
|
"inputSchema": {
|
|
1081
1090
|
"type": "object",
|
|
1082
1091
|
"properties": {
|
|
@@ -1089,6 +1098,14 @@
|
|
|
1089
1098
|
},
|
|
1090
1099
|
"email": {
|
|
1091
1100
|
"type": "string"
|
|
1101
|
+
},
|
|
1102
|
+
"role": {
|
|
1103
|
+
"type": "string",
|
|
1104
|
+
"enum": [
|
|
1105
|
+
"admin",
|
|
1106
|
+
"member"
|
|
1107
|
+
],
|
|
1108
|
+
"description": "Only for members who have signed in to Agent Chef (has_account); admin needs an account"
|
|
1092
1109
|
}
|
|
1093
1110
|
},
|
|
1094
1111
|
"required": [
|
|
@@ -1132,13 +1149,15 @@
|
|
|
1132
1149
|
"type": "string",
|
|
1133
1150
|
"enum": [
|
|
1134
1151
|
"owner",
|
|
1152
|
+
"admin",
|
|
1135
1153
|
"member"
|
|
1136
1154
|
]
|
|
1137
1155
|
},
|
|
1138
1156
|
{
|
|
1139
1157
|
"type": "null"
|
|
1140
1158
|
}
|
|
1141
|
-
]
|
|
1159
|
+
],
|
|
1160
|
+
"description": "owner = primary owner; admin = runs the household like the owner; member = votes, rates and browses"
|
|
1142
1161
|
},
|
|
1143
1162
|
"vote_link": {
|
|
1144
1163
|
"type": [
|
|
@@ -1147,6 +1166,13 @@
|
|
|
1147
1166
|
],
|
|
1148
1167
|
"description": "Personal voting page for this member"
|
|
1149
1168
|
},
|
|
1169
|
+
"has_account": {
|
|
1170
|
+
"type": [
|
|
1171
|
+
"boolean",
|
|
1172
|
+
"null"
|
|
1173
|
+
],
|
|
1174
|
+
"description": "True once this member has signed in to Agent Chef with their own account"
|
|
1175
|
+
},
|
|
1150
1176
|
"push_subscribed": {
|
|
1151
1177
|
"type": [
|
|
1152
1178
|
"boolean",
|
|
@@ -1220,13 +1246,15 @@
|
|
|
1220
1246
|
"type": "string",
|
|
1221
1247
|
"enum": [
|
|
1222
1248
|
"owner",
|
|
1249
|
+
"admin",
|
|
1223
1250
|
"member"
|
|
1224
1251
|
]
|
|
1225
1252
|
},
|
|
1226
1253
|
{
|
|
1227
1254
|
"type": "null"
|
|
1228
1255
|
}
|
|
1229
|
-
]
|
|
1256
|
+
],
|
|
1257
|
+
"description": "owner = primary owner; admin = runs the household like the owner; member = votes, rates and browses"
|
|
1230
1258
|
},
|
|
1231
1259
|
"vote_link": {
|
|
1232
1260
|
"type": [
|
|
@@ -1235,6 +1263,13 @@
|
|
|
1235
1263
|
],
|
|
1236
1264
|
"description": "Personal voting page for this member"
|
|
1237
1265
|
},
|
|
1266
|
+
"has_account": {
|
|
1267
|
+
"type": [
|
|
1268
|
+
"boolean",
|
|
1269
|
+
"null"
|
|
1270
|
+
],
|
|
1271
|
+
"description": "True once this member has signed in to Agent Chef with their own account"
|
|
1272
|
+
},
|
|
1238
1273
|
"push_subscribed": {
|
|
1239
1274
|
"type": [
|
|
1240
1275
|
"boolean",
|
|
@@ -1527,6 +1562,20 @@
|
|
|
1527
1562
|
],
|
|
1528
1563
|
"description": "Indexable public page, when published"
|
|
1529
1564
|
},
|
|
1565
|
+
"source_recipe_id": {
|
|
1566
|
+
"type": [
|
|
1567
|
+
"string",
|
|
1568
|
+
"null"
|
|
1569
|
+
],
|
|
1570
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
1571
|
+
},
|
|
1572
|
+
"image_generated": {
|
|
1573
|
+
"type": [
|
|
1574
|
+
"boolean",
|
|
1575
|
+
"null"
|
|
1576
|
+
],
|
|
1577
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
1578
|
+
},
|
|
1530
1579
|
"created_at": {
|
|
1531
1580
|
"type": [
|
|
1532
1581
|
"string",
|
|
@@ -1730,6 +1779,20 @@
|
|
|
1730
1779
|
],
|
|
1731
1780
|
"description": "Indexable public page, when published"
|
|
1732
1781
|
},
|
|
1782
|
+
"source_recipe_id": {
|
|
1783
|
+
"type": [
|
|
1784
|
+
"string",
|
|
1785
|
+
"null"
|
|
1786
|
+
],
|
|
1787
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
1788
|
+
},
|
|
1789
|
+
"image_generated": {
|
|
1790
|
+
"type": [
|
|
1791
|
+
"boolean",
|
|
1792
|
+
"null"
|
|
1793
|
+
],
|
|
1794
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
1795
|
+
},
|
|
1733
1796
|
"created_at": {
|
|
1734
1797
|
"type": [
|
|
1735
1798
|
"string",
|
|
@@ -1922,6 +1985,20 @@
|
|
|
1922
1985
|
],
|
|
1923
1986
|
"description": "Indexable public page, when published"
|
|
1924
1987
|
},
|
|
1988
|
+
"source_recipe_id": {
|
|
1989
|
+
"type": [
|
|
1990
|
+
"string",
|
|
1991
|
+
"null"
|
|
1992
|
+
],
|
|
1993
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
1994
|
+
},
|
|
1995
|
+
"image_generated": {
|
|
1996
|
+
"type": [
|
|
1997
|
+
"boolean",
|
|
1998
|
+
"null"
|
|
1999
|
+
],
|
|
2000
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
2001
|
+
},
|
|
1925
2002
|
"created_at": {
|
|
1926
2003
|
"type": [
|
|
1927
2004
|
"string",
|
|
@@ -2062,6 +2139,15 @@
|
|
|
2062
2139
|
},
|
|
2063
2140
|
"tag": {
|
|
2064
2141
|
"type": "string"
|
|
2142
|
+
},
|
|
2143
|
+
"scope": {
|
|
2144
|
+
"type": "string",
|
|
2145
|
+
"enum": [
|
|
2146
|
+
"ours",
|
|
2147
|
+
"library",
|
|
2148
|
+
"all"
|
|
2149
|
+
],
|
|
2150
|
+
"description": "ours (default): this household's recipes. library: Community recipes, the shared pool of public recipes, with cooks/favorites/ratings across households. all: both."
|
|
2065
2151
|
}
|
|
2066
2152
|
},
|
|
2067
2153
|
"additionalProperties": false,
|
|
@@ -2187,6 +2273,20 @@
|
|
|
2187
2273
|
],
|
|
2188
2274
|
"description": "Indexable public page, when published"
|
|
2189
2275
|
},
|
|
2276
|
+
"source_recipe_id": {
|
|
2277
|
+
"type": [
|
|
2278
|
+
"string",
|
|
2279
|
+
"null"
|
|
2280
|
+
],
|
|
2281
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
2282
|
+
},
|
|
2283
|
+
"image_generated": {
|
|
2284
|
+
"type": [
|
|
2285
|
+
"boolean",
|
|
2286
|
+
"null"
|
|
2287
|
+
],
|
|
2288
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
2289
|
+
},
|
|
2190
2290
|
"created_at": {
|
|
2191
2291
|
"type": [
|
|
2192
2292
|
"string",
|
|
@@ -2239,28 +2339,58 @@
|
|
|
2239
2339
|
]
|
|
2240
2340
|
},
|
|
2241
2341
|
"rating_count": {
|
|
2342
|
+
"type": "number"
|
|
2343
|
+
},
|
|
2344
|
+
"times_cooked": {
|
|
2242
2345
|
"type": [
|
|
2243
2346
|
"number",
|
|
2244
2347
|
"null"
|
|
2245
2348
|
]
|
|
2246
2349
|
},
|
|
2247
|
-
"
|
|
2350
|
+
"last_cooked": {
|
|
2248
2351
|
"type": [
|
|
2249
|
-
"
|
|
2352
|
+
"string",
|
|
2250
2353
|
"null"
|
|
2251
2354
|
]
|
|
2252
2355
|
},
|
|
2253
|
-
"
|
|
2356
|
+
"url": {
|
|
2357
|
+
"type": "string",
|
|
2358
|
+
"description": "Public page"
|
|
2359
|
+
},
|
|
2360
|
+
"cooks": {
|
|
2361
|
+
"type": "number",
|
|
2362
|
+
"description": "Households that have cooked it"
|
|
2363
|
+
},
|
|
2364
|
+
"favorites": {
|
|
2365
|
+
"type": "number",
|
|
2366
|
+
"description": "Households that favorited it"
|
|
2367
|
+
},
|
|
2368
|
+
"forks": {
|
|
2369
|
+
"type": "number",
|
|
2370
|
+
"description": "Households that added it"
|
|
2371
|
+
},
|
|
2372
|
+
"my_recipe_id": {
|
|
2254
2373
|
"type": [
|
|
2255
2374
|
"string",
|
|
2256
2375
|
"null"
|
|
2376
|
+
],
|
|
2377
|
+
"description": "This household's copy, if already added; use that id on ballots"
|
|
2378
|
+
},
|
|
2379
|
+
"scope": {
|
|
2380
|
+
"anyOf": [
|
|
2381
|
+
{
|
|
2382
|
+
"type": "string",
|
|
2383
|
+
"enum": [
|
|
2384
|
+
"ours",
|
|
2385
|
+
"library"
|
|
2386
|
+
]
|
|
2387
|
+
},
|
|
2388
|
+
{
|
|
2389
|
+
"type": "null"
|
|
2390
|
+
}
|
|
2257
2391
|
]
|
|
2258
2392
|
}
|
|
2259
2393
|
},
|
|
2260
|
-
"required": [
|
|
2261
|
-
"id",
|
|
2262
|
-
"title"
|
|
2263
|
-
],
|
|
2264
2394
|
"additionalProperties": true
|
|
2265
2395
|
}
|
|
2266
2396
|
}
|
|
@@ -2272,6 +2402,217 @@
|
|
|
2272
2402
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2273
2403
|
}
|
|
2274
2404
|
},
|
|
2405
|
+
{
|
|
2406
|
+
"name": "add_library_recipe",
|
|
2407
|
+
"title": "Add a Community recipe",
|
|
2408
|
+
"description": "Copy a recipe from Community recipes (search_recipes with scope 'library') into this household, as a favorite by default. 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.",
|
|
2409
|
+
"inputSchema": {
|
|
2410
|
+
"type": "object",
|
|
2411
|
+
"properties": {
|
|
2412
|
+
"recipe_id": {
|
|
2413
|
+
"type": "string",
|
|
2414
|
+
"description": "Library recipe id from search_recipes"
|
|
2415
|
+
},
|
|
2416
|
+
"favorite": {
|
|
2417
|
+
"type": "boolean",
|
|
2418
|
+
"description": "Default true"
|
|
2419
|
+
}
|
|
2420
|
+
},
|
|
2421
|
+
"required": [
|
|
2422
|
+
"recipe_id"
|
|
2423
|
+
],
|
|
2424
|
+
"additionalProperties": false,
|
|
2425
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2426
|
+
},
|
|
2427
|
+
"annotations": {
|
|
2428
|
+
"readOnlyHint": false,
|
|
2429
|
+
"destructiveHint": false,
|
|
2430
|
+
"openWorldHint": false
|
|
2431
|
+
},
|
|
2432
|
+
"execution": {
|
|
2433
|
+
"taskSupport": "forbidden"
|
|
2434
|
+
},
|
|
2435
|
+
"outputSchema": {
|
|
2436
|
+
"type": "object",
|
|
2437
|
+
"properties": {
|
|
2438
|
+
"id": {
|
|
2439
|
+
"type": "string"
|
|
2440
|
+
},
|
|
2441
|
+
"title": {
|
|
2442
|
+
"$ref": "#/properties/id"
|
|
2443
|
+
},
|
|
2444
|
+
"description": {
|
|
2445
|
+
"type": [
|
|
2446
|
+
"string",
|
|
2447
|
+
"null"
|
|
2448
|
+
]
|
|
2449
|
+
},
|
|
2450
|
+
"image_url": {
|
|
2451
|
+
"type": [
|
|
2452
|
+
"string",
|
|
2453
|
+
"null"
|
|
2454
|
+
]
|
|
2455
|
+
},
|
|
2456
|
+
"source_url": {
|
|
2457
|
+
"type": [
|
|
2458
|
+
"string",
|
|
2459
|
+
"null"
|
|
2460
|
+
]
|
|
2461
|
+
},
|
|
2462
|
+
"servings": {
|
|
2463
|
+
"type": [
|
|
2464
|
+
"number",
|
|
2465
|
+
"null"
|
|
2466
|
+
]
|
|
2467
|
+
},
|
|
2468
|
+
"ingredients": {
|
|
2469
|
+
"anyOf": [
|
|
2470
|
+
{
|
|
2471
|
+
"type": "array",
|
|
2472
|
+
"items": {
|
|
2473
|
+
"type": "object",
|
|
2474
|
+
"properties": {
|
|
2475
|
+
"name": {
|
|
2476
|
+
"$ref": "#/properties/id"
|
|
2477
|
+
},
|
|
2478
|
+
"quantity": {
|
|
2479
|
+
"type": [
|
|
2480
|
+
"string",
|
|
2481
|
+
"null"
|
|
2482
|
+
],
|
|
2483
|
+
"description": "Free text, e.g. '2 lbs'"
|
|
2484
|
+
}
|
|
2485
|
+
},
|
|
2486
|
+
"required": [
|
|
2487
|
+
"name"
|
|
2488
|
+
],
|
|
2489
|
+
"additionalProperties": true
|
|
2490
|
+
}
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"type": "null"
|
|
2494
|
+
}
|
|
2495
|
+
]
|
|
2496
|
+
},
|
|
2497
|
+
"steps": {
|
|
2498
|
+
"anyOf": [
|
|
2499
|
+
{
|
|
2500
|
+
"type": "array",
|
|
2501
|
+
"items": {
|
|
2502
|
+
"$ref": "#/properties/id"
|
|
2503
|
+
}
|
|
2504
|
+
},
|
|
2505
|
+
{
|
|
2506
|
+
"type": "null"
|
|
2507
|
+
}
|
|
2508
|
+
]
|
|
2509
|
+
},
|
|
2510
|
+
"tags": {
|
|
2511
|
+
"anyOf": [
|
|
2512
|
+
{
|
|
2513
|
+
"type": "array",
|
|
2514
|
+
"items": {
|
|
2515
|
+
"$ref": "#/properties/id"
|
|
2516
|
+
}
|
|
2517
|
+
},
|
|
2518
|
+
{
|
|
2519
|
+
"type": "null"
|
|
2520
|
+
}
|
|
2521
|
+
]
|
|
2522
|
+
},
|
|
2523
|
+
"is_favorite": {
|
|
2524
|
+
"type": [
|
|
2525
|
+
"boolean",
|
|
2526
|
+
"null"
|
|
2527
|
+
]
|
|
2528
|
+
},
|
|
2529
|
+
"is_public": {
|
|
2530
|
+
"type": [
|
|
2531
|
+
"boolean",
|
|
2532
|
+
"null"
|
|
2533
|
+
]
|
|
2534
|
+
},
|
|
2535
|
+
"public_url": {
|
|
2536
|
+
"type": [
|
|
2537
|
+
"string",
|
|
2538
|
+
"null"
|
|
2539
|
+
],
|
|
2540
|
+
"description": "Indexable public page, when published"
|
|
2541
|
+
},
|
|
2542
|
+
"source_recipe_id": {
|
|
2543
|
+
"type": [
|
|
2544
|
+
"string",
|
|
2545
|
+
"null"
|
|
2546
|
+
],
|
|
2547
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
2548
|
+
},
|
|
2549
|
+
"image_generated": {
|
|
2550
|
+
"type": [
|
|
2551
|
+
"boolean",
|
|
2552
|
+
"null"
|
|
2553
|
+
],
|
|
2554
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
2555
|
+
},
|
|
2556
|
+
"created_at": {
|
|
2557
|
+
"type": [
|
|
2558
|
+
"string",
|
|
2559
|
+
"null"
|
|
2560
|
+
]
|
|
2561
|
+
},
|
|
2562
|
+
"ratings": {
|
|
2563
|
+
"anyOf": [
|
|
2564
|
+
{
|
|
2565
|
+
"type": "array",
|
|
2566
|
+
"items": {
|
|
2567
|
+
"type": "object",
|
|
2568
|
+
"properties": {
|
|
2569
|
+
"rating": {
|
|
2570
|
+
"type": "number",
|
|
2571
|
+
"description": "1-5"
|
|
2572
|
+
},
|
|
2573
|
+
"comment": {
|
|
2574
|
+
"type": [
|
|
2575
|
+
"string",
|
|
2576
|
+
"null"
|
|
2577
|
+
]
|
|
2578
|
+
},
|
|
2579
|
+
"member": {
|
|
2580
|
+
"$ref": "#/properties/id"
|
|
2581
|
+
},
|
|
2582
|
+
"created_at": {
|
|
2583
|
+
"type": [
|
|
2584
|
+
"string",
|
|
2585
|
+
"null"
|
|
2586
|
+
]
|
|
2587
|
+
}
|
|
2588
|
+
},
|
|
2589
|
+
"required": [
|
|
2590
|
+
"rating",
|
|
2591
|
+
"member"
|
|
2592
|
+
],
|
|
2593
|
+
"additionalProperties": true
|
|
2594
|
+
}
|
|
2595
|
+
},
|
|
2596
|
+
{
|
|
2597
|
+
"type": "null"
|
|
2598
|
+
}
|
|
2599
|
+
]
|
|
2600
|
+
},
|
|
2601
|
+
"avg_rating": {
|
|
2602
|
+
"type": [
|
|
2603
|
+
"number",
|
|
2604
|
+
"null"
|
|
2605
|
+
]
|
|
2606
|
+
}
|
|
2607
|
+
},
|
|
2608
|
+
"required": [
|
|
2609
|
+
"id",
|
|
2610
|
+
"title"
|
|
2611
|
+
],
|
|
2612
|
+
"additionalProperties": true,
|
|
2613
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2614
|
+
}
|
|
2615
|
+
},
|
|
2275
2616
|
{
|
|
2276
2617
|
"name": "update_recipe",
|
|
2277
2618
|
"title": "Update a recipe",
|
|
@@ -2455,6 +2796,20 @@
|
|
|
2455
2796
|
],
|
|
2456
2797
|
"description": "Indexable public page, when published"
|
|
2457
2798
|
},
|
|
2799
|
+
"source_recipe_id": {
|
|
2800
|
+
"type": [
|
|
2801
|
+
"string",
|
|
2802
|
+
"null"
|
|
2803
|
+
],
|
|
2804
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
2805
|
+
},
|
|
2806
|
+
"image_generated": {
|
|
2807
|
+
"type": [
|
|
2808
|
+
"boolean",
|
|
2809
|
+
"null"
|
|
2810
|
+
],
|
|
2811
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
2812
|
+
},
|
|
2458
2813
|
"created_at": {
|
|
2459
2814
|
"type": [
|
|
2460
2815
|
"string",
|
|
@@ -2613,6 +2968,20 @@
|
|
|
2613
2968
|
],
|
|
2614
2969
|
"description": "Indexable public page, when published"
|
|
2615
2970
|
},
|
|
2971
|
+
"source_recipe_id": {
|
|
2972
|
+
"type": [
|
|
2973
|
+
"string",
|
|
2974
|
+
"null"
|
|
2975
|
+
],
|
|
2976
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
2977
|
+
},
|
|
2978
|
+
"image_generated": {
|
|
2979
|
+
"type": [
|
|
2980
|
+
"boolean",
|
|
2981
|
+
"null"
|
|
2982
|
+
],
|
|
2983
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
2984
|
+
},
|
|
2616
2985
|
"created_at": {
|
|
2617
2986
|
"type": [
|
|
2618
2987
|
"string",
|
|
@@ -2823,6 +3192,20 @@
|
|
|
2823
3192
|
],
|
|
2824
3193
|
"description": "Indexable public page, when published"
|
|
2825
3194
|
},
|
|
3195
|
+
"source_recipe_id": {
|
|
3196
|
+
"type": [
|
|
3197
|
+
"string",
|
|
3198
|
+
"null"
|
|
3199
|
+
],
|
|
3200
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
3201
|
+
},
|
|
3202
|
+
"image_generated": {
|
|
3203
|
+
"type": [
|
|
3204
|
+
"boolean",
|
|
3205
|
+
"null"
|
|
3206
|
+
],
|
|
3207
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
3208
|
+
},
|
|
2826
3209
|
"created_at": {
|
|
2827
3210
|
"type": [
|
|
2828
3211
|
"string",
|
|
@@ -3148,6 +3531,20 @@
|
|
|
3148
3531
|
],
|
|
3149
3532
|
"description": "Indexable public page, when published"
|
|
3150
3533
|
},
|
|
3534
|
+
"source_recipe_id": {
|
|
3535
|
+
"type": [
|
|
3536
|
+
"string",
|
|
3537
|
+
"null"
|
|
3538
|
+
],
|
|
3539
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
3540
|
+
},
|
|
3541
|
+
"image_generated": {
|
|
3542
|
+
"type": [
|
|
3543
|
+
"boolean",
|
|
3544
|
+
"null"
|
|
3545
|
+
],
|
|
3546
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
3547
|
+
},
|
|
3151
3548
|
"created_at": {
|
|
3152
3549
|
"type": [
|
|
3153
3550
|
"string",
|
|
@@ -3412,6 +3809,20 @@
|
|
|
3412
3809
|
],
|
|
3413
3810
|
"description": "Indexable public page, when published"
|
|
3414
3811
|
},
|
|
3812
|
+
"source_recipe_id": {
|
|
3813
|
+
"type": [
|
|
3814
|
+
"string",
|
|
3815
|
+
"null"
|
|
3816
|
+
],
|
|
3817
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
3818
|
+
},
|
|
3819
|
+
"image_generated": {
|
|
3820
|
+
"type": [
|
|
3821
|
+
"boolean",
|
|
3822
|
+
"null"
|
|
3823
|
+
],
|
|
3824
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
3825
|
+
},
|
|
3415
3826
|
"created_at": {
|
|
3416
3827
|
"type": [
|
|
3417
3828
|
"string",
|
|
@@ -3922,6 +4333,20 @@
|
|
|
3922
4333
|
],
|
|
3923
4334
|
"description": "Indexable public page, when published"
|
|
3924
4335
|
},
|
|
4336
|
+
"source_recipe_id": {
|
|
4337
|
+
"type": [
|
|
4338
|
+
"string",
|
|
4339
|
+
"null"
|
|
4340
|
+
],
|
|
4341
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
4342
|
+
},
|
|
4343
|
+
"image_generated": {
|
|
4344
|
+
"type": [
|
|
4345
|
+
"boolean",
|
|
4346
|
+
"null"
|
|
4347
|
+
],
|
|
4348
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
4349
|
+
},
|
|
3925
4350
|
"created_at": {
|
|
3926
4351
|
"type": [
|
|
3927
4352
|
"string",
|
|
@@ -4293,6 +4718,20 @@
|
|
|
4293
4718
|
],
|
|
4294
4719
|
"description": "Indexable public page, when published"
|
|
4295
4720
|
},
|
|
4721
|
+
"source_recipe_id": {
|
|
4722
|
+
"type": [
|
|
4723
|
+
"string",
|
|
4724
|
+
"null"
|
|
4725
|
+
],
|
|
4726
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
4727
|
+
},
|
|
4728
|
+
"image_generated": {
|
|
4729
|
+
"type": [
|
|
4730
|
+
"boolean",
|
|
4731
|
+
"null"
|
|
4732
|
+
],
|
|
4733
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
4734
|
+
},
|
|
4296
4735
|
"created_at": {
|
|
4297
4736
|
"type": [
|
|
4298
4737
|
"string",
|
|
@@ -4541,6 +4980,55 @@
|
|
|
4541
4980
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
4542
4981
|
}
|
|
4543
4982
|
},
|
|
4983
|
+
{
|
|
4984
|
+
"name": "send_feedback",
|
|
4985
|
+
"title": "Send feedback to Agent Chef",
|
|
4986
|
+
"description": "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.",
|
|
4987
|
+
"inputSchema": {
|
|
4988
|
+
"type": "object",
|
|
4989
|
+
"properties": {
|
|
4990
|
+
"message": {
|
|
4991
|
+
"type": "string",
|
|
4992
|
+
"minLength": 3,
|
|
4993
|
+
"maxLength": 2000
|
|
4994
|
+
},
|
|
4995
|
+
"contact": {
|
|
4996
|
+
"type": "string",
|
|
4997
|
+
"description": "How to reach the owner for a reply, if they want one"
|
|
4998
|
+
}
|
|
4999
|
+
},
|
|
5000
|
+
"required": [
|
|
5001
|
+
"message"
|
|
5002
|
+
],
|
|
5003
|
+
"additionalProperties": false,
|
|
5004
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
5005
|
+
},
|
|
5006
|
+
"annotations": {
|
|
5007
|
+
"readOnlyHint": false,
|
|
5008
|
+
"destructiveHint": false,
|
|
5009
|
+
"openWorldHint": false
|
|
5010
|
+
},
|
|
5011
|
+
"execution": {
|
|
5012
|
+
"taskSupport": "forbidden"
|
|
5013
|
+
},
|
|
5014
|
+
"outputSchema": {
|
|
5015
|
+
"type": "object",
|
|
5016
|
+
"properties": {
|
|
5017
|
+
"ok": {
|
|
5018
|
+
"type": "boolean"
|
|
5019
|
+
},
|
|
5020
|
+
"message": {
|
|
5021
|
+
"type": "string"
|
|
5022
|
+
}
|
|
5023
|
+
},
|
|
5024
|
+
"required": [
|
|
5025
|
+
"ok",
|
|
5026
|
+
"message"
|
|
5027
|
+
],
|
|
5028
|
+
"additionalProperties": true,
|
|
5029
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
5030
|
+
}
|
|
5031
|
+
},
|
|
4544
5032
|
{
|
|
4545
5033
|
"name": "message_group",
|
|
4546
5034
|
"title": "Message the household",
|
|
@@ -5112,6 +5600,20 @@
|
|
|
5112
5600
|
],
|
|
5113
5601
|
"description": "Indexable public page, when published"
|
|
5114
5602
|
},
|
|
5603
|
+
"source_recipe_id": {
|
|
5604
|
+
"type": [
|
|
5605
|
+
"string",
|
|
5606
|
+
"null"
|
|
5607
|
+
],
|
|
5608
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
5609
|
+
},
|
|
5610
|
+
"image_generated": {
|
|
5611
|
+
"type": [
|
|
5612
|
+
"boolean",
|
|
5613
|
+
"null"
|
|
5614
|
+
],
|
|
5615
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
5616
|
+
},
|
|
5115
5617
|
"created_at": {
|
|
5116
5618
|
"type": [
|
|
5117
5619
|
"string",
|
|
@@ -5478,6 +5980,20 @@
|
|
|
5478
5980
|
],
|
|
5479
5981
|
"description": "Indexable public page, when published"
|
|
5480
5982
|
},
|
|
5983
|
+
"source_recipe_id": {
|
|
5984
|
+
"type": [
|
|
5985
|
+
"string",
|
|
5986
|
+
"null"
|
|
5987
|
+
],
|
|
5988
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
5989
|
+
},
|
|
5990
|
+
"image_generated": {
|
|
5991
|
+
"type": [
|
|
5992
|
+
"boolean",
|
|
5993
|
+
"null"
|
|
5994
|
+
],
|
|
5995
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
5996
|
+
},
|
|
5481
5997
|
"created_at": {
|
|
5482
5998
|
"type": [
|
|
5483
5999
|
"string",
|
|
@@ -5659,7 +6175,7 @@
|
|
|
5659
6175
|
{
|
|
5660
6176
|
"name": "rate_recipe",
|
|
5661
6177
|
"title": "Rate a cooked recipe",
|
|
5662
|
-
"description": "Record post-cook feedback (1-5 + comment) for
|
|
6178
|
+
"description": "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.",
|
|
5663
6179
|
"inputSchema": {
|
|
5664
6180
|
"type": "object",
|
|
5665
6181
|
"properties": {
|
|
@@ -5804,6 +6320,20 @@
|
|
|
5804
6320
|
],
|
|
5805
6321
|
"description": "Indexable public page, when published"
|
|
5806
6322
|
},
|
|
6323
|
+
"source_recipe_id": {
|
|
6324
|
+
"type": [
|
|
6325
|
+
"string",
|
|
6326
|
+
"null"
|
|
6327
|
+
],
|
|
6328
|
+
"description": "Set when this is the household's copy of a Community recipe"
|
|
6329
|
+
},
|
|
6330
|
+
"image_generated": {
|
|
6331
|
+
"type": [
|
|
6332
|
+
"boolean",
|
|
6333
|
+
"null"
|
|
6334
|
+
],
|
|
6335
|
+
"description": "Photo was generated by Agent Chef, so it is safe to show publicly"
|
|
6336
|
+
},
|
|
5807
6337
|
"created_at": {
|
|
5808
6338
|
"type": [
|
|
5809
6339
|
"string",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-chef-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "Family meal planning run by your own AI agent: weekly dinners, household votes, grocery list minus the pantry. Stdio MCP server for the hosted Agent Chef service (https://agentchef.net/mcp).",
|
|
5
5
|
"homepage": "https://agentchef.net",
|
|
6
6
|
"repository": {
|