Skip to main content
Glama

List locked recipes

list_recipes
Read-onlyIdempotent

List recipes (all or filtered by equipment and status). The id on each row is the number this account knows that record by, counting from 1 — safe to show, and what other tools expect back.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status: current, archived, or all. Defaults to current.
bean_idNo
grinder_idNo
machine_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
recipesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / recipes / items / properties / machine_settings
      Added value: +{
      +  "additionalProperties": true,
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / recipes / items / required
      Previous value: -[
      -  "id",
      -  "bean_id",
      -  "grinder_id",
      -  "machine_id",
      -  "program_id",
      -  "status",
      -  "grind_label",
      -  "grind_position_value",
      -  "dose_g",
      -  "target_yield_g",
      -  "target_time_s",
      -  "finish_action",
      -  "drink_intent",
      -  "profile",
      -  "locked_at",
      -  "bean_name",
      -  "roaster_name",
      -  "grinder_name",
      -  "machine_name",
      -  "grind_reading"
      -]New value: +[
      +  "id",
      +  "bean_id",
      +  "grinder_id",
      +  "machine_id",
      +  "program_id",
      +  "status",
      +  "grind_label",
      +  "grind_position_value",
      +  "dose_g",
      +  "target_yield_g",
      +  "target_time_s",
      +  "finish_action",
      +  "drink_intent",
      +  "profile",
      +  "locked_at",
      +  "machine_settings",
      +  "bean_name",
      +  "roaster_name",
      +  "grinder_name",
      +  "machine_name",
      +  "grind_reading"
      +]
  2. Changed3 schema fields changed
    • removedOutput schema / properties / recipes / items / properties / grind_reading / properties / label / type
      Removed value: -"null"
    • removedOutput schema / properties / recipes / items / properties / grind_reading / properties / offset_clicks / type
      Removed value: -"null"
    • removedOutput schema / properties / recipes / items / properties / grind_reading / properties / offset_direction / type
      Removed value: -"null"
  3. Changed2 schema fields changed
    • addedOutput schema / properties / recipes / items / properties / grind_reading / properties / epoch_tasks
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / recipes / items / properties / grind_reading / properties / untranslatable
      Added value: +{
      +  "type": "boolean"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / recipes / items / properties / roaster_name
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / recipes / items / required
      Previous value: -[
      -  "id",
      -  "bean_id",
      -  "grinder_id",
      -  "machine_id",
      -  "program_id",
      -  "status",
      -  "grind_label",
      -  "grind_position_value",
      -  "dose_g",
      -  "target_yield_g",
      -  "target_time_s",
      -  "finish_action",
      -  "drink_intent",
      -  "profile",
      -  "locked_at",
      -  "bean_name",
      -  "grinder_name",
      -  "machine_name",
      -  "grind_reading"
      -]New value: +[
      +  "id",
      +  "bean_id",
      +  "grinder_id",
      +  "machine_id",
      +  "program_id",
      +  "status",
      +  "grind_label",
      +  "grind_position_value",
      +  "dose_g",
      +  "target_yield_g",
      +  "target_time_s",
      +  "finish_action",
      +  "drink_intent",
      +  "profile",
      +  "locked_at",
      +  "bean_name",
      +  "roaster_name",
      +  "grinder_name",
      +  "machine_name",
      +  "grind_reading"
      +]
  5. Changed5 schema fields changed
    • changedOutput schema / properties / recipes / items / properties / dose_g / type
      Previous value: -"number"New value: +[
      +  "integer",
      +  "number"
      +]
    • changedOutput schema / properties / recipes / items / properties / grind_reading / required
      Previous value: -[
      -  "label",
      -  "offset_clicks",
      -  "offset_direction",
      -  "epochs_since",
      -  "unmeasured"
      -]New value: +[]
    • changedOutput schema / properties / recipes / items / properties / grind_reading / type
      Previous value: -"object"New value: +[
      +  "null",
      +  "object"
      +]
    • changedOutput schema / properties / recipes / items / properties / program_id / type
      Previous value: -"integer"New value: +[
      +  "null",
      +  "integer"
      +]
    • changedOutput schema / properties / recipes / items / properties / target_yield_g / type
      Previous value: -[
      -  "number",
      -  "integer"
      -]New value: +[
      +  "integer",
      +  "number"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "recipes": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "bean_id": {
      +            "type": "integer"
      +          },
      +          "bean_name": {
      +            "type": "string"
      +          },
      +          "dose_g": {
      +            "type": "number"
      +          },
      +          "drink_intent": {
      +            "type": "string"
      +          },
      +          "finish_action": {
      +            "type": "string"
      +          },
      +          "grind_label": {
      +            "type": "string"
      +          },
      +          "grind_position_value": {
      +            "type": "integer"
      +          },
      +          "grind_reading": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "epochs_since": {
      +                "type": "integer"
      +              },
      +              "label": {
      +                "type": "null"
      +              },
      +              "offset_clicks": {
      +                "type": "null"
      +              },
      +              "offset_direction": {
      +                "type": "null"
      +              },
      +              "unmeasured": {
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "label",
      +              "offset_clicks",
      +              "offset_direction",
      +              "epochs_since",
      +              "unmeasured"
      +            ],
      +            "type": "object"
      +          },
      +          "grinder_id": {
      +            "type": "integer"
      +          },
      +          "grinder_name": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "integer"
      +          },
      +          "locked_at": {
      +            "type": "string"
      +          },
      +          "machine_id": {
      +            "type": "integer"
      +          },
      +          "machine_name": {
      +            "type": "string"
      +          },
      +          "profile": {
      +            "type": "string"
      +          },
      +          "program_id": {
      +            "type": "integer"
      +          },
      +          "status": {
      +            "type": "string"
      +          },
      +          "target_time_s": {
      +            "type": "integer"
      +          },
      +          "target_yield_g": {
      +            "type": [
      +              "number",
      +              "integer"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "bean_id",
      +          "grinder_id",
      +          "machine_id",
      +          "program_id",
      +          "status",
      +          "grind_label",
      +          "grind_position_value",
      +          "dose_g",
      +          "target_yield_g",
      +          "target_time_s",
      +          "finish_action",
      +          "drink_intent",
      +          "profile",
      +          "locked_at",
      +          "bean_name",
      +          "grinder_name",
      +          "machine_name",
      +          "grind_reading"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "recipes"
      +  ],
      +  "type": "object"
      +}
  7. First observed

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavior: the row `id` is account-relative counting from 1, safe to surface, and is the identifier other tools expect back — useful context not present in the structured fields.

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 tight sentences with the core action front-loaded and no filler. The second sentence is dense but earns its place by carrying the id semantics the agent needs downstream.

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?

An output schema exists, so return values needn't be re-explained, and the description wisely adds only the non-obvious id detail. For a zero-required-param list tool this is nearly complete, with filtering semantics the main omission.

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

Parameters2/5

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

Schema coverage is only 25% (only `status` is documented), so the description must compensate and largely doesn't. It gestures at 'filtered by equipment and status', loosely grouping bean_id/grinder_id/machine_id as 'equipment', but never clarifies these params or how the filters combine.

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+resource ('List recipes') and notes the filtering dimensions (equipment and status), which is more than a tautology. The gap is the mismatch with the title ('List locked recipes') and the absence of differentiation from the many list_* siblings, so an agent gets the resource but not the precise scope.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is stated. A sibling lock_recipe exists and the title implies 'locked recipes', yet the description never explains the relationship or when this list is the right call versus other lookups.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources