Skip to main content
Glama
smeet666

mcp-supertoinette

Read the wines ranked for a dish

get_wine_pairings
Read-onlyIdempotent

Find ranked wine pairings for a dish on Supertoinette using its ID, or browse the alphabetical dish index by page number.

Instructions

Read the wines Supertoinette ranks for one dish, given the number in its address as 'id'. Each wine comes with the site's own wording for how well it goes, from 'Bon accord' to 'Accord parfait'. Called with 'page' instead, it reads one page of the alphabetical index of dishes, which is where the identifiers come from: the index runs alphabetically, so a dish beginning with a late letter sits on a late page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoThe number in a dish's address, such as '10'. Give this or 'page'.
pageNoRead one page of the alphabetical index of dishes instead of one dish. Give this or 'id'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dishYesThe wines ranked for one dish, when 'id' was given.
kindYesWhich of the two answers arrived. The other field is null.
indexYesOne page of the index of dishes, when 'page' was given.
notesYes
sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.0
    • changedOutput schema / properties / dish / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "dish": {
      -        "description": "The site's own name for it.",
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "pairing_count": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "pairings": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "rank": {
      -              "description": "The site's own wording for how well it goes, such as 'Accord parfait'.",
      -              "type": "string"
      -            },
      -            "wine": {
      -              "description": "The wine and whatever the site writes about it, as published.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "rank",
      -            "wine"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "recipes": {
      -        "description": "The recipes the site links beside the dish. Read one with get_recipe.",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "title": {
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "title",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "style": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The style of wine the site opens with. Null where it wrote none."
      -      },
      -      "url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "dish",
      -      "style",
      -      "pairings",
      -      "pairing_count",
      -      "recipes",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "dish": {
      +        "description": "The site's own name for it.",
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "pairing_count": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "pairings": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "rank": {
      +              "description": "The site's own wording for how well it goes, such as 'Accord parfait'.",
      +              "type": "string"
      +            },
      +            "wine": {
      +              "description": "The wine and whatever the site writes about it, as published.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "rank",
      +            "wine"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "recipes": {
      +        "description": "The recipes the site links beside the dish. Read one with get_recipe.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "title": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "title",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "style": {
      +        "description": "The style of wine the site opens with. Null where it wrote none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "dish",
      +      "style",
      +      "pairings",
      +      "pairing_count",
      +      "recipes",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observedv1.0.1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds valuable context beyond annotations: the rating wording scale ('Bon accord' to 'Accord parfait'), the alphabetical ordering of the index, and the mechanism for locating dish identifiers. This goes beyond minimal disclosure.

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 description is three sentences, each contributing information: purpose, rating scale, and the page/index relationship. It is front-loaded with the primary action and avoids fluff. Slightly long but every sentence is relevant, so it earns a 4.

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?

The tool has two modes and an output schema, so the description covers the necessary usage context: how to get ids, the index ordering, and the rating scale. It does not explain output format, but the presence of an output schema makes that unnecessary. Missing error-handling details are minor for a read-only tool.

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 both parameters are already documented. The description adds meaning by explaining 'id' as 'the number in a dish's address' and 'page' as reading the index, plus clarifying the mutual exclusivity ('Give this or 'page''). This enriches the schema's baseline.

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 ('Read') and resource ('the wines Supertoinette ranks for one dish'), and clearly distinguishes the tool from siblings like get_recipe or search_recipes by focusing on wine pairings. It also explains the two invocation modes (by dish id or by index page), making the tool's purpose 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?

The description explains when to use each parameter (id vs. page) and how they relate (the index provides identifiers). It does not explicitly compare this tool to alternatives, but the distinct purpose and sibling names make the selection clear. Since there is no explicit 'when not to use' guidance, it falls 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.