Skip to main content
Glama

Lustrix – mirrors made to measure

List shapes and options

list_options
Read-onlyIdempotent

Lists the shapes (with the fields each needs and, for a material, its size limits), edges, tempering, LED lighting (colour temperatures, frontlit patterns per shape), heating mat, switches and holes, with the gross "+X" price of each paid option. Paid options are only added when the customer asks.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_options"
  }
}

Input Schema

NameRequiredDescriptionDefault
shapeNoFilters the frontlit LED patterns to this shape
localeNoLanguage of every text in the answer: pl (Polish shop, PLN) or de (German shop for DE/AT, EUR). Default pl.pl
materialSlugNoAdds the size limits of this material per shape

Output Schema

NameRequiredDescriptionDefault
edgesYes
frameYes
holesYes
shapesYes
currencyYes
switchesYes
temperingYes
backlitLedYes
heatingMatYes
safetyFilmYes
frontlitLedYes
productNoteYes
switchAvailableYes
switchRequiresLedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • addedOutput schema / properties / backlitLed / properties / available
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / backlitLed / properties / materials
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / backlitLed / required
      Previous value: -[
      -  "colorTemperatures",
      -  "pricePerMeterBrutto",
      -  "note"
      -]New value: +[
      +  "available",
      +  "materials",
      +  "colorTemperatures",
      +  "pricePerMeterBrutto",
      +  "note"
      +]
    • addedOutput schema / properties / frontlitLed / properties / available
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / frontlitLed / properties / materials
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / frontlitLed / properties / tintedNote
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / frontlitLed / required
      Previous value: -[
      -  "colorTemperatures",
      -  "patterns",
      -  "sandingWidthMm",
      -  "pricePerMeterBrutto",
      -  "note"
      -]New value: +[
      +  "available",
      +  "materials",
      +  "colorTemperatures",
      +  "patterns",
      +  "sandingWidthMm",
      +  "pricePerMeterBrutto",
      +  "note"
      +]
    • addedOutput schema / properties / heatingMat / properties / available
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / heatingMat / properties / materials
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / heatingMat / required
      Previous value: -[
      -  "priceBrutto",
      -  "note"
      -]New value: +[
      +  "available",
      +  "materials",
      +  "priceBrutto",
      +  "note"
      +]
    • addedOutput schema / properties / holes / properties / marginFactors
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "corner": {
      +      "type": "number"
      +    },
      +    "diameter": {
      +      "type": "number"
      +    },
      +    "edge": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "edge",
      +    "corner",
      +    "diameter"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / holes / properties / marginsMm
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "corner": {
      +      "type": "number"
      +    },
      +    "edge": {
      +      "type": "number"
      +    },
      +    "minDiameter": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "edge",
      +    "corner",
      +    "minDiameter"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / holes / required
      Previous value: -[
      -  "max",
      -  "diameterMm"
      -]New value: +[
      +  "max",
      +  "diameterMm",
      +  "marginFactors"
      +]
    • addedOutput schema / properties / switchAvailable
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "currency",
      -  "shapes",
      -  "edges",
      -  "tempering",
      -  "backlitLed",
      -  "frontlitLed",
      -  "heatingMat",
      -  "switches",
      -  "switchRequiresLed",
      -  "holes",
      -  "productNote",
      -  "frame",
      -  "safetyFilm"
      -]New value: +[
      +  "currency",
      +  "shapes",
      +  "edges",
      +  "tempering",
      +  "backlitLed",
      +  "frontlitLed",
      +  "heatingMat",
      +  "switches",
      +  "switchAvailable",
      +  "switchRequiresLed",
      +  "holes",
      +  "productNote",
      +  "frame",
      +  "safetyFilm"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / safetyFilm
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "currency": {
      +      "enum": [
      +        "PLN",
      +        "EUR"
      +      ],
      +      "type": "string"
      +    },
      +    "minBrutto": {
      +      "type": "number"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "pricePerM2Brutto": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "available",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "currency",
      -  "shapes",
      -  "edges",
      -  "tempering",
      -  "backlitLed",
      -  "frontlitLed",
      -  "heatingMat",
      -  "switches",
      -  "switchRequiresLed",
      -  "holes",
      -  "productNote",
      -  "frame"
      -]New value: +[
      +  "currency",
      +  "shapes",
      +  "edges",
      +  "tempering",
      +  "backlitLed",
      +  "frontlitLed",
      +  "heatingMat",
      +  "switches",
      +  "switchRequiresLed",
      +  "holes",
      +  "productNote",
      +  "frame",
      +  "safetyFilm"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / frame
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "currency": {
      +      "enum": [
      +        "PLN",
      +        "EUR"
      +      ],
      +      "type": "string"
      +    },
      +    "extraProductionDays": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "materials": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "priceFrom": {
      +      "type": "number"
      +    },
      +    "shapes": {
      +      "items": {
      +        "enum": [
      +          "rectangle",
      +          "square",
      +          "circle",
      +          "capsule",
      +          "trapezoid-left",
      +          "trapezoid-right",
      +          "water-drop",
      +          "arch",
      +          "oval",
      +          "octagon"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "sizeCm": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "maxLong": {
      +          "type": "number"
      +        },
      +        "maxShort": {
      +          "type": "number"
      +        },
      +        "min": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "min",
      +        "maxShort",
      +        "maxLong"
      +      ],
      +      "type": "object"
      +    },
      +    "type": {
      +      "enum": [
      +        "alu-black-matte"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "available",
      +    "type",
      +    "shapes",
      +    "materials",
      +    "sizeCm",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "currency",
      -  "shapes",
      -  "edges",
      -  "tempering",
      -  "backlitLed",
      -  "frontlitLed",
      -  "heatingMat",
      -  "switches",
      -  "switchRequiresLed",
      -  "holes",
      -  "productNote"
      -]New value: +[
      +  "currency",
      +  "shapes",
      +  "edges",
      +  "tempering",
      +  "backlitLed",
      +  "frontlitLed",
      +  "heatingMat",
      +  "switches",
      +  "switchRequiresLed",
      +  "holes",
      +  "productNote",
      +  "frame"
      +]
  4. Changed2 schema fields changed
    • addedOutput schema / properties / productNote
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "currency",
      -  "shapes",
      -  "edges",
      -  "tempering",
      -  "backlitLed",
      -  "frontlitLed",
      -  "heatingMat",
      -  "switches",
      -  "switchRequiresLed",
      -  "holes"
      -]New value: +[
      +  "currency",
      +  "shapes",
      +  "edges",
      +  "tempering",
      +  "backlitLed",
      +  "frontlitLed",
      +  "heatingMat",
      +  "switches",
      +  "switchRequiresLed",
      +  "holes",
      +  "productNote"
      +]
  5. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value beyond that: prices are gross and prefixed with "+", and paid options must not be surfaced unless the customer requests them — a non-obvious behavioural rule an agent would otherwise get wrong.

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

Conciseness3/5

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

The purpose is front-loaded in the first clause, and both sentences carry real information. However, the first sentence is a single sprawling enumeration with nested parentheses, which makes it harder to scan than a short list would be.

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 an output schema present, return-shape detail is not needed, and the description still tells the agent what categories come back and how pricing is presented. All three optional parameters are enum- or schema-documented, so the only minor gap is that it does not explain how locale changes the result (though the schema does).

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 shape, locale and materialSlug are all documented in the schema itself, including their filtering effects. The description echoes those effects ("frontlit patterns per shape", "size limits") without adding syntax, defaults, or edge-case behaviour, 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?

The description gives a concrete verb ("Lists") and enumerates the exact resource families returned: shapes, edges, tempering, LED lighting, heating mat, switches, holes, plus paid-option prices. That is far more specific than a restatement of the name. It stops short of naming how it differs from list_materials, which also deals with materials (this tool only adds size limits for a given material).

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: an agent can infer this is the catalogue/discovery call before quoting, but the description never says when to call it versus list_materials, quote_mirror, or create_design_link. The one explicit rule, "Paid options are only added when the customer asks," is a business constraint rather than a routing guideline.

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