RecipeBee
io.github.praisondani/recipebeepraisondanistreamable-httpv0.4.5Scanned
Discover, preview, and save recipes and meal plans with RecipeBee; private actions require OAuth.
19 tools: 4 can delete or cancel things, 6 change things and 9 only read.
- Reads private data · 0
- Reads text others write · 6
- Can send data out · 0
- 1 finding
Anlyon alternative
10 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
19 tools
Deletes or cancels 4Claude Code: deny
generate_recipe_imageRequest RecipeBee image generation for an existing private recipe.No findings
Why it is in this group
- The name "generate_recipe_image" says "generate": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Request RecipeBee image generation for an existing private recipe. Generation may reserve existing RecipeBee image credits or consume a free-tier image allowance. On protocol 2026-07-28, the server requires an accepted confirmation form bound to this recipe and these image options; image_generation_confirmed is ignored. On older MCP clients, omit image_generation_confirmed until the user explicitly accepts, then set it to true on one retry. This tool never purchases credits or starts checkout; if the existing entitlement is unavailable, report the failure without directing the user to a purchase flow. Do not use for an image already generated or uploaded in this conversation. mode=add retains the current primary image. mode=replace changes which retained image is primary but does not delete the previous image; use it only after the user explicitly requests replacement.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
remove_instruction_imageUse only after the user asks to remove a specific stage or action photo.No findings
Why it is in this group
- The name "remove_instruction_image" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Use only after the user asks to remove a specific stage or action photo. Read the latest recipe first and supply its content revision plus the photo operation ID. Removal is permanent for this photo; it does not change recipe text or require another photo.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
save_recipe_with_imageSave a complete recipe privately and request RecipeBee image generation.No findings
Why it is in this group
- The name "save_recipe_with_image" says "save": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Save a complete recipe privately and request RecipeBee image generation. Image generation may reserve existing RecipeBee image credits or consume a free-tier image allowance. On protocol 2026-07-28, the server requires an accepted confirmation form bound to these exact recipe and image options; image_generation_confirmed is ignored. On older MCP clients, omit image_generation_confirmed until the user explicitly accepts, then set it to true on one retry. No recipe is saved before confirmation. Once confirmed, save privately and queue the moderated image pipeline once; the recipe remains saved if image generation fails or is unavailable. This tool never purchases credits or starts checkout. For an MCP client-generated or uploaded image, use save_recipe followed by attach_recipe_image instead. Do not call preview_recipe or save_recipe first. Include realistic integer prep_time_minutes, cook_time_minutes, and total_time_minutes values in every complete recipe. Estimate them when the user does not specify times; use 0 only when that part genuinely takes no time.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
update_recipe_contentUse only after reading the saved recipe with show_recipe and receiving a direct request to change its ingredients or instructions.No findings
Why it is in this group
- The name "update_recipe_content" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Use only after reading the saved recipe with show_recipe and receiving a direct request to change its ingredients or instructions. Send the full content document and its current revision. Preserve existing section and item IDs for unchanged content; omitted sections or actions are deleted. New sections and actions can omit IDs. This replaces grouped text atomically and advances the revision. Photos remain optional and are not changed by this tool. On a revision conflict, read the recipe again and reconcile the requested edit before retrying.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
Changes things 6Claude Code: ask
attach_instruction_imageUse after a structured recipe is saved and the user asks to attach its photos.Reads text others writeNo findings
Why it is in this group
- The name "attach_instruction_image" says "attach": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Use after a structured recipe is saved and the user asks to attach its photos. Use the returned canonical stage/action ID and latest content revision. Supply a transferable host file descriptor or accessible HTTPS image URL, only with established reuse permission. Do not scrape private chats or claim access to search thumbnails. This saves no new recipe and uses no image-generation credits. Poll get_instruction_image for completion. If transfer is unavailable, offer RecipeBee upload. A failed photo never requires resaving the recipe.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
attach_recipe_imageUse when the user wants to attach an image generated or uploaded in the current MCP client conversation to an existing private RecipeBee recipe.Reads text others writeNo findings
Why it is in this group
- The name "attach_recipe_image" says "attach": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Use when the user wants to attach an image generated or uploaded in the current MCP client conversation to an existing private RecipeBee recipe. Prefer the Apps SDK file input when MCP client supplies file with download_url and file_id. Use image_url only for a URL selected or uploaded in the RecipeBee widget. If neither file nor image_url is available, return a pending selection and do not claim attachment. The widget picker is a fallback because native generated images may not be available in MCP client Files. Report attachment only after persisted=true and needs_image_selection=false. mode=replace changes which retained image is primary but does not delete the previous image; use it only after the user explicitly requests replacement. Do not use for a new RecipeBee-generated image.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
commit_meal_plan_importUse after prepare_meal_plan_import.No findings
Why it is in this group
- The name "commit_meal_plan_import" says "commit": a word for a change.
Description, as the server wrote it Use after prepare_meal_plan_import. Submit exactly one decision for every recipe. Use use_existing only with a recipe ID returned by preparation and only after the user chooses it; otherwise use create_new. This creates one private meal plan and its entries atomically, then renders the final RecipeBee card. Claim success only when persisted=true. The response may include an optional image batch link; never start image generation from MCP client.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
open_recipebee_kitchenOpen the connected user's private recipe and meal-plan library in the ChatGPT sidebar.1 finding
Why it is in this group
- The name "open_recipebee_kitchen" says "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "open_recipebee_kitchen" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_recipebee_kitchen" says "open": a word for a change.
Description, as the server wrote it Open the connected user's private recipe and meal-plan library in the ChatGPT sidebar. The app reads only the library section the user opens.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
prepare_meal_plan_importUse only after the user explicitly asks to add a completed meal plan to RecipeBee.No findings
Why it is in this group
- The name "prepare_meal_plan_import" says "import": a word for a change.
Description, as the server wrote it Use only after the user explicitly asks to add a completed meal plan to RecipeBee. This stateful, data-only step checks private recipes for exact or possible matches and creates a short-lived import draft without creating recipes or a meal plan or rendering a RecipeBee card. Do not use for chat-only meal planning. Wait for explicit recipe choices when matches are returned.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
save_recipeUse when the user explicitly asks to save a complete recipe privately.No findings
Why it is in this group
- The name "save_recipe" says "save": a word for a change.
Description, as the server wrote it Use when the user explicitly asks to save a complete recipe privately. Include realistic integer prep_time_minutes, cook_time_minutes, and total_time_minutes values in every complete recipe. Estimate them when the user does not specify times; use 0 only when that part genuinely takes no time. Use content sections for recipes with components or cooking stages; omit flat ingredients and steps when content is present. Save exactly once. If the user asks for RecipeBee image generation, disclose that it may reserve existing image credits or consume a free-tier image allowance and wait for explicit acceptance before using save_recipe_with_image. If the user wants to attach an MCP client-generated or uploaded stage/action photo, save the recipe first, then use attach_instruction_image with the returned target ID and latest content revision. Use attach_recipe_image only for a hero/gallery photo. Do not publish or use browser control.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
Only reads 9Show 9 read-only tools
get_image_generation_batchRead the progress of an optional RecipeBee image-generation batch returned by a meal-plan import.No findings
Why it is in this group
- The name "get_image_generation_batch" says "get": a word for reading.
Description, as the server wrote it Read the progress of an optional RecipeBee image-generation batch returned by a meal-plan import. This tool never starts, charges, or cancels image generation; the user must confirm the batch in RecipeBee.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
get_instruction_imageRead one attachment operation returned by attach_instruction_image.No findings
Why it is in this group
- The name "get_instruction_image" says "get": a word for reading.
Description, as the server wrote it Read one attachment operation returned by attach_instruction_image. Never resave the recipe to retry a photo. Use show_recipe after completion to refresh the full recipe view.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_recipe_imageCheck the private AI image status for an existing RecipeBee recipe after image generation was requested.No findings
Why it is in this group
- The name "get_recipe_image" says "get": a word for reading.
Description, as the server wrote it Check the private AI image status for an existing RecipeBee recipe after image generation was requested.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
list_saved_meal_plansBrowse or search the connected user's private RecipeBee meal plans.Reads text others writeNo findings
Why it is in this group
- The name "list_saved_meal_plans" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
Description, as the server wrote it Browse or search the connected user's private RecipeBee meal plans. Use only when the user asks to browse or search meal plans. Returns paginated summaries; use show_meal_plan only for a plan the user selects.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
list_saved_recipesBrowse or search the connected user's private RecipeBee recipe library.Reads text others writeNo findings
Why it is in this group
- The name "list_saved_recipes" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
Description, as the server wrote it Browse or search the connected user's private RecipeBee recipe library. Use only when the user asks to browse or search saved recipes. Returns a small paginated summary; use show_recipe only for a recipe the user selects.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
preview_meal_planUse when the user asks to review a meal plan without adding it to RecipeBee.Reads text others writeNo findings
Why it is in this group
- The name "preview_meal_plan" says "preview": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "review": it reads comments, which other people can write.
Description, as the server wrote it Use when the user asks to review a meal plan without adding it to RecipeBee. This chat-only, data-only tool never writes recipes or meal plans and does not render a RecipeBee card.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
preview_recipeUse when the user asks to preview or review a complete recipe without saving it.Reads text others writeNo findings
Why it is in this group
- The name "preview_recipe" says "preview": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "review": it reads comments, which other people can write.
Description, as the server wrote it Use when the user asks to preview or review a complete recipe without saving it. Include realistic integer prep_time_minutes, cook_time_minutes, and total_time_minutes values in every complete recipe. Estimate them when the user does not specify times; use 0 only when that part genuinely takes no time. For recipes with components or cooking stages, provide content sections and omit flat ingredients and steps. Validate and render the recipe without persistence. Do not call as an intermediate step when the user has already explicitly asked to save.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
show_meal_planRead the selected private meal plan and its scheduled recipes.No findings
Why it is in this group
- The name "show_meal_plan" says "show": a word for reading.
Description, as the server wrote it Read the selected private meal plan and its scheduled recipes. Use only after the user selects or names a plan. This tool is read-only and does not edit the plan.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
show_recipeUse after attach_recipe_image or generate_recipe_image to render the current authoritative private recipe and image status, or when the user explicitly asks to view an existing rec…No findings
Why it is in this group
- The name "show_recipe" says "show": a word for reading.
Description, as the server wrote it Use after attach_recipe_image or generate_recipe_image to render the current authoritative private recipe and image status, or when the user explicitly asks to view an existing recipe. Do not call immediately after save_recipe or save_recipe_with_image because those tools already return the authoritative saved recipe. Call it once after a later image mutation; do not use it repeatedly or as a substitute for saving.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write6
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The server marks "open_recipebee_kitchen" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "open_recipebee_kitchen" says "open": a word for a change.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 0.4.5. Values in angle brackets are yours to fill in.
claude mcp add --transport http recipebee https://recipebee.app/mcpclaude mcp add --transport http recipebee https://recipebee.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__recipebee__preview_meal_plan",
"mcp__recipebee__get_image_generation_batch",
"mcp__recipebee__list_saved_recipes",
"mcp__recipebee__list_saved_meal_plans",
"mcp__recipebee__show_meal_plan",
"mcp__recipebee__preview_recipe",
"mcp__recipebee__get_instruction_image",
"mcp__recipebee__show_recipe",
"mcp__recipebee__get_recipe_image"
],
"ask": [
"mcp__recipebee__prepare_meal_plan_import",
"mcp__recipebee__commit_meal_plan_import",
"mcp__recipebee__open_recipebee_kitchen",
"mcp__recipebee__attach_instruction_image",
"mcp__recipebee__save_recipe",
"mcp__recipebee__attach_recipe_image"
],
"deny": [
"mcp__recipebee__update_recipe_content",
"mcp__recipebee__remove_instruction_image",
"mcp__recipebee__save_recipe_with_image",
"mcp__recipebee__generate_recipe_image"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as recipebee. Review it before you use it.
Capability tags behind 6 rules
- mcp__recipebee__preview_meal_plan untrusted-input
- mcp__recipebee__list_saved_recipes untrusted-input
- mcp__recipebee__list_saved_meal_plans untrusted-input
- mcp__recipebee__preview_recipe untrusted-input
- mcp__recipebee__attach_instruction_image untrusted-input
- mcp__recipebee__attach_recipe_image untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.github.praisondani/recipebee/verify?hash=6dddbe1de99608c7850350d5072571238a0e462708eca46869cd62ccf60d016a" | jq -e '.changed == false'Pinned hash 6dddbe1de996, from Oct 23, 2026, 00:17 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.praisondani/recipebee/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.praisondani/recipebee)Source: MCP Registry · repository. Synced Oct 23, 2026, 00:17 UTC.