Skip to main content
Glama

Compare two recipes

compare_recipes
Read-onlyIdempotent

Compares two glaze recipes side by side: for each, its recipe in percent, key unity formula figures, flux ratio (R2O against RO), silica to alumina, calculated expansion, place on Stull's chart (stull), the names of the limit cautions it has and, with a firing, whether its chemistry fits that firing (coneFit verdict); then what changes from A to B oxide by oxide (differences), which materials are in A only, in B only, or in both, with their percents, and a summary of the differences that matter (flux ratio, silica to alumina, silica, alumina and boron, expansion with fitFlag when the two differ by 0.3 x10^-6 per °C or more, so they may fit the same clay differently, Stull regions, the cautions only one side has, and coneFit). Give each recipe as lines (a, b) or, signed in to Glazecalc, one of your own saved recipes by its id from list_recipes (aRecipeId, bRecipeId): one or the other for each side. It is the same comparison blend_recipes makes with two recipes and two steps, under a name that is easy to find. Give base materials only, no colorants. This is a calculation from published figures, not a test result: fire both, and the tiles decide.

Input Schema

NameRequiredDescriptionDefault
aNoRecipe A as lines (or give aRecipeId instead).
bNoRecipe B as lines (or give bRecipeId instead).
firingNoThe firing, as a cone or a temperature. Leave it out when it is not known. From cone 12 up (about 1320 °C) no published glaze limits reach, so the limits are not checked there; the cone check judges cone 06 to 10 only.
labelsNoNames for A and B, two of them, such as ["Original", "With whiting"], echoed back.
languageNoThe language for any sentences in the answer, as a BCP 47 tag such as "en", "de" or "ja". Languages Glazecalc does not offer are answered in English.
limitSetNoThe limits to check against, as check_limits takes it: "glazecalc" (the default) or "hesselberth-roy".
aRecipeIdNoRecipe A as one of your own saved recipes, by its id from list_recipes (signed in only), instead of a.
bRecipeIdNoRecipe B as one of your own saved recipes, by its id from list_recipes (signed in only), instead of b.

Output Schema

NameRequiredDescriptionDefault
aYes
bYes
noteYes
celsiusNo
summaryYes
limitSetNo
limitBandNo
materialsYes
limitsNoteNo
differencesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / a / description
      Previous value: -"Recipe A."New value: +"Recipe A as lines (or give aRecipeId instead)."
    • addedInput schema / properties / aRecipeId
      Added value: +{
      +  "description": "Recipe A as one of your own saved recipes, by its id from list_recipes (signed in only), instead of a.",
      +  "maxLength": 40,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / b / description
      Previous value: -"Recipe B."New value: +"Recipe B as lines (or give bRecipeId instead)."
    • addedInput schema / properties / bRecipeId
      Added value: +{
      +  "description": "Recipe B as one of your own saved recipes, by its id from list_recipes (signed in only), instead of b.",
      +  "maxLength": 40,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "a",
      -  "b"
      -]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "a": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "cautions": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "coneFit": {
      +          "type": "string"
      +        },
      +        "expansion": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fluxRatio": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "R2O": {
      +                  "type": "number"
      +                },
      +                "RO": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "R2O",
      +                "RO"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "label": {
      +          "type": "string"
      +        },
      +        "problem": {
      +          "type": "string"
      +        },
      +        "recipe": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "material": {
      +                "type": "string"
      +              },
      +              "percent": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "material",
      +              "percent"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "recipeId": {
      +          "type": "string"
      +        },
      +        "silicaToAlumina": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "stull": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "crazed": {
      +                  "type": "boolean"
      +                },
      +                "region": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "region",
      +                "crazed"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "unity": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "Al2O3": {
      +              "type": "number"
      +            },
      +            "B2O3": {
      +              "type": "number"
      +            },
      +            "SiO2": {
      +              "type": "number"
      +            },
      +            "fluxes": {
      +              "additionalProperties": {
      +                "type": "number"
      +              },
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "SiO2",
      +            "Al2O3",
      +            "B2O3",
      +            "fluxes"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "label",
      +        "recipe"
      +      ],
      +      "type": "object"
      +    },
      +    "b": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "cautions": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "coneFit": {
      +          "type": "string"
      +        },
      +        "expansion": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fluxRatio": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "R2O": {
      +                  "type": "number"
      +                },
      +                "RO": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "R2O",
      +                "RO"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "label": {
      +          "type": "string"
      +        },
      +        "problem": {
      +          "type": "string"
      +        },
      +        "recipe": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "material": {
      +                "type": "string"
      +              },
      +              "percent": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "material",
      +              "percent"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "recipeId": {
      +          "type": "string"
      +        },
      +        "silicaToAlumina": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "stull": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "crazed": {
      +                  "type": "boolean"
      +                },
      +                "region": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "region",
      +                "crazed"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "unity": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "Al2O3": {
      +              "type": "number"
      +            },
      +            "B2O3": {
      +              "type": "number"
      +            },
      +            "SiO2": {
      +              "type": "number"
      +            },
      +            "fluxes": {
      +              "additionalProperties": {
      +                "type": "number"
      +              },
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "SiO2",
      +            "Al2O3",
      +            "B2O3",
      +            "fluxes"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "label",
      +        "recipe"
      +      ],
      +      "type": "object"
      +    },
      +    "celsius": {
      +      "type": "number"
      +    },
      +    "differences": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "a": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "b": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "change": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "what": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "what",
      +          "a",
      +          "b",
      +          "change"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "limitBand": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "limitSet": {
      +      "type": "string"
      +    },
      +    "limitsNote": {
      +      "type": "string"
      +    },
      +    "materials": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "inBoth": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "a": {
      +                "type": "number"
      +              },
      +              "b": {
      +                "type": "number"
      +              },
      +              "material": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "material",
      +              "a",
      +              "b"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "onlyInA": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "material": {
      +                "type": "string"
      +              },
      +              "percent": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "material",
      +              "percent"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "onlyInB": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "material": {
      +                "type": "string"
      +              },
      +              "percent": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "material",
      +              "percent"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "onlyInA",
      +        "onlyInB",
      +        "inBoth"
      +      ],
      +      "type": "object"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "summary": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "Al2O3": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change"
      +          ],
      +          "type": "object"
      +        },
      +        "B2O3": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change"
      +          ],
      +          "type": "object"
      +        },
      +        "SiO2": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change"
      +          ],
      +          "type": "object"
      +        },
      +        "cautions": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "onlyA": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "onlyB": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "onlyA",
      +            "onlyB"
      +          ],
      +          "type": "object"
      +        },
      +        "coneFit": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b"
      +          ],
      +          "type": "object"
      +        },
      +        "expansion": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "fitFlag": {
      +              "type": "boolean"
      +            },
      +            "fitNote": {
      +              "type": "string"
      +            },
      +            "fitThreshold": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change",
      +            "fitFlag",
      +            "fitThreshold"
      +          ],
      +          "type": "object"
      +        },
      +        "fluxRatio": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "R2O": {
      +                      "type": "number"
      +                    },
      +                    "RO": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "R2O",
      +                    "RO"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "b": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "R2O": {
      +                      "type": "number"
      +                    },
      +                    "RO": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "R2O",
      +                    "RO"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change"
      +          ],
      +          "type": "object"
      +        },
      +        "silicaToAlumina": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "change": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b",
      +            "change"
      +          ],
      +          "type": "object"
      +        },
      +        "stull": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "a": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "b": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "a",
      +            "b"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "fluxRatio",
      +        "silicaToAlumina",
      +        "SiO2",
      +        "Al2O3",
      +        "B2O3",
      +        "expansion",
      +        "stull",
      +        "cautions"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "a",
      +    "b",
      +    "differences",
      +    "materials",
      +    "summary",
      +    "note"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the read-only, idempotent safety profile, and the description goes well beyond them: limits are not checked from cone 12 up, the cone check judges only cone 06 to 10, saved-recipe ids require being signed in, unsupported languages fall back to English, labels are echoed back, and the result is a calculation rather than a fired test. Those are exactly the behavioral caveats an agent needs before trusting or relaying the output.

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?

Purpose is front-loaded in the first clause, which is good, but the description then becomes one enormous sentence enumerating return fields down to the 0.3 x10^-6 per °C expansion threshold. Since an output schema exists, much of that enumeration is redundant and makes the definition hard to scan; the closing note about firing tiles is characterful but adds length without operational value.

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 and 100% parameter coverage, the definition still supplies the things structured fields cannot: input-mode exclusivity, signed-in requirements, limit-checking and cone-verdict boundaries, and the calculation-versus-test caveat. A reader has everything needed to call it correctly; only a brief note on result size or cost would be 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 the baseline is 3, but the description adds meaning the schema does not: a and aRecipeId are alternatives for the same side ("one or the other for each side"), and limitSet is defined by reference to how check_limits takes it. These are useful disambiguations rather than restatements.

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 opening sentence gives a specific verb and resource (compares two glaze recipes side by side) and immediately enumerates the comparison axes: unity formula, flux ratio, silica:alumina, expansion, Stull placement, cautions, coneFit. It also explicitly distinguishes itself from the sibling blend_recipes, so an agent can separate it from analyze_recipe or check_limits without opening any 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 states the two accepted input modes per side (raw lines via a/b, or saved recipe ids from list_recipes when signed in) and explicitly positions itself as the same computation as blend_recipes "under a name that is easy to find", which is real routing guidance. It also constrains scope (base materials only, no colorants). What it lacks is an explicit when-not-to-use, e.g. pointing at check_limits or analyze_recipe for single-recipe or limits-only work.

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.