buymeapie-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@buymeapie-mcpshow my shopping lists"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
buymeapie-mcp
MCP server for Buy Me A Pie — manage your shopping lists from Claude.
Runs as a local Docker container over stdio.
Build
docker build -t buymeapie-mcp .Related MCP server: Unofficial AnyList MCP Server
Configure in Claude Code
Add to ~/.claude/settings.json (or project .claude/settings.json):
{
"mcpServers": {
"buymeapie": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "BUYMEAPIE_USERNAME",
"-e", "BUYMEAPIE_PIN",
"buymeapie-mcp"
],
"env": {
"BUYMEAPIE_USERNAME": "your@email.com",
"BUYMEAPIE_PIN": "yourpin"
}
}
}
}Available tools
Tool | Description |
| List all your shopping lists |
| Get all items in a list |
| Create a new shopping list |
| Delete a shopping list |
| Rename a shopping list |
| Add an item (with optional amount) to a list |
| Mark an item as purchased |
| Change the amount on an item |
| Remove an item from a list |
Environment variables
Variable | Required | Description |
| Yes | Your Buy Me A Pie account email |
| Yes | Your Buy Me A Pie PIN |
Available Tools
9 toolsadd_itemA
Add an item to a shopping list.
Args: list_id: The numeric ID of the shopping list. name: Name of the item to add. amount: Optional amount or quantity (e.g. "2", "500g").
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| amount | No | ||
| list_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the action ('Add') and parameter roles. It does not reveal whether adding an item is idempotent, whether duplicate names are handled, or any side effects (e.g., if the list must exist). This is insufficient for safe tool invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three lines for params, one line for purpose) and well-structured with an explicit Args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 3 params, the description is adequate but incomplete. It lacks information about return values, error conditions, or required state (e.g., list must exist). For a simple tool, minimum viable but could be improved with a note on behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description adds semantic clarity: it explains list_id as 'numeric ID', name as 'Name of the item', and amount as 'Optional amount or quantity'. This helps the agent understand parameter meaning beyond type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add an item to a shopping list.' It uses a specific verb ('Add') and resource ('item to a shopping list'), and it is distinct from sibling tools like create_list (creates list) and delete_item (deletes item).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, constraints, or cases where other tools (e.g., update_item_amount) might be more appropriate. The user must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_listC
Create a new shopping list.
Args: name: Name for the new list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action (create) and parameter, but does not disclose side effects, idempotency, permissions, or whether the list is created immediately or requires confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with two lines, no wasted words. However, it could be slightly more structured (e.g., dividing into description and args sections more clearly).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no output schema, no annotations), the description is minimally sufficient. It covers the main purpose and parameter, but lacks any information about return values or confirmation of success.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds a brief explanation for the 'name' parameter ('Name for the new list.'). This provides basic semantics beyond the schema, though it is minimal and does not elaborate on constraints or formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it creates a new shopping list and specifies the name parameter. It is distinguishable from sibling tools like add_item or delete_list, but could more explicitly differentiate from other list creation tools if any existed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, context, or when not to use it. Sibling tools exist but no recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemA
Delete an item from a shopping list.
Args: list_id: The numeric ID of the shopping list. item_id: The numeric ID of the item.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond deletion, such as whether deletion is permanent, if associated data is removed, or what happens when the item doesn't exist. This is insufficient for understanding side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one line for purpose and a bullet list of arguments. It is front-loaded with the action and contains no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the parameter explanation is good and an output schema exists, the description lacks disclosure of important behaviors like idempotency, errors for missing items, or whether deletion cascades. For a simple delete tool, it is minimally adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining both parameters: 'list_id: The numeric ID of the shopping list' and 'item_id: The numeric ID of the item.' This adds clear meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete an item from a shopping list,' specifying the verb (delete), resource (item), and context (shopping list). It distinguishes from siblings like delete_list (which deletes a list) and mark_item_purchased (which marks purchased but doesn't delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like delete_list or mark_item_purchased. It only describes the action without contextual usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_listA
Delete a shopping list.
Args: list_id: The numeric ID of the list to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'Delete' without disclosing side effects, irreversibility, or authorization requirements. Adds minimal behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence for purpose plus a one-line parameter description. No wasted words, front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple delete operation with one parameter and an output schema. Lacks information on error conditions or consequences like cascade deletion of items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explicitly defines the only parameter list_id as 'The numeric ID of the list to delete', adding clarity beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Delete a shopping list' with a clear verb and resource. Distinguishes from siblings like delete_item and create_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description, but no explicit guidance on when to use or when not to use. No mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_list_itemsB
Return all items in the given shopping list.
Args: list_id: The numeric ID of the shopping list.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description only says 'return all items' with no disclosure of behaviors like pagination, error handling, or list existence requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, efficient description with separate Args section. Lacks front-loading of key info but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simplicity and existing output schema, description covers basic purpose and parameter but misses details like ordering or limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds 'numeric ID of the shopping list' to the list_id parameter, clarifying its meaning beyond the schema type. For 0% schema coverage, this is adequate but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool returns all items in a given shopping list. Distinguishes from siblings like add_item and delete_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when needing to retrieve all items from a list, but no explicit when-to-use or when-not-to-use compared to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shopping_listsA
Return all shopping lists with their id, name and item counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the output fields but does not mention any behavioral traits such as authentication requirements, sorting, or whether it returns all lists globally or per user. Lacks some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that is front-loaded with the main action and resource. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description is largely complete. It could mention authentication or scope, but the core information (what is returned) is present. Sufficient for a simple listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in the input schema. Description adds value by specifying the output fields (id, name, item counts), compensating for the lack of params. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'all shopping lists', listing the exact fields returned (id, name, item counts). It distinguishes itself from sibling tools like create_list, delete_list, and get_list_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Usage is implied as a simple retrieval, but no mention of when to choose list_shopping_lists over get_list_items or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_item_purchasedB
Mark an item in a shopping list as purchased.
Args: list_id: The numeric ID of the shopping list. item_id: The numeric ID of the item.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only states it marks as purchased, but does not mention error handling (e.g., if item already purchased, if list/item not found), side effects (e.g., irreversible), or required permissions. The mutation nature is clear, but details are lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences plus a clear Args list. The purpose is front-loaded in the first sentence. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (mark item as purchased), the description is mostly adequate but lacks information about return values or success/error responses. Since an output schema exists, the agent could infer the return format, but the description does not mention what the tool returns. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists the parameters with brief definitions ('The numeric ID of...'), which adds slightly more than the schema's titles. Since schema coverage is 0%, the description does provide some semantic context, but it is minimal and essentially restates the schema for simple integer IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Mark') and resource ('item in a shopping list') with a clear outcome ('as purchased'). This clearly distinguishes it from sibling tools like add_item, delete_item, update_item_amount, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that items must exist or that this is for toggling purchase status rather than updating other fields. The distinction from update_item_amount is implicit but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_listA
Rename an existing shopping list.
Args: list_id: The numeric ID of the list. name: New name for the list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| list_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the action without disclosing side effects, permissions, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is one sentence plus arg list, no fluff, front-loaded with action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and parameters adequately for a simple rename, but lacks return value or error information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are explained in the description (list_id as numeric ID, name as new name), adding value beyond the schema which lacks descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Rename' and resource 'existing shopping list', distinguishing it from sibling tools like create_list or delete_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use when renaming a list, but lacks explicit when-to-use, when-not-to-use, or alternative tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_item_amountB
Update the amount of an item in a shopping list.
Args: list_id: The numeric ID of the shopping list. item_id: The numeric ID of the item. amount: New amount string (e.g. "3", "1kg").
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| item_id | Yes | ||
| list_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the action. Does not disclose whether update is destructive, permissions needed, or behavior for invalid items. Lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one sentence for purpose and a parameter docstring. No unnecessary text, though could be slightly more informative. Efficient for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with 3 required params, no output schema, no annotations. Description covers param semantics but lacks side effects, error handling, or return value info. Adequate for a basic update but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains each parameter: list_id and item_id as numeric IDs, amount as a string with example. Adds meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update the amount of an item in a shopping list' with a specific verb and resource. It distinguishes itself from sibling tools like 'mark_item_purchased' or 'delete_item'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'add_item' or 'mark_item_purchased'. There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
add_item - First observed
create_list - First observed
delete_item - First observed
delete_list - First observed
get_list_items - First observed
list_shopping_lists - First observed
mark_item_purchased - First observed
rename_list - First observed
update_item_amount
TDQS
Scored across 9 tools
Each tool targets a distinct operation (add item, delete list, mark purchased, etc.) with clear, non-overlapping purposes. No two tools could be confused for the same action.
All tool names consistently follow the verb_noun pattern with lowercase underscores, e.g., 'create_list', 'delete_item', 'list_shopping_lists'. No mixing of styles.
With 9 tools covering both list-level and item-level operations, the count is well-scoped for a shopping list manager—neither too few nor excessive.
The tool set provides full CRUD coverage for lists (create, delete, rename, list) and items (add, delete, mark purchased, update amount, list). No obvious gaps for basic shopping list management.
Maintenance
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for Mealie that exposes its REST API to manage recipes, meal plans, shopping lists, cookbooks, and taxonomy through natural language.75MIT
- FlicenseNot gradedqualityAmaintenanceMCP server that integrates with AnyList for managing shopping lists, recipes, and meal planning via natural language.29-
- FlicenseNot gradedqualityCmaintenanceMCP server for the Bring! shopping list API, enabling management of shopping lists via natural language.-
- FlicenseNot gradedqualityCmaintenanceAn MCP server that enables adding groceries to a Sainsbury's basket from a plain-text shopping list via natural language, using existing browser session for authentication.-