Brie — Recipe MCP, Meal Plans & Groceries
by withbrie.app · remote · no sign-in to list tools · v1.1.0 · published by app.withbrie
Save and adapt recipes, plan household dinners for review, and manage shared grocery lists.
8 tools: 1 can delete or cancel things, 3 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http brie https://api.withbrie.app/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Deletes or cancels 1Claude Code: deny
update_recipeUpdate an existing recipe as a named version only after the user reviews the changes and asks to save them.Reads text others writeNo findings
Why it is in this group
- The name "update_recipe" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
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 Update an existing recipe as a named version only after the user reviews the changes and asks to save them. First use get_recipe; copy version_id and version_revision into the expected fields. Submit the complete revised recipe: omitted ingredients and directions are removed. Map existing ingredient_id values to source_ingredient_id; use null for new ingredients. Keep current display_text and preserve qualitative or ranged quantities as null. Retains the recipe ID, image, source, earlier versions, and versions used by planned meals. External services may prepare optional nutrition and search updates. On version_conflict, read and review again before a new operation; never silently rebase or create a duplicate.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 3Claude Code: ask
add_grocery_itemAdd a grocery item to the connected household's private grocery list in Brie.Reads text others writeNo findings
Why it is in this group
- The name "add_grocery_item" says "add": 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 Add a grocery item to the connected household's private grocery list in Brie.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
create_recipeSave a complete new recipe only after the user asks to save it.Reads text others writeNo findings
Why it is in this group
- The name "create_recipe" says "create": 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 Save a complete new recipe only after the user asks to save it. Supply ingredients, servings, times, and ordered directions; keep unknown, qualitative, or ranged quantities null and preserve their wording in raw_text. Never invent source facts or macros. Returns the saved recipe immediately; external services prepare its image and optional estimated nutrition in the background. Use get_recipe to check readiness.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
import_recipeImport a public recipe URL or supplied recipe text when the user asks to save it, preserving its creator and source.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "import_recipe" says "import": 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.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Import a public recipe URL or supplied recipe text when the user asks to save it, preserving its creator and source. Returns a background job; check it with get_import_status. Use create_recipe for a new recipe developed in the conversation.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 4Claude Code: allow
get_grocery_listRead the connected household's grocery list.No findings
Why it is in this group
- The name "get_grocery_list" says "get": a word for reading.
Description, as the server wrote it Read the connected household's grocery list. shop-now covers Upcoming; all-planned includes future planned meals. Returns paginated results; follow next_offset until null to retrieve the complete list.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_import_statusCheck an import job by ID.No findings
Why it is in this group
- The name "get_import_status" says "get": a word for reading.
Description, as the server wrote it Check an import job by ID. Report its status; if it needs more information, direct the user to the import in Brie. Poll this job rather than importing again.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_recipeRead a recipe from the connected household, including ingredients, directions, and source.No findings
Why it is in this group
- The name "get_recipe" says "get": a word for reading.
Description, as the server wrote it Read a recipe from the connected household, including ingredients, directions, and source. Supply version_id for a specific saved version or omit it for the current recipe. Display display_text as the current ingredient wording; raw_text is original source wording. Keep version_id, version_revision, and ingredient_id values for update_recipe.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_recipesSearch the connected household's saved recipes.No findings
Why it is in this group
- The name "search_recipes" says "search": a word for reading.
Description, as the server wrote it Search the connected household's saved recipes. Returns matches with sources and saved version IDs. Use get_recipe for ingredients and directions.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
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.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write4
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- 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.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Oct 22, 2026, 14:24 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 404
- tools/list served without credentials
- no
- Tools that change things, listed without credentials
- 0
- Protocol version
- none
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- none
- RFC 9728 protected resource metadata
- none
- Authorization servers
- none
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
The probe stopped: initialize answered HTTP 404.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http brie https://api.withbrie.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__brie__search_recipes",
"mcp__brie__get_recipe",
"mcp__brie__get_import_status",
"mcp__brie__get_grocery_list"
],
"ask": [
"mcp__brie__import_recipe",
"mcp__brie__create_recipe",
"mcp__brie__add_grocery_item"
],
"deny": [
"mcp__brie__update_recipe"
]
}
}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 brie. Review it before you use it.
Capability tags behind 4 rules
- mcp__brie__import_recipe untrusted-input, outbound
- mcp__brie__create_recipe untrusted-input
- mcp__brie__update_recipe untrusted-input
- mcp__brie__add_grocery_item untrusted-input