Skip to main content
Glama

Parsley MCP by usefulapi

Server Details

Read Parsley menu items, nutrition, allergens, ingredients and events; record event sales and waste.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A4/5.0

Scored across 15 tools

Disambiguation4/5

Tools are cleanly separated by resource (event, menu, menu item, ingredient) and by operation (list vs get vs create), and the three write tools target distinct payloads. Minor overlap: parsley_list_menu_items includes recipes, sub-recipes and ingredients, which could be conflated with parsley_list_ingredients, but descriptions make the boundary clear.

Naming Consistency5/5

Every tool uses the same parsley_ prefix plus a consistent snake_case verb_noun pattern (create_event, get_event, list_events, record_event_sales, update_event_covers). No mixed conventions or vague verbs.

Tool Count5/5

15 tools is at the top of the well-scoped range and each one maps to a concrete API endpoint/action. Read tools for the catalog plus focused event write tools, with no filler.

Completeness4/5

Catalog reads (menu, menu items, ingredients, tags, stations) and event lifecycle (create, get, list, covers, sales, waste) are covered well. Gaps exist: no delete/rename event, no way to modify an event's menu items after creation, and read-only catalog with no update/create for menu items or ingredients.

Available Tools

15 tools
parsley_create_eventCreate eventAInspect

WRITE: create an event (a workday, shift, service or catering event) in Parsley with its menu items. This changes the account's production plan and is NOT idempotent: calling it twice creates two events. Returns the new event id. Use parsley_list_events first to avoid duplicates. POST /events.

NameRequiredDescriptionDefault
dateYesThe day of the event, yyyy-mm-dd.
nameYesEvent name, e.g. 'Brunch'.
typeYesEvent type: standard, cafe-hot-bar, sale or forecast.
menu_idNoParsley menu id the event uses (from parsley_list_menus).
privateNoMark the event private.
end_timeNoTime of day, HH:mm (24 hour).
line_itemsYesThe menu items and amounts to produce or sell (may be empty).
start_timeNoTime of day, HH:mm (24 hour).
descriptionNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, but the description adds the operational meaning of those flags: calling twice creates two events and mutates the account's production plan. It also discloses the return value ("Returns the new event id") in the absence of an output schema. Auth requirements and side effects on dependent resources (e.g. inventory deduction) are not covered, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense clauses with zero filler: the WRITE prefix, the definition, the risk warning, the alternative, and the endpoint are all front-loaded and each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter write tool with no output schema, the description covers the mutation's effect, its non-idempotent failure mode, the duplicate-prevention path, the returned identifier, and the underlying endpoint. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89% and the nested line_items fields are documented in the schema itself, so the schema carries essentially all parameter meaning. The description only obliquely signals that menu items are part of the payload ("with its menu items") without adding semantics beyond the schema, which matches the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with an explicit verb and resource ("WRITE: create an event") and clarifies the resource scope ("a workday, shift, service or catering event") plus the payload content ("with its menu items"). No sibling tool creates events, so the agent can distinguish this immediately from the get_/list_/record_ siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the concrete alternative and the condition that selects it: "Use parsley_list_events first to avoid duplicates." Combined with the stated non-idempotency consequence, an agent has everything it needs to decide whether to check before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_get_eventGet eventA
Read-only
Inspect

One event with its metadata and all line items (menu item, amount, unit, station, section). GET /events/{id}.

NameRequiredDescriptionDefault
event_idYesParsley event id (from parsley_list_events).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds behavioral value by disclosing the exact endpoint and that the response includes all line items, which tells the agent this is a detail-heavy read rather than a lightweight lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with zero filler. It front-loads the core behavior (one event plus line items) before appending the endpoint reference.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates well by listing the returned line-item fields and metadata. It is nearly complete for a simple single-id getter, though it leaves open details like pagination or absent-event behavior that an agent might wonder about.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required event_id parameter with 100% schema description coverage, and the schema note even says it comes from parsley_list_events. The description itself adds no meaning beyond the schema, so the baseline of 3 is appropriate when structured fields carry the parameter story.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ("One event") and details the returned payload (metadata and all line items with item, amount, unit, station, section), plus the backing endpoint GET /events/{id}. It distinguishes itself implicitly from the list endpoint by emphasizing a single event, though it does not name parsley_list_events as the sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: retrieving a single event by id. The description gives no explicit guidance on when to choose this tool over parsley_list_events or the other sibling getters, and it does not state prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_get_ingredientGet ingredient (costing and suppliers)A
Read-only
Inspect

One ingredient in full: unit conversions, supported units, tags, the supply options (supplier, SKU, pack size, cost) used for costing and the preparations with yield. Parsley limits this call to 1 request every 3 seconds, so fetch ingredients one at a time. GET /ingredients/{id}.

NameRequiredDescriptionDefault
ingredient_idYesParsley ingredient id (from parsley_list_ingredients).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, destructive=false, and openWorld=true, so safety is covered. The description adds a concrete behavioral constraint the annotations do not carry: a rate limit of 1 request every 3 seconds, which directly shapes how an agent should batch calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned and followed by the throttle constraint and endpoint. The enumeration is dense but every item conveys real payload content, so there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe return contents and it does thoroughly, plus it discloses the rate limit. Only minor gaps remain, such as behavior on an invalid or unknown id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single ingredient_id parameter is documented there, including its origin (from parsley_list_ingredients). The description adds no further semantics about the id, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get one ingredient) and enumerates exactly what it returns: unit conversions, supported units, tags, supply options with supplier/SKU/pack size/cost, and preparations with yield. That level of detail clearly separates it from parsley_list_ingredients and the menu/event siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an operational rule ('fetch ingredients one at a time' due to the 3-second throttle) and the schema note points back to parsley_list_ingredients as the id source, but there is no explicit statement of when to prefer this over alternatives or what preconditions apply beyond the id requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_get_menuGet menuA
Read-only
Inspect

One menu with its sections and the menu items in each section, and its serving stations. GET /menus/{id}.

NameRequiredDescriptionDefault
menu_idYesParsley menu id (from parsley_list_menus).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds real value by disclosing that the response expands into sections, per-section items, and serving stations — the depth/expansion behavior an agent can't see in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence describing the payload plus the endpoint path; nothing extraneous and no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so by enumerating the nested payload. Minor gap: nothing about error behavior for an unknown id, but for a simple read on a 1-param tool this is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and menu_id is documented in the schema, including provenance from parsley_list_menus. The description adds no further semantics about the id, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (one menu) and enumerates the returned composition (sections, items per section, serving stations), which distinguishes it from parsley_list_menus. It stops short of naming the sibling explicitly, so it doesn't fully earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'One menu' implies the single-resource counterpart to the list tool, and the schema ties menu_id to parsley_list_menus, but the description itself offers no when-to-use/when-not guidance or alternatives. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_get_menu_itemGet menu item (nutrition, allergens, ingredients)A
Read-only
Inspect

One menu item in full: names, description, price, cost, shelf life, serving size, nutrition facts (nutrients), the allergen flags and allergen text, dietary characteristics (meat, pork, corn, poultry) and the ingredient list. The photo link is returned without its access token. GET /menu_items/{id}.

NameRequiredDescriptionDefault
menu_item_idYesParsley menu item id (from parsley_list_menu_items).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, open-world behavior. The description adds useful context about returned fields and specifically notes that the photo link is returned without its access token, which is a meaningful behavioral/security detail beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses a compact field enumeration that earns its place because there is no output schema. The endpoint line adds useful mapping without unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned item fields, including nutrition, allergens, dietary characteristics, ingredients, and token-stripped photo link. Together with annotations and schema, it gives the agent enough context to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema itself explains that menu_item_id comes from parsley_list_menu_items. The description does not add parameter-specific meaning beyond the schema, so 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'One menu item in full,' and enumerates exactly what full retrieval includes. It distinguishes this from parsley_list_menu_items by emphasizing a single item and the /menu_items/{id} endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'one menu item in full' framing clearly indicates this is for retrieving a single item's details rather than listing items. The required id source is documented in the schema, but the description itself does not explicitly name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_chef_tagsList chef tagsA
Read-only
Inspect

List the chef tags (id, name) that recipes are attributed to. Only meaningful for accounts with Chef IDs enabled. GET /tags/chefs.

NameRequiredDescriptionDefault
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds one useful behavioral fact (account-level prerequisite), but nothing about pagination limits, empty results, or ordering beyond what the schema and endpoint imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource description and the eligibility caveat. The trailing 'GET /tags/chefs' is largely redundant with the title and siblings, but costs only a few tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter list tool with no output schema, the description tells the agent what comes back (id, name) and when the tool applies. Pagination mechanics live in the schema, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with limit (1-500, default 100) and offset ('pass the previous reply's next_offset') fully documented in the schema. The description adds no parameter meaning at all, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the chef tags') and even names the returned fields (id, name) plus the underlying endpoint GET /tags/chefs. It is unambiguous against siblings since no other tool touches tags, but it never explicitly distinguishes itself from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Only meaningful for accounts with Chef IDs enabled' is a real eligibility condition that prevents wasted calls. What is missing is any routing guidance (e.g., pairing with parsley_list_chef_users or how to resolve a tag id to recipes).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_chef_usersList chef usersA
Read-only
Inspect

List the chef users of the account: id, email, join date, active flag, permission level and the chef tag they are tied to. Only meaningful for accounts with Chef IDs enabled. GET /users/chefs.

NameRequiredDescriptionDefault
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.
searchNoOnly chef users (matched on email or chef name) whose name contains this text (case-insensitive).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered and the description need not restate it. The description adds the underlying endpoint (GET /users/chefs) and the returned field set, but says nothing about pagination behavior, volume, or what an empty result means for a non-Chef-ID account.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the field list front-loaded and the precondition immediately after; nothing is padded. The trailing "GET /users/chefs" is a small implementation detail but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the enumeration of returned fields (id, email, join date, active flag, permission level, chef tag) fills the biggest gap an agent would otherwise have. Pagination is documented in the schema rather than the description, so the only real omission is what a caller should do when the account lacks Chef IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (limit, offset, search) are fully documented in the schema, including the next_offset handoff, so the description rightly does not repeat them. It adds no semantics beyond the schema, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the chef users of the account") and enumerates the returned fields, so the agent knows exactly what data comes back. It never names a sibling, so the agent must infer that parsley_list_chef_tags covers tags rather than users, but the name and field list make the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Only meaningful for accounts with Chef IDs enabled" is a genuine precondition that tells the agent when this tool is worthless, which is more than most list tools offer. It stops short of naming alternatives (e.g. parsley_list_chef_tags) or saying how to detect whether Chef IDs are enabled, so it is clear context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_eventsList eventsA
Read-only
Inspect

List events (a workday, shift, service or catering event) that fall in a date window: id, name, type (standard, cafe-hot-bar, sale, forecast), date, start and end time, menu id. A bare date means the whole day in the account timezone. GET /events.

NameRequiredDescriptionDefault
endYesWindow end (inclusive): yyyy-mm-dd (to the end of that day) or an ISO 8601 date-time.
typeNoOnly this event type.
limitNoResults to return, 1-500 (default 100).
startYesWindow start (inclusive): yyyy-mm-dd or an ISO 8601 date-time. Without a timezone the account timezone applies.
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.
searchNoOnly events whose name contains this text (case-insensitive).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful behavioral context: bare-date semantics in the account timezone, the returned fields, and the underlying GET endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and compact: one dense sentence states the operation, scope, event types, and returned fields, followed by the endpoint. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description lists the returned fields and explains the key date-window semantics. Combined with the fully documented input schema and safety annotations, it is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains all six parameters in detail. The description reinforces the date-window behavior and event type values, but adds little parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource ("List events") and defines the scope as events falling in a date window. It also names the event kinds covered, though it does not explicitly differentiate itself from the singular get_event sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The date-window and event-type filter provide implied usage context, but there is no explicit guidance on when to use this tool versus get_event or other event tools. No alternatives or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_ingredientsList ingredientsA
Read-only
Inspect

List the ingredients that can be used in recipes: id, parent id, name, label name, item number, supported units, and whether a recipe uses it. The API returns the whole list at once; search/limit/offset slice it here. GET /ingredients.

NameRequiredDescriptionDefault
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.
searchNoOnly ingredients whose name contains this text (case-insensitive).
used_by_recipeNotrue: only ingredients used by a recipe; false: only unused ones.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower. The description adds non-obvious context: the API returns the entire list in one call and filtering/paging happens on this side, which shapes how an agent should size requests.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: fields returned, paging behavior, and endpoint. It is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, it usefully enumerates the returned fields and explains paging semantics. It stops short of noting the default page size or pointing to the single-item sibling, but nothing essential for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds a semantic nuance beyond the schema by clarifying that limit/offset/search act as post-hoc slicing over the full list rather than server-side query parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the ingredients that can be used in recipes') and enumerates the returned fields, which distinguishes it well from parsley_get_ingredient. It never explicitly contrasts with the singular sibling, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence about the API returning the whole list while search/limit/offset slice it 'here' implies when to use this tool for browsing/paging. However, it gives no explicit guidance on choosing it over parsley_get_ingredient for a single lookup, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_menu_itemsList menu itemsA
Read-only
Inspect

List the recipes, sub-recipes and ingredients in the Parsley account that can be used on events: id, name, item number, price, tags, active flag, chef and last-modified time. Use the ids with parsley_get_menu_item for nutrition, allergens and ingredients, and on events. The API returns the whole list at once; search/limit/offset slice it here. GET /menu_items.

NameRequiredDescriptionDefault
tagNoOnly items carrying this tag (exact, case-insensitive).
typeNoOnly this kind of item.
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.
searchNoOnly menu items whose name contains this text (case-insensitive).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/non-destructive, but the description adds a genuinely non-obvious trait: the upstream API returns the entire list and search/limit/offset are applied here, so the agent understands filtering happens client-side. It also names the fields returned, which is useful information beyond the safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the resource and scope, then routing, then result-set behavior. The field enumeration in sentence one is long but earns its place, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the returned fields and the pagination model, so an agent knows what comes back and how to page. It omits mention of next_offset, which the schema references but the description never explains in the return context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: that search/limit/offset 'slice' an already-complete API response, clarifying cost and semantics. It does not restate tag/type filtering, leaving the description slightly under-powered relative to the five parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the recipes, sub-recipes and ingredients in the Parsley account') and enumerates returned fields, which distinguishes it from parsley_list_ingredients and parsley_list_menus. An agent can tell this is the event-usable menu item catalog rather than a generic ingredient or menu listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes follow-up work to parsley_get_menu_item ('Use the ids with parsley_get_menu_item for nutrition, allergens and ingredients, and on events'), giving a clear when-to-use-this vs when-to-use-that. It does not say when to prefer parsley_list_ingredients or parsley_list_menus, which overlap partially, so it falls short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_menusList menusA
Read-only
Inspect

List the menus (menu plans) in the account: id, name and last-modified time. Use the id with parsley_get_menu or when creating an event. GET /menus.

NameRequiredDescriptionDefault
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.
searchNoOnly menus whose name contains this text (case-insensitive).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered; the description adds the concrete return fields and the HTTP method, which the annotations do not convey and no output schema exists to supply. It says nothing about result-set size, truncation, or pagination behavior beyond what the schema implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences; the field list comes first and the downstream routing second. No redundant restatement of the name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema coverage and no output schema, the description supplies the important missing piece: what each record contains and how the id is consumed downstream. It stops short of noting result ordering or how next_offset signals more pages, which would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset and search are fully documented in the schema with defaults and bounds. The description contributes no additional semantics (e.g., how search interacts with pagination or what ordering results come in), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the menus (menu plans) in the account") and enumerates the returned fields (id, name, last-modified time). This cleanly separates it from the singular parsley_get_menu and from parsley_list_menu_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use the returned id with parsley_get_menu or when creating an event, and states the underlying GET /menus endpoint. It gives clear positive guidance but never says when listing is the wrong choice (e.g., searching vs. browsing, or versus parsley_list_menu_items).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_list_serving_stationsList serving stationsA
Read-only
Inspect

List the serving stations (id, name) that menu items and event line items can be assigned to. GET /tags/serving_stations.

NameRequiredDescriptionDefault
limitNoResults to return, 1-500 (default 100).
offsetNoSkip this many results (default 0). Pass the previous reply's next_offset.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the endpoint and return-field context, but does not add meaningful behavioral details beyond that and the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is compact and front-loaded: one sentence explains the resource and its use, followed by the endpoint. There is no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with fully documented parameters and annotations, the description is largely complete. It also names the returned fields, which helps compensate for the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both limit and offset are fully documented in the schema. The description does not mention parameters, which is acceptable given the schema already carries that information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the serving stations') and clarifies the resource's role for menu items and event line items. It also gives the returned fields (id, name), though it does not explicitly differentiate this from sibling list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool is relevant by explaining that serving stations are assignable to menu items and event line items, but it does not specify when to use this versus related listing tools or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_record_event_salesRecord event salesA
DestructiveIdempotent
Inspect

WRITE: push sold quantities per menu item to a cafe/hot bar event, which feeds Parsley's cost and usage reports. Other event types are refused by Parsley, as is a menu item with no made quantity on the event. Sending the same quantities again overwrites rather than adds. PUT /events/{id}/sales.

NameRequiredDescriptionDefault
salesYesSold amount per menu item.
event_idYesParsley event id of a cafe/hot bar event.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true; the description corroborates these by stating that identical quantities overwrite rather than add. It adds real value beyond the annotations by disclosing server-side rejection rules (wrong event type, item with no made quantity) and the underlying PUT endpoint. It doesn't cover auth needs or error payloads, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with 'WRITE:' to flag the operation class, then payload purpose, then refusal and overwrite semantics, then the endpoint. No filler and no repetition of schema detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only a nested array payload, the description supplies the write semantics, rejection conditions, and idempotency behavior an agent needs to call it correctly. It is slightly thin on what a successful response looks like and on what 'made quantity' means operationally, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the uom list, amount bounds, and the item_id-vs-menu_item choice, so the schema carries parameter meaning. The description only summarizes the payload as 'sold quantities per menu item' and adds no syntax or selection guidance beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with an explicit verb-and-resource statement ('push sold quantities per menu item to a cafe/hot bar event') and states the downstream purpose (cost and usage reports). It also distinguishes this write from the other event-related siblings by scoping it to cafe/hot bar events that have made quantities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions: only cafe/hot bar events are accepted, and every menu item must have a made quantity or Parsley refuses the call. It also states the overwrite-not-accumulate rule, which tells the agent how to re-send data. It does not explicitly route to a sibling tool as an alternative, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_record_waste_leftoverRecord waste and leftoverA
DestructiveIdempotent
Inspect

WRITE: push waste and/or leftover quantities per menu item to a cafe/hot bar event. If no sold quantity exists, Parsley derives it as made minus waste minus leftover. Parsley refuses amounts above what was made minus sold. Sending the same quantities again overwrites rather than adds. PUT /events/{id}/waste_leftover.

NameRequiredDescriptionDefault
itemsYes
event_idYesParsley event id of a cafe/hot bar event.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description corroborates and enriches that: same quantities overwrite rather than add, the server derives sold as made minus waste minus leftover, and the server rejects amounts exceeding made-minus-sold. That is real server-side behavior beyond the flags, though permission requirements and the response shape are unmentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the WRITE marker and the resource, then escalating to derivation rule, validation rule, overwrite semantics, and endpoint. No filler and no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, destructive write tool with no output schema, the description covers mutation semantics, idempotency behavior, and the key server-side validation error an agent will hit. What's missing is any hint of the success response or whether partial item failures are possible when up to 500 items are sent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is roughly 50% (section and station are undocumented, the amount/uom fields carry their own descriptions), so the description only needs to add the 'and/or' semantics — that waste_amount, leftover_amount, and their uoms are independently optional per item. It does that, but gives no guidance on the section/station fields or on how amounts interact with the chosen uom.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with an explicit 'WRITE:' verb marker and names the resource precisely: waste and leftover quantities per menu item on a cafe/hot bar event. It also pins the endpoint (PUT /events/{id}/waste_leftover), so an agent can trivially distinguish it from sibling writers like parsley_record_event_sales or parsley_update_event_covers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The cafe/hot-bar-event scope is stated, which implicitly rules out other event types, and 'waste and/or leftover' tells the agent it may supply either or both. But no sibling is named as an alternative and there is no explicit when-not guidance (e.g. use record_event_sales for sold counts).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parsley_update_event_coversUpdate event coversA
DestructiveIdempotent
Inspect

WRITE: set the forecast and/or actual number of covers (guests served) on an event. Only the fields you pass change. actual_covers works only on cafe/hot bar events. Setting the same values again has no further effect. PATCH /events/{id}.

NameRequiredDescriptionDefault
event_idYesParsley event id.
actual_coversNoReal number of covers (cafe/hot bar events only).
forecast_coversNoPredicted number of covers.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare write, destructive, idempotent and open-world hints, so the description only needs to add context – which it does, by spelling out PATCH-style merge behavior and the cafe/hot bar restriction on actual_covers. It does not cover what an overwrite destroys (e.g. prior forecast values being replaced) or any auth requirements, leaving some room above the annotation floor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the WRITE marker and the core action, then the constraint, the idempotency note and the endpoint. Nothing is padded and each sentence adds a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter partial-update call with no output schema, the description covers the essential risks: applicability restriction, merge semantics and idempotency. The remaining gap is the response shape after the PATCH and whether prior values are recoverable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including the cafe/hot-bar constraint on actual_covers. The description's parameter-related content largely restates that schema text; the one genuine addition is confirming that omitted optional fields are left untouched, which is only a marginal gain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('set the forecast and/or actual number of covers on an event') with an explicit WRITE marker and the underlying endpoint (PATCH /events/{id}). This clearly distinguishes it from siblings like parsley_record_event_sales or parsley_create_event, which also touch events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating conditions: partial-update semantics ('Only the fields you pass change'), a hard applicability rule ('actual_covers works only on cafe/hot bar events'), and idempotency ('Setting the same values again has no further effect'). It stops short of naming alternatives or when-not-to-use cases, e.g. whether forecast covers should be set here versus at creation time.

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.

  1. 15 tool updates
    • First observedparsley_create_event
    • First observedparsley_get_event
    • First observedparsley_get_ingredient
    • First observedparsley_get_menu
    • First observedparsley_get_menu_item
    • First observedparsley_list_chef_tags
    • First observedparsley_list_chef_users
    • First observedparsley_list_events
    • First observedparsley_list_ingredients
    • First observedparsley_list_menu_items
    • First observedparsley_list_menus
    • First observedparsley_list_serving_stations
    • First observedparsley_record_event_sales
    • First observedparsley_record_waste_leftover
    • First observedparsley_update_event_covers

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides hospitality intelligence tools for restaurant optimization, including menu profitability analysis, food cost calculation, reservation management, review sentiment analysis, and allergen checking.
    0
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables an MCP client to read live order data for a DailyMeals account and submit form data with confirmations, protected by bearer-token authentication and idempotent writes.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables a chat assistant to log what you ate — text, voice notes, recipe portions, or label/plate photos — by resolving foods against the Bundeslebensmittelschlüssel, Open Food Facts, or Tandoor recipe nutrition and storing copy-on-write nutrient entries in a local SQLite log. It serves these tools over stateless streamable HTTP MCP, grouping entries into meals and summarizing days, weeks, and training/body-weight data when an OpenGym endpoint is configured.
    GPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.