Skip to main content
Glama

Select this week's recipes

set_this_weeks_recipes
Destructive

Lock in this week's dinners: pick winners by votes or set specific recipes, then finalize the voting week and get the shopping list.

Instructions

Lock in the dinners. With no recipe_ids, picks the top N (recipes_per_week) by votes; a tie at the cutoff goes to the earlier ballot position and is reported under tie_break. With recipe_ids, those become the dinners exactly: any number, any household or Community recipe, on the ballot or not (off-ballot picks are added to the week). Call again to change them; an ordered week stays ordered. Moves a voting week to 'selected' and returns the shopping list.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
week_idNo
recipe_idsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
weekYes
selectedYes
tie_breakNoSet when the vote tied at the cutoff and the server broke it
share_hintNo
added_to_weekNoTitles picked from outside the ballot and added to the week
shopping_listYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv0.1.1
    • addedOutput schema / properties / added_to_week
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "$ref": "#/properties/week/properties/id"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Titles picked from outside the ballot and added to the week"
      +}
    • addedOutput schema / properties / selected / items / properties / admin_pick
      Added value: +{
      +  "description": "Selected even though the vote alone would not have picked it: chosen by an admin, or added off the ballot",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / selected / items / properties / image_generated
      Added value: +{
      +  "description": "Photo was generated by Agent Chef, so it is safe to show publicly",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / selected / items / properties / is_public
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / selected / items / properties / public_url
      Added value: +{
      +  "description": "Indexable public page, when published",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / selected / items / properties / source_recipe_id
      Added value: +{
      +  "description": "Set when this is the household's copy of a Community recipe",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / share_hint
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / shopping_list / properties / skipped_on_hand / items / properties / expires_at
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / shopping_list / properties / skipped_on_hand / items / properties / staple
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / tie_break
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {
      +        "chosen": {
      +          "items": {
      +            "$ref": "#/properties/week/properties/id"
      +          },
      +          "type": "array"
      +        },
      +        "recipes": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "id": {
      +                "$ref": "#/properties/week/properties/id"
      +              },
      +              "title": {
      +                "$ref": "#/properties/week/properties/id"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "title"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "rule": {
      +          "$ref": "#/properties/week/properties/id"
      +        },
      +        "spots": {
      +          "$ref": "#/properties/selected/items/properties/vote_count"
      +        },
      +        "votes": {
      +          "$ref": "#/properties/selected/items/properties/vote_count"
      +        }
      +      },
      +      "required": [
      +        "votes",
      +        "spots",
      +        "recipes",
      +        "chosen",
      +        "rule"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Set when the vote tied at the cutoff and the server broke it"
      +}
    • addedOutput schema / properties / week / properties / share_url
      Added value: +{
      +  "description": "Public page showing this week's winners",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations mark this destructive and non-read-only, and the description earns its keep by disclosing the state transition to 'selected', the tie-break rule (earlier ballot position, surfaced in tie_break), that off-ballot picks are added to the week, that re-calling overwrites, and that a shopping list is returned. This is exactly the mutation context an agent needs beyond the 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?

The key scope ('lock in the dinners') is front-loaded and every sentence adds behavioral information. It is a dense run-on paragraph with several parenthetical asides, so it is slightly heavier than needed but not padded.

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 destructive, state-transitioning tool with only two sparse parameters and a separate output schema, the description covers outcomes, tie-breaking, re-invocation, and the returned shopping list. The one real gap is the unexplained week_id, which the agent must infer.

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?

With 0% schema description coverage the description must carry parameters, and it does so thoroughly for recipe_ids (optional, any count, household or Community, on/off ballot, overwrite semantics). week_id is never explained, and recipes_per_week is referenced as if it were an input even though it is not a schema property.

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+resource (select/lock in this week's dinners) and distinguishes the tool from neighbors like propose_recipes and add_vote by describing the terminal 'moves a voting week to selected' outcome. An agent can tell what this tool uniquely does without opening the schema.

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 clearly defines the two operating modes (omitted recipe_ids = top N by votes; supplied recipe_ids = exact set) and notes the tool can be called repeatedly to change the selection. It stops short of naming when to use this versus comparable siblings such as propose_recipes or reopen_voting.

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