Skip to content

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.

Deletes · 1Changes · 3

8 tools: 1 can delete or cancel things, 3 change things and 4 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run 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.

.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