Skip to main content
Glama

Do these mods work together

check_mod_list
Read-onlyIdempotent

A whole mod list or modpack checked against the Modkeel lab at once: every pair in it that clashed, the mods whose jar crashed, the pairs that ran together, and the mods the lab has no data on. Use it for "will these mods work together?" or before updating a pack; for two mods, check_mod_pair is enough. Takes up to 300 mod ids (from names, search_mods first; unknown ids just land in untested_mods). With mc, only runs on that version count, and each crashed mod also gets the author's current build for it, since the crash is about the exact file the lab ran. verdict is problems_found when anything clashed or crashed, else no_known_problem, which is not a guarantee: pairs.tested out of pairs.total says how much of the list the lab covered.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mcNoMinecraft version to narrow the answer to, e.g. 1.21.1, 1.20.1 or 26.2. Omit it to get every version the lab ran; with it, only runs on exactly that version count.
mod_idsYesLowercase mod ids as the loader knows them, e.g. ["sodium", "iris", "create"]. The ids of a mods folder's jars work.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
mcNo
dataYesSnapshot date and license of the lab data; attribute when quoting.
modsYesDistinct ids checked.
pairsYes
clashesYesPairs in the list that clashed in a lab run.
crashedYesMods whose jar crashed in a lab run: that exact file (runs[].file).
verdictYes
next_stepNoWith mc and crashed mods: what to install or leave out, for the player.
ran_togetherNoPairs in the list seen working together.
untested_modsYesNo lab data: unknown, not broken.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedOutput schema / properties / crashed / description
      Previous value: -"Mods whose jar crashed in a lab run."New value: +"Mods whose jar crashed in a lab run: that exact file (runs[].file)."
    • addedOutput schema / properties / crashed / items / properties / current
      Added value: +{
      +  "description": "With mc: the author's current build for it. newer_build: another file than the one that crashed, not run by the lab yet.",
      +  "properties": {
      +    "filename": {
      +      "type": "string"
      +    },
      +    "published": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "crashed",
      +        "newer_build"
      +      ],
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / crashed / items / properties / next_step
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / crashed / items / properties / runs / items / properties / file
      Added value: +{
      +  "description": "The jar that crashed.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / crashed / items / properties / runs / items / properties / loader
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / crashed / items / properties / runs / items / properties / version
      Added value: +{
      +  "description": "That jar's own version.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "description": "With mc and crashed mods: what to install or leave out, for the player.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this read-only, idempotent and non-destructive, so the safety profile is covered; the description goes further with the 300-id cap, the exact-version semantics of mc, the fact that crashed mods return the author's current build, and the verdict/coverage caveat (pairs.tested out of pairs.total, no_known_problem is not a guarantee). That is meaningful behavioral context beyond 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?

Front-loaded with the core purpose and the sibling routing, then dense supporting detail; nothing is clearly filler. It is packed close to the limit, running several ideas together per sentence, which costs a bit of scanability but not substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers invocation limits, id sourcing, version scoping, output bucket names, verdict semantics and the coverage caveat, which is everything needed to call and interpret this tool; since an output schema exists, no further return-value documentation is owed.

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 description coverage is 100%, so the baseline is 3, but the description adds genuine meaning: mod_ids are lowercase loader ids derived from mod names or jar filenames, and unrecognized ids degrade gracefully into untested_mods rather than erroring. The mc parameter's narrowing semantics are also restated usefully, though partly duplicating the schema text.

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?

Names a specific verb+resource (check a whole mod list/modpack against the Modkeel lab) and enumerates the four result buckets: clashed pairs, crashed jars, pairs that ran together, and untested mods. It explicitly distinguishes itself from the sibling check_mod_pair, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit triggers ("will these mods work together?", before updating a pack) and a named alternative with the condition that selects it ("for two mods, check_mod_pair is enough"). It also prescribes a prerequisite workflow: resolve names via search_mods first.

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