CookUnity MCP
The CookUnity MCP server enables comprehensive management of a CookUnity meal delivery account — from browsing menus to placing orders — directly through an AI assistant.
Menu & Discovery
Browse the menu: Explore available meals for a delivery date with filters for category, diet, price, and rating
Search meals: Find meals by keyword across name, description, cuisine, chef, ingredients, and diet tags
Get meal details: View full nutritional info, allergens, ingredients, chef info, and diet tags for a specific meal
Cart & Orders
View/manage cart: See, add, remove, or clear cart items for a specific delivery date
Confirm order: Lock in cart selections as a confirmed order before the cutoff deadline
Price breakdown: Get an estimated total including subtotal, taxes, delivery fee, discounts, credits, and promo savings
Deliveries & Scheduling
Next delivery: Quickly see your nearest upcoming delivery and its meals
List deliveries: View all upcoming delivery weeks with status, cutoff deadlines, and skip state
Skip/unskip a delivery: Skip or restore a specific upcoming delivery week
Account & History
User info: View your profile, subscription plan, delivery schedule, addresses, and available credits
Order history: Browse past orders with pagination and full invoice details (meal names, prices, reviews, billing breakdowns)
cookunity-mcp-server
⚠️ Unofficial. This project is not affiliated with, endorsed by, or associated with CookUnity in any way. It was built by reverse-engineering their internal APIs for personal use.
MCP server for CookUnity meal delivery service. Browse menus, manage carts, confirm orders, skip/unskip deliveries, and view order history.
Installation
npm install -g cookunity-mcp-serverOr run directly with npx:
npx cookunity-mcp-serverRelated MCP server: DoorDash MCP Server
Tools (15)
Menu & Discovery
Tool | Description |
| Browse meals with filters (category, diet, price, rating) & pagination |
| Search by keyword across name, description, cuisine, chef, ingredients, diet tags |
| Full nutritional info, allergens, and ingredients for a specific meal |
Cart & Orders
Tool | Description |
| View cart contents for a specific delivery date |
| Add meal to cart by inventory_id and date |
| Remove meal from cart by inventory_id |
| Clear all cart items for a delivery date |
| Confirm/place order — locks in cart items for delivery |
Deliveries & Scheduling
Tool | Description |
| Get nearest delivery with meals (order, cart, or auto-picks) — use for "what's my next delivery?" |
| All upcoming weeks with status, meals, cutoffs, skip state |
| Skip a delivery week |
| Unskip a previously skipped week |
Account & Pricing
Tool | Description |
| User profile, plan, delivery days, addresses, credits |
| Order history with pagination |
| Price estimate with taxes, fees, credits, and promo discounts |
Typical Workflow
1. cookunity_list_deliveries → Find next editable delivery date + cutoff
2. cookunity_get_menu → Browse available meals for that date
3. cookunity_search_meals → Search for specific cuisines/proteins
4. cookunity_get_meal_details → Check nutrition/allergens
5. cookunity_add_to_cart → Add meals (repeat until plan is full)
6. cookunity_get_price_breakdown→ Verify total before confirming
7. cookunity_confirm_order → Lock in the order ✅Important: Without confirming, cart items are NOT locked in. CookUnity auto-fills with its own recommendations at the cutoff deadline.
Setup
Environment Variables
Variable | Required | Description |
| Yes | CookUnity account email |
| Yes | CookUnity account password |
| No |
|
| No | HTTP port when using |
Configuration
Claude Desktop / Cursor / OpenClaw (stdio)
{
"mcpServers": {
"cookunity": {
"command": "npx",
"args": ["cookunity-mcp-server"],
"env": {
"COOKUNITY_EMAIL": "your@email.com",
"COOKUNITY_PASSWORD": "your-password"
}
}
}
}Streamable HTTP (remote)
COOKUNITY_EMAIL=your@email.com COOKUNITY_PASSWORD=your-password TRANSPORT=http PORT=3000 npx cookunity-mcp-serverFrom Source (development)
git clone https://github.com/ggonzalezaleman/cookunity-mcp.git
cd cookunity-mcp
npm install
npm run build
node dist/index.jsAPI Details
This server reverse-engineers CookUnity's internal GraphQL APIs:
Menu Service (
https://menu-service.cookunity.com/graphql) — meal browsing and searchSubscription Service (
https://subscription-back.cookunity.com/graphql) — cart, orders, deliveries, user info
Authentication uses Auth0 with the cookunity realm. Tokens are cached and refreshed automatically.
Known Limitations
GraphQL introspection is disabled — schemas were reverse-engineered from frontend JS bundles and error probing
createOrderrequires the exact number of meals matching the user's plan (e.g., 6 for a 6-meal plan)Delivery window is currently hardcoded to 11:00–20:00 (matches most US plans)
License
MIT
Available Tools
16 toolscookunity_add_to_cartAdd Meal to CookUnity CartA
Add a meal to the cart for a specific delivery date.
Args:
date (string, required): YYYY-MM-DD delivery date
inventory_id (string, required): Inventory ID from menu/search results
quantity (number): Portions to add, default 1 (max 10)
batch_id (number, optional): Batch ID from menu results
Returns: Confirmation with updated quantity
Examples:
Add one meal: { date: "2025-02-24", inventory_id: "ABC123" }
Add 2 portions: { date: "2025-02-24", inventory_id: "ABC123", quantity: 2 }
Error Handling:
Invalid inventory_id: API returns error
Past cutoff: API returns error — check cutoff with cookunity_list_deliveries first
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| inventory_id | Yes | Inventory ID of the meal (from menu/search results) | |
| quantity | No | Number of portions to add | |
| batch_id | No | Batch ID of the meal (optional, from menu results) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover basic hints (readOnly=false, destructive=false, etc.), but the description adds valuable behavioral context: it specifies error conditions (invalid inventory_id, past cutoff), mentions the API response format ('Confirmation with updated quantity'), and references prerequisites ('check cutoff with cookunity_list_deliveries first'). This goes beyond what annotations provide without contradiction.
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 well-structured and front-loaded with the core purpose, followed by organized sections (Args, Returns, Examples, Error Handling). Every sentence adds value, with no wasted words, making it efficient for an agent to parse.
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?
For a mutation tool with no output schema, the description does well by explaining the return value ('Confirmation with updated quantity') and error handling. It references related tools (cookunity_list_deliveries) and data sources. However, it could slightly improve by clarifying idempotency or side-effects more explicitly, given the annotations don't cover everything.
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 100% schema description coverage, the input schema already documents all parameters thoroughly. The description adds minimal extra semantics (e.g., 'default 1 (max 10)' for quantity, which is also in the schema). It provides examples that clarify usage but doesn't significantly enhance parameter understanding beyond the schema.
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 specific action ('Add a meal to the cart') and resource ('for a specific delivery date'), distinguishing it from siblings like cookunity_remove_from_cart (removal) and cookunity_get_cart (viewing). It precisely defines the tool's function without being tautological.
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 explicit guidance on when to use alternatives, stating 'check cutoff with cookunity_list_deliveries first' to avoid errors. It also implies usage context by referencing data sources ('from menu/search results') and error conditions, though it doesn't explicitly name all sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_clear_cartClear CookUnity CartADestructiveIdempotent
Clear all items from the cart for a specific delivery date. This removes ALL meals.
Args:
date (string, required): YYYY-MM-DD delivery date
Returns: Confirmation message
Error Handling:
Past cutoff: API returns error
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide hints (destructive, idempotent, not read-only, open-world), but the description adds valuable context: it clarifies that this action 'removes ALL meals' (reinforcing destructive nature), mentions error handling for 'Past cutoff,' and specifies the return as a 'Confirmation message.' This enhances transparency beyond annotations without contradiction.
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 front-loaded with the core action, followed by structured sections for Args, Returns, and Error Handling. Each sentence earns its place by providing essential information without redundancy, making it highly efficient and well-organized.
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 complexity (destructive action with one parameter) and rich annotations, the description is mostly complete. It covers purpose, parameters, returns, and error handling, but lacks details on prerequisites (e.g., authentication) or output specifics beyond 'Confirmation message,' which could be more detailed since there is no output schema.
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 100%, with the schema fully documenting the 'date' parameter's format and default behavior. The description adds minimal semantics by restating the format and requirement, but does not provide additional meaning beyond the schema. Baseline 3 is appropriate given high schema coverage.
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 specific action ('Clear all items from the cart') and resource ('for a specific delivery date'), distinguishing it from sibling tools like 'cookunity_remove_from_cart' which removes individual items. The phrase 'removes ALL meals' emphasizes the scope, making the purpose unambiguous.
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 implies usage context by specifying 'for a specific delivery date' and mentioning error handling for 'Past cutoff,' but it does not explicitly state when to use this tool versus alternatives like 'cookunity_remove_from_cart' or 'cookunity_skip_delivery.' It provides clear context but lacks explicit sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_confirm_orderConfirm CookUnity OrderA
Confirm/place the order for a delivery date. Takes the current cart contents and submits them as an order.
Prerequisites:
Meals must be in the cart (use cookunity_add_to_cart first)
Must be before the cutoff (check with cookunity_list_deliveries)
Cart should have enough meals to meet the plan minimum (typically 6)
Args:
date (string, required): YYYY-MM-DD delivery date
comment (string, optional): Delivery instructions
tip (number, optional): Tip amount in dollars
Returns: Order confirmation with ID and payment status, or error with out-of-stock meal IDs
Important: Without confirming, cart items are NOT locked in. CookUnity will auto-fill with recommendations at cutoff instead.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| comment | No | Delivery instructions or comment | |
| tip | No | Tip amount in dollars |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive, non-idempotent operation with open-world data. The description adds valuable behavioral context beyond annotations: it explains that cart items are not locked in without confirmation, CookUnity auto-fills at cutoff, and returns order confirmation with ID/payment status or error with out-of-stock meal IDs. This provides practical implementation details not covered by annotations.
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 well-structured with clear sections (overview, prerequisites, args, returns, important note). Every sentence adds value: the first states the core purpose, prerequisites list essential conditions, args/returns provide outcome details, and the final note explains critical behavioral consequences. No wasted 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?
For an order confirmation tool with no output schema, the description provides comprehensive context: it explains prerequisites, parameters, return values (confirmation with ID/payment status or error details), and important behavioral notes (auto-fill at cutoff). This adequately compensates for the lack of structured output documentation.
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 100%, providing complete parameter documentation. The description adds minimal semantic value beyond the schema: it mentions 'date' must be a delivery date (implied by context) and restates parameter purposes briefly. Since the schema already fully describes parameters, the baseline score of 3 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 specific action ('confirm/place the order') and resource ('current cart contents'), distinguishing it from siblings like cookunity_add_to_cart (adds items) or cookunity_list_orders (lists existing orders). It explicitly mentions submitting cart contents as an order, which is distinct from cart management tools.
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 explicit prerequisites (meals in cart, before cutoff, meeting plan minimum) and references alternative tools (cookunity_add_to_cart, cookunity_list_deliveries). It also states when NOT to use it ('Without confirming, cart items are NOT locked in'), offering clear guidance on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_get_cartGet CookUnity CartARead-onlyIdempotent
Get cart contents for a specific delivery date. Always call fresh — NEVER use cached results.
Args:
date (string, optional): YYYY-MM-DD. Defaults to next Monday.
response_format ('markdown'|'json')
Returns (JSON): { date, can_edit, is_skipped, cutoff, items[{ name, inventory_id, quantity, price, chef }], total_items, total_price }
Note: If the order is already confirmed, cart may be empty — use cookunity_list_deliveries or cookunity_next_delivery instead to see confirmed order items.
Error Handling:
Returns "Date not found" if date is not in upcoming deliveries
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable context beyond annotations: the 'Always call fresh' warning about caching, the note about empty carts for confirmed orders, and the 'Date not found' error condition. No contradiction with annotations exists.
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 well-structured with clear sections (Args, Returns, Note, Error Handling) and front-loaded key information. While slightly verbose due to repeating schema details, every sentence adds value (e.g., caching warning, error handling). No wasted content.
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 moderate complexity (2 parameters, read-only operation), the description provides complete context: purpose, usage guidelines, parameter details (via schema), behavioral notes (caching, confirmed orders), error handling, and return structure. With annotations covering safety and no output schema needed, this is fully adequate.
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 100%, with both parameters (date and response_format) fully documented in the schema. The description's Args section repeats this information without adding significant semantic value beyond what the schema provides, such as explaining why the date defaults to next Monday or the practical difference between markdown and json formats.
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 specific action ('Get cart contents') and resource ('for a specific delivery date'), distinguishing it from siblings like cookunity_list_deliveries (which shows confirmed orders) and cookunity_add_to_cart (which modifies the cart). It precisely defines the scope of retrieval.
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?
Explicit guidance is provided on when to use this tool ('Always call fresh — NEVER use cached results') and when not to use it ('If the order is already confirmed, cart may be empty — use cookunity_list_deliveries or cookunity_next_delivery instead'). It clearly names alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_get_meal_detailsGet CookUnity Meal DetailsARead-onlyIdempotent
Get full details for a specific meal including allergens, complete ingredients list, nutrition facts, diet tags, and chef info.
Args:
meal_id (number, optional): Numeric meal ID (e.g. 12272)
inventory_id (string, optional): Inventory ID (e.g. "ii-135055242")
date (string, optional): YYYY-MM-DD menu date. Defaults to next Monday.
response_format ('markdown'|'json'): Output format
At least one of meal_id or inventory_id is required.
Returns (JSON): Full meal object with allergens[], ingredients[], nutritionalFacts (incl. protein, sugar), searchBy tags, chef info Returns (Markdown): Formatted card with sections for Description, Nutrition, Ingredients, Allergens, Chef, Tags
Examples:
By ID: { meal_id: 12272 }
By inventory: { inventory_id: "ii-135055242" }
Specific week: { meal_id: 12272, date: "2026-02-23" }
Error Handling:
Meal not found: suggests checking the date or using cookunity_search_meals
| Name | Required | Description | Default |
|---|---|---|---|
| meal_id | No | Numeric meal ID (e.g. 12272). Provide meal_id or inventory_id. | |
| inventory_id | No | Inventory ID string (e.g. 'ii-135055242'). Provide meal_id or inventory_id. | |
| date | No | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, covering the core behavioral traits. The description adds valuable context beyond annotations: it explains the default date behavior ('Defaults to next Monday'), describes the different return formats (JSON vs Markdown), and provides error handling guidance. It doesn't contradict annotations and adds useful operational 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?
The description is well-structured with clear sections (description, args, returns, examples, error handling) and front-loads the core purpose. While comprehensive, some information (like the detailed parameter descriptions) could be considered redundant given the 100% schema coverage. However, the structure helps readability and all content serves a purpose.
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 complexity (multiple parameters, different output formats) and the absence of an output schema, the description provides excellent completeness: it explains both return formats in detail, provides parameter requirements and defaults, includes practical examples, and offers error handling guidance. The annotations cover safety and idempotency, making this description complete for agent use.
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 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it restates the parameter requirements ('At least one of meal_id or inventory_id is required') and provides examples, but doesn't add significant semantic context that isn't already in the schema descriptions. This meets the baseline for high schema coverage.
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 specific action ('Get full details') and resource ('for a specific meal'), distinguishing it from sibling tools like cookunity_search_meals (which searches) or cookunity_get_menu (which lists multiple meals). It enumerates the detailed information returned (allergens, ingredients, nutrition facts, diet tags, chef info), making the purpose highly specific and differentiated.
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 explicit guidance on when to use this tool vs alternatives: it specifies that at least one of meal_id or inventory_id is required, mentions the default date behavior, and in the Error Handling section explicitly suggests using cookunity_search_meals when a meal is not found. This gives clear context for when to use this tool and when to consider alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_get_price_breakdownGet CookUnity Price BreakdownARead-onlyIdempotent
Get a full price breakdown for a delivery including subtotal, taxes, delivery fee, discounts, and total.
Args:
date (string, optional): YYYY-MM-DD delivery date. Defaults to next Monday.
meals (array, optional): Meals to price, each with entityId, quantity, inventoryId. If omitted, prices the current cart contents.
response_format ('markdown'|'json'): Output format
Returns (JSON): { date, subtotal, taxes, delivery_fee, express_fee, promo_discount, total, total_after_credits, available_credits, qty_plan_meals, qty_items, total_extra_meals }
Returns (Markdown): Formatted order summary with line items and total.
Examples:
Current cart: { date: "2026-02-23" }
Specific meals: { date: "2026-02-23", meals: [{ entityId: 12272, quantity: 1, inventoryId: "ii-135055242" }] }
Error Handling:
If no meals provided and cart is empty, returns error suggesting to add meals first
Invalid meal IDs return API error
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| meals | No | Meals to price. If omitted, uses current cart contents for the date. | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds valuable context beyond this: it explains error handling (empty cart returns error, invalid IDs cause API errors), describes the two output formats, and provides practical examples. While it doesn't mention rate limits or authentication needs, it adds meaningful behavioral information.
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 well-structured with clear sections (Args, Returns, Examples, Error Handling) and every sentence earns its place. It's front-loaded with the core purpose, then provides necessary details without redundancy. The examples are practical and illustrative without being verbose.
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 moderate complexity, rich annotations, and 100% schema coverage, the description provides complete context. It covers purpose, parameters, outputs, examples, and error handling. While there's no output schema, the description thoroughly documents both JSON and Markdown return formats with specific field listings.
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 100%, so the schema already fully documents all three parameters. The description adds minimal additional semantic context beyond what's in the schema descriptions - it mentions the default date behavior and clarifies that omitting meals uses current cart contents, but these details are already covered in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 'Get' and resource 'full price breakdown for a delivery' with specific components listed (subtotal, taxes, delivery fee, discounts, total). It distinguishes from siblings like cookunity_get_cart (which shows cart contents) and cookunity_confirm_order (which finalizes purchase) by focusing specifically on pricing calculations.
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 clear context about when to use it: to price either specific meals or current cart contents. It mentions the default behavior (next Monday) and error conditions. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings for different pricing scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_get_user_infoGet CookUnity User InfoARead-onlyIdempotent
Get user profile, subscription plan, delivery schedule, addresses, and credits.
Args:
response_format ('markdown'|'json'): Output format
Returns (JSON): { id, name, email, plan_id, store_id, status, deliveryDays[], currentCredit, addresses[] }
Examples:
Get profile: {}
Get as JSON: { response_format: "json" }
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds value by specifying the return structure (JSON with fields like id, name, email, etc.) and output format options, which aren't covered by annotations. However, it doesn't disclose additional behavioral traits like rate limits, authentication needs, or error conditions.
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 well-structured with clear sections: a summary sentence, Args, Returns, and Examples. It's appropriately sized, but the 'Returns' section could be more concise by integrating with the summary. Every sentence adds value, though minor trimming is possible.
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 low complexity (1 parameter, no output schema), rich annotations, and 100% schema coverage, the description is mostly complete. It covers purpose, parameters, and return values adequately. However, it lacks explicit usage guidelines compared to siblings and doesn't mention authentication or error handling, which could be beneficial for an AI agent.
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 100%, with the parameter 'response_format' fully documented in the schema (enum values, default, description). The description adds minimal value beyond the schema by mentioning the parameter in the 'Args' section and examples, but doesn't provide additional semantic context or usage nuances. Baseline 3 is appropriate given high schema coverage.
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 specific verb 'Get' and enumerates the exact resources retrieved: user profile, subscription plan, delivery schedule, addresses, and credits. It distinguishes from sibling tools like 'cookunity_get_cart' or 'cookunity_list_orders' by focusing exclusively on comprehensive user information rather than cart, orders, or meal details.
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 implies usage context by listing the types of user data retrieved, suggesting it's for viewing user account details. However, it doesn't explicitly state when to use this tool versus alternatives like 'cookunity_get_cart' or 'cookunity_list_orders', nor does it provide exclusions or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_list_deliveriesList Upcoming CookUnity DeliveriesARead-onlyIdempotent
List upcoming delivery weeks with full details: confirmed order items, cart contents, CookUnity auto-picks, skip/pause status, and cutoff deadlines.
IMPORTANT: Always call this tool to get FRESH data before answering any question about delivery status, meals, or orders. NEVER rely on cached or previously returned data — the user may have made changes on the website or app between calls.
Args:
response_format ('markdown'|'json')
Returns (JSON): { deliveries[{ date, status, can_edit, menu_available, cutoff, cutoff_timezone, cart_items[], cart_count, order, recommendation_items[] }] }
Examples:
See upcoming weeks: {}
Check what's in my carts: {}
Error Handling:
Auth errors suggest checking credentials
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it emphasizes the importance of fresh data retrieval (addressing potential caching issues), mentions that users may have made changes between calls, and includes error handling guidance for auth errors. Annotations already cover read-only, open-world, idempotent, and non-destructive traits, so the description appropriately supplements rather than contradicts them.
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 well-structured with clear sections (description, important note, args, returns, examples, error handling) and front-loads the core purpose. It's appropriately sized for the tool's complexity, though the 'IMPORTANT' section is somewhat lengthy. Every sentence adds value, but minor trimming could improve conciseness.
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 moderate complexity, rich annotations (readOnlyHint, openWorldHint, etc.), and detailed return structure documentation in the description, the description is complete. It covers purpose, usage guidelines, behavioral context, parameters, return format, examples, and error handling—providing everything needed for effective tool use despite the lack of a formal output schema.
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 100%, so the schema already fully documents the single parameter (response_format). The description repeats the parameter in the Args section but doesn't add meaningful semantic context beyond what's in the schema. The baseline score of 3 reflects adequate but not enhanced parameter documentation.
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 with specific verbs ('List upcoming delivery weeks') and resources ('deliveries'), and distinguishes it from siblings by specifying it provides 'full details' including confirmed orders, cart contents, auto-picks, skip/pause status, and deadlines. This is more comprehensive than tools like 'cookunity_list_orders' or 'cookunity_get_cart'.
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 explicit usage guidelines: 'Always call this tool to get FRESH data before answering any question about delivery status, meals, or orders. NEVER rely on cached or previously returned data.' It also implicitly distinguishes from alternatives by emphasizing comprehensive data retrieval, though it doesn't explicitly name specific sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_list_ordersList CookUnity OrdersARead-onlyIdempotent
Get order history with delivery dates, paginated.
Args:
limit (number): Orders per page, default 20
offset (number): Pagination offset
response_format ('markdown'|'json')
Returns (JSON): { total, count, offset, has_more, orders[{ id, deliveryDate }] }
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of orders to return | |
| offset | No | Pagination offset | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide comprehensive safety information (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). The description adds valuable behavioral context about pagination and the specific data returned (delivery dates), which goes beyond what annotations provide. No contradictions with annotations.
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 perfectly structured and concise: a clear purpose statement followed by organized Args and Returns sections. Every sentence serves a purpose with zero wasted words, and key information is front-loaded effectively.
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?
For a read-only list tool with comprehensive annotations and no output schema, the description provides good context about pagination, response format options, and return structure. However, it doesn't explain the relationship with the similar 'cookunity_order_history' tool, which creates a minor gap in completeness.
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 100% schema description coverage, the schema already fully documents all three parameters. The description's Args section repeats parameter information without adding significant semantic context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 with specific verb ('Get') and resource ('order history'), including key attributes ('with delivery dates, paginated'). It distinguishes from sibling tools like 'cookunity_order_history' by emphasizing pagination and delivery dates.
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 implies usage context for retrieving paginated order history with delivery dates, but doesn't explicitly state when to use this versus the similar 'cookunity_order_history' sibling tool. It provides clear operational context but lacks explicit alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_next_deliveryGet Next CookUnity DeliveryARead-onlyIdempotent
Get the nearest upcoming delivery with full details — including today's delivery if it hasn't been delivered yet.
This is the recommended tool when the user asks about "my next delivery", "upcoming meals", "what's coming", etc. It returns the closest scheduled (non-skipped) delivery with its confirmed order items, cart items, or CookUnity auto-picks.
IMPORTANT:
"Next delivery" includes TODAY's delivery date. A delivery on today's date is still the "next" one unless it's already marked as completed/delivered.
Always call this tool FRESH for every user question. NEVER use previously cached results — the user may have changed their order, skipped/unskipped, or edited their cart on the website between calls.
Args:
response_format ('markdown'|'json')
Returns: The nearest delivery with date, status, meals (from order, cart, or recommendations), and cutoff info.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable behavioral context beyond annotations: it clarifies that 'next delivery' includes today's delivery unless completed, specifies to always call fresh (never cache results), and explains what data sources are used (confirmed order items, cart items, or auto-picks). No contradiction with annotations.
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 well-structured and front-loaded with the core purpose. Every sentence adds value: purpose statement, usage guidelines, important clarifications, and return details. No wasted words, and key points are emphasized with 'IMPORTANT' formatting.
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 moderate complexity (retrieving dynamic delivery data), rich annotations (readOnly, openWorld, idempotent), and 100% schema coverage, the description is complete. It explains behavioral nuances (fresh calls, inclusion of today's delivery), usage context, and return content, compensating for the lack of an output schema.
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 100%, with the parameter 'response_format' fully documented in the schema. The description mentions the parameter in the 'Returns' section but doesn't add meaningful semantics beyond what the schema already provides (output format options). Baseline 3 is appropriate when schema does the heavy lifting.
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: 'Get the nearest upcoming delivery with full details' and specifies it includes today's delivery if not yet delivered. It distinguishes from sibling tools like cookunity_list_deliveries by focusing on the single next delivery rather than listing all deliveries.
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?
Explicit guidance is provided: 'This is the recommended tool when the user asks about "my next delivery", "upcoming meals", "what's coming", etc.' It also distinguishes from alternatives by specifying it returns the closest scheduled (non-skipped) delivery, unlike cookunity_list_deliveries which might show all deliveries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_order_historyGet CookUnity Order History with MealsARead-onlyIdempotent
Get past order invoices with full meal details, prices, reviews, and billing breakdown for a date range. This is the only way to see what meals were in past deliveries.
IMPORTANT: Always call this tool FRESH when the user asks about past orders or meals. NEVER rely on cached or previously returned data.
Args:
from (string, required): Start date YYYY-MM-DD (inclusive)
to (string, required): End date YYYY-MM-DD (inclusive)
limit (number): Invoices per page, default 10 (max 50)
offset (number): Pagination offset
response_format ('markdown'|'json')
Returns (JSON): { total, invoices[{ id, date, total, subtotal, taxes, deliveryFee, tip, discount, orders[{ delivery_date, items[{ name, chef, price, calories, rating, review }] }] }] }
Examples:
Last month: { from: "2026-01-01", to: "2026-01-31" }
Specific week: { from: "2026-02-03", to: "2026-02-09" }
All of 2025: { from: "2025-01-01", to: "2025-12-31", limit: 50 }
Error Handling:
Auth errors suggest checking credentials
Empty results if no invoices in date range
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Start date (inclusive) for invoice range, e.g. '2025-01-01' | |
| to | Yes | End date (inclusive) for invoice range, e.g. '2025-12-31' | |
| limit | No | Number of invoices to return (max 50) | |
| offset | No | Pagination offset | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable context beyond annotations: it specifies that this is the only way to see past meal details, includes error handling guidance ('Auth errors suggest checking credentials', 'Empty results if no invoices'), and emphasizes fresh data calls. No contradictions with annotations.
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 well-structured with clear sections (purpose, important note, args, returns, examples, error handling) and front-loaded key information. It's appropriately sized but could be slightly more concise by integrating the 'Args' details into the main text or reducing redundancy with the schema. Every sentence adds value, but the formatting as a bulleted list makes it slightly verbose.
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 complexity (5 parameters, no output schema, rich annotations), the description is complete. It covers purpose, usage guidelines, behavioral context (fresh data, error handling), parameter examples, and return structure. With annotations handling safety and idempotency, and the description adding meal details and data freshness, there are no significant gaps for an agent to invoke this tool correctly.
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 100%, so the schema already fully documents all 5 parameters. The description adds minimal value beyond the schema: it restates that 'from' and 'to' are required date ranges and provides examples, but doesn't explain parameter semantics like what 'offset' means in practice or how 'response_format' affects output. Baseline 3 is appropriate given high schema coverage.
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 with specific verbs ('Get past order invoices') and resources ('with full meal details, prices, reviews, and billing breakdown'). It explicitly distinguishes this tool from siblings by stating 'This is the only way to see what meals were in past deliveries,' differentiating it from tools like cookunity_list_orders or cookunity_list_deliveries that might not include meal details.
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 explicit usage guidance with 'Always call this tool FRESH when the user asks about past orders or meals. NEVER rely on cached or previously returned data.' It also implies when to use it (for past orders with meal details) versus alternatives like cookunity_list_orders (which might not include meals) or cookunity_get_meal_details (for current meals).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_remove_from_cartRemove Meal from CookUnity CartADestructive
Remove a meal from the cart for a specific delivery date.
Args:
date (string, required): YYYY-MM-DD delivery date
inventory_id (string, required): Inventory ID of meal to remove
quantity (number): Portions to remove, default 1
Returns: Confirmation with updated quantity
Error Handling:
Meal not in cart: API returns error
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| inventory_id | Yes | Inventory ID of the meal to remove | |
| quantity | No | Number of portions to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a destructive, non-idempotent, non-readonly operation. The description adds valuable context beyond annotations: it specifies the return format ('Confirmation with updated quantity') and error handling ('Meal not in cart: API returns error'), which are not covered by annotations. However, it doesn't mention rate limits, authentication needs, or other behavioral traits.
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 appropriately sized and front-loaded with the core purpose in the first sentence. The 'Args' and 'Returns' sections are structured but slightly verbose; for example, repeating parameter details already in the schema adds minor redundancy. Overall, it's efficient with minimal waste.
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 moderate complexity (destructive mutation with 3 parameters), annotations cover safety aspects, and schema covers parameters fully. The description adds return and error details, but lacks output schema. It's mostly complete, though could benefit from more behavioral context like idempotency implications or side effects.
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 100%, so the schema already fully documents all parameters. The description adds minimal value beyond the schema: it repeats parameter names and basic semantics but doesn't provide additional context like why 'date' must be a Monday or how 'inventory_id' is obtained. With high schema coverage, the baseline score of 3 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 specific action ('Remove a meal from the cart') with the resource ('for a specific delivery date'), distinguishing it from siblings like 'cookunity_clear_cart' (which removes all items) and 'cookunity_add_to_cart' (which adds items). The verb+resource combination is precise and unambiguous.
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 clear context about when to use this tool ('Remove a meal from the cart for a specific delivery date'), but does not explicitly state when NOT to use it or name alternatives. For example, it doesn't contrast with 'cookunity_clear_cart' for removing all items at once. The context is sufficient but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_search_mealsSearch CookUnity MealsARead-onlyIdempotent
Search meals by keyword across name, description, cuisine, chef, ingredients, and diet tags.
Args:
query (string, required): Search keyword (min 1 char)
date (string, optional): YYYY-MM-DD. Defaults to next Monday.
limit (number): Results per page, default 20
offset (number): Pagination offset
response_format ('markdown'|'json'): Output format
Returns (JSON): { query, date, total, count, offset, has_more, meals[] }
Examples:
Find salmon dishes: { query: "salmon" }
Vegan meals: { query: "vegan" }
Chef search: { query: "Mario" }
Error Handling:
Empty query returns validation error
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword to search across meal name, description, cuisine, chef, ingredients, diet tags | |
| date | No | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. | |
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide important behavioral hints (readOnlyHint: true, destructiveHint: false, etc.), but the description adds valuable context beyond these. It specifies the search scope across multiple fields, mentions default behavior for the date parameter ('Defaults to next Monday'), and includes error handling information ('Empty query returns validation error'), which are not covered by annotations. No contradictions with annotations exist.
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 well-structured and front-loaded with the core purpose, followed by organized sections (Args, Returns, Examples, Error Handling). Every sentence serves a clear purpose, with no wasted words, and the examples efficiently illustrate practical applications.
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 moderate complexity (5 parameters, search functionality) and rich annotations, the description is largely complete. It explains the search scope, provides examples, and includes error handling. However, without an output schema, the description could benefit from more detail on the return structure (e.g., what fields are in 'meals[]'), though it does specify the JSON format.
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 100% schema description coverage, the input schema already documents all parameters thoroughly. The description adds minimal value beyond the schema, mainly by reinforcing the query's search scope and providing example usage. It doesn't introduce new parameter semantics or clarify ambiguities not already addressed in the schema 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?
The description clearly states the specific action ('Search meals by keyword') and resource ('meals'), with explicit scope ('across name, description, cuisine, chef, ingredients, and diet tags'). It distinguishes from siblings like 'cookunity_get_menu' (which likely lists without search) and 'cookunity_get_meal_details' (which focuses on specific meals).
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 clear context for when to use this tool (keyword-based searching across multiple fields) and includes examples that illustrate different use cases (finding dishes by ingredient, diet, or chef). However, it doesn't explicitly state when NOT to use it or mention alternatives among the sibling tools, such as when to use 'cookunity_get_menu' instead for browsing without specific search terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_skip_deliverySkip CookUnity DeliveryAIdempotent
Skip a delivery week. IMPORTANT: Always call cookunity_list_deliveries first to get valid delivery dates — do NOT guess or calculate dates manually.
Args:
date (string, required): YYYY-MM-DD delivery date to skip (must match an actual delivery date from cookunity_list_deliveries)
Returns: Confirmation message with skip ID
Error Handling:
Invalid date: returns available delivery dates
Past cutoff: returns error suggesting checking cutoff with list_deliveries
Already skipped: returns API error
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations. While annotations indicate it's not read-only, not destructive, idempotent, and open-world, the description provides practical constraints: the date must match actual delivery dates from list_deliveries, and it describes error handling scenarios (invalid date, past cutoff, already skipped). This gives the agent crucial operational knowledge not captured in annotations.
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 perfectly structured and front-loaded: the core purpose is stated first, followed by critical usage guidance, then parameter semantics, return value, and error handling. Every sentence serves a distinct purpose with zero redundancy. The formatting with clear sections (Args, Returns, Error Handling) enhances readability.
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?
For a single-parameter mutation tool with good annotations but no output schema, the description provides complete context. It covers purpose, prerequisites, parameter semantics, return value, and error scenarios. The agent has everything needed to use this tool correctly, including integration with the cookunity_list_deliveries sibling.
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 100% schema description coverage, the baseline is 3. The description adds meaningful context: it emphasizes that the date 'must match an actual delivery date from cookunity_list_deliveries' and provides error handling details for invalid dates. This goes beyond the schema's technical validation to explain the semantic requirement and consequences.
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 specific action ('Skip a delivery week') and resource ('delivery'), distinguishing it from siblings like cookunity_unskip_delivery (reverse action) and cookunity_list_deliveries (read-only). It uses precise language that leaves no ambiguity about the tool's function.
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 explicit guidance on when to use this tool: 'Always call cookunity_list_deliveries first to get valid delivery dates — do NOT guess or calculate dates manually.' It names the specific alternative tool (cookunity_list_deliveries) and clearly states when not to use this tool (without first calling that sibling).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookunity_unskip_deliveryUnskip CookUnity DeliveryAIdempotent
Unskip a previously skipped delivery week. IMPORTANT: Always call cookunity_list_deliveries first to get valid delivery dates — do NOT guess or calculate dates manually.
Args:
date (string, required): YYYY-MM-DD delivery date to unskip (must match an actual delivery date from cookunity_list_deliveries)
Returns: Confirmation message
Error Handling:
Invalid date: returns available delivery dates
Week not skipped: returns API error
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Delivery date in YYYY-MM-DD format (must be a Monday). Defaults to next Monday if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it specifies the prerequisite of calling another tool first, describes error handling behaviors (returns available dates for invalid dates, returns API error for unskipped weeks), and mentions the confirmation message return. Annotations cover read/write status, idempotency, and open-world nature, but the description provides practical implementation details.
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 perfectly structured: the core purpose is stated first, followed by critical usage instructions, then parameter semantics, return value, and error handling. Every sentence serves a distinct purpose with zero redundancy, and information is logically organized for quick comprehension.
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?
For a single-parameter mutation tool with comprehensive annotations but no output schema, the description provides complete context: clear purpose, explicit usage guidelines, parameter constraints, return information, and error behaviors. It addresses all necessary aspects for safe and effective tool invocation.
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 100% schema description coverage, the baseline is 3. The description adds meaningful context by emphasizing that the date 'must match an actual delivery date from cookunity_list_deliveries' and warning against manual calculation, which provides crucial semantic guidance beyond the schema's format specification and default value note.
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 explicitly states the verb 'Unskip' and the resource 'delivery week', making the purpose immediately clear. It distinguishes from sibling tools like 'cookunity_skip_delivery' by specifying the opposite action, and from 'cookunity_list_deliveries' by focusing on modification rather than listing.
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 explicit guidance on when to use this tool: 'Always call cookunity_list_deliveries first to get valid delivery dates — do NOT guess or calculate dates manually.' It also implicitly distinguishes from 'cookunity_skip_delivery' by handling the reverse operation, and from other cart/order tools by focusing on delivery scheduling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no significant overlap. For example, cookunity_add_to_cart, cookunity_remove_from_cart, and cookunity_clear_cart handle different cart operations, while cookunity_get_menu and cookunity_search_meals serve separate browsing needs. The descriptions reinforce these distinctions, making tool selection straightforward.
All tools follow a consistent 'cookunity_verb_noun' naming pattern with snake_case throughout. Verbs like 'get', 'list', 'add', 'remove', 'confirm', 'skip', and 'search' are used predictably, making the tool set highly readable and organized. There are no deviations in naming conventions.
With 16 tools, this server is well-scoped for managing a meal delivery service. It covers essential operations like browsing, cart management, ordering, delivery scheduling, and user info without being overwhelming. Each tool serves a clear purpose, and the count aligns with the domain's complexity.
The tool set provides complete coverage for the CookUnity domain, including CRUD operations for cart items (add, remove, clear, get), order lifecycle (confirm, list, history), delivery management (skip/unskip, list, next), and informational tools (menu, search, meal details, price breakdown, user info). There are no obvious gaps that would hinder agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Meitre restaurant reservations.
- mcpOAuthcom.zomato
An MCP server that exposes functionalities to use Zomato's services.
MCP server for Product Management
The official MCP Server for the Mux API
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA proof-of-concept Model Context Protocol server that enables LLM applications to interact with Uber Eats, allowing AI agents to browse and order food through natural language.236
- FlicenseAqualityDmaintenanceEnables interaction with the DoorDash Drive API to create, manage, and track delivery requests including quotes, delivery creation, status checks, and cancellations.61
- AlicenseNot gradedqualityDmaintenanceAn MCP server for managing recipes, meal plans, shopping lists, and more through a self-hosted Mealie instance.1MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for MealMastery AI meal planning that enables users to manage meal plans, recipes, and grocery lists through natural language conversation with AI agents like Claude.90MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ggonzalezaleman/cookunity-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server