addrbookFor publishers
← The evidence ledger

Evidence row 539113

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 0b17174c-2a18-4b8d-b1c4-82d3a082e671
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
45cbe9af5ed57521769fc0ad6fddba2d7079e8ce8154644668ef43449c7a3738
Leaf
0x4d74bd31f42a081623d260a67767d39681b11fec47aae7564855b636c00e6de1

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "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.",
      "inputSchema": {
        "properties": {
          "mc": {
            "description": "Minecraft 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.",
            "type": "string"
          },
          "mod_ids": {
            "description": "Lowercase mod ids as the loader knows them, e.g. [\"sodium\", \"iris\", \"create\"]. The ids of a mods folder's jars work.",
            "items": {
              "type": "string"
            },
            "maxItems": 300,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "mod_ids"
        ],
        "type": "object"
      },
      "name": "check_mod_list"
    },
    {
      "description": "Whether two Minecraft mods ran together in the Modkeel lab, clashed, or were never tested together. Use it for \"can I use X with Y?\" or to check two suspects from diagnose_crash; for one mod's whole record, use get_mod_runs. Takes two mod ids in any order (from names, call search_mods first). Unknown ids are not an error: the verdict is untested, meaning no lab run, never a known conflict. With mc, only runs on that version count. clash wins if any run clashed. Returns the verdict and the runs behind it.",
      "inputSchema": {
        "properties": {
          "mc": {
            "description": "Minecraft 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.",
            "type": "string"
          },
          "mod_a": {
            "description": "First mod. Lowercase mod id as the loader knows it (the Modrinth/Fabric/NeoForge id, e.g. sodium, create, entityculling), not the display name. Unsure of the id? Call search_mods first.",
            "type": "string"
          },
          "mod_b": {
            "description": "Second mod, same format, e.g. iris.",
            "type": "string"
          }
        },
        "required": [
          "mod_a",
          "mod_b"
        ],
        "type": "object"
      },
      "name": "check_mod_pair"
    },
    {
      "description": "Find the mod most likely behind a modded Minecraft crash (Fabric, NeoForge, Forge). Use it whenever the user shares a crash report or latest.log or says the game will not start. It is the only tool that reads logs, and it adds what the file does not hold: it checks every installed mod against the Modkeel lab (pairs in the pack that clashed, jars that crashed on that Minecraft version), says how many other players hit the same crash and which fix worked for them (when 10+ did), counts lab runs of each suspect, and ranks suspects by evidence (mixin, trace, missing class) with a confidence level (NONE when nothing points at a mod). It also returns a fix guide and, when the log names the Minecraft version and loader, the build to install for the suspect and for every installed mod the lab saw crash on that version, so no follow-up call is needed. Pass the whole file as text, unedited: trimming it loses the mod list; or, when the user gave a link to a paste (mclo.gs, pastebin.com, paste.ee, gist.github.com, modkeel.com), pass url instead and Modkeel fetches it. Text with no crash in it comes back as an error to fix and retry. Up to 4 MB; read and dropped, never stored.",
      "inputSchema": {
        "properties": {
          "text": {
            "description": "The full crash report (crash-reports/crash-*.txt, from '---- Minecraft Crash Report ----') or logs/latest.log, unedited. Up to 4 MB. Give text or url.",
            "type": "string"
          },
          "url": {
            "description": "A link to the crash report or log on a paste site (mclo.gs, pastebin.com, paste.ee, gist.github.com, modkeel.com), e.g. https://mclo.gs/abc123. Modkeel downloads the raw text itself. Give text or url.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "diagnose_crash"
    },
    {
      "description": "The exact file to install for one mod on one Minecraft version and loader, with its download link. Use it for \"where do I get X for 26.2 Fabric?\", after diagnose_crash names a mod that needs another build, or when updating a pack to a new version. Checks, best first: the author's own build on Modrinth (status official: file, required mods, and lab runs of that exact file), a community port the Modkeel lab verified in one of its modpacks (port), the author's file for an earlier version that the lab ran on this one and saw start (older_build), a port the lab built from its public source and saw start but does not host (build_from_source: the repo, branch and how to build it), the loaders the author does build for that version (other_loader), else none; when that older file crashed in the lab instead, older_build says so and next_step warns against it. next_step says what the user can do in each case. For what the mod is, use get_mod_info; for whether it ran in the lab, get_mod_runs. Takes the mod's name as the user wrote it (\"YUNG's Better Mineshafts\"), a lab mod id or a Modrinth slug: no search_mods call needed first. Asks Modrinth live (two to five calls, nothing cached), so it can fail when Modrinth is down: retry.",
      "inputSchema": {
        "properties": {
          "loader": {
            "description": "Mod loader of the instance: fabric, neoforge, forge or quilt.",
            "enum": [
              "fabric",
              "neoforge",
              "forge",
              "quilt"
            ],
            "type": "string"
          },
          "mc": {
            "description": "Minecraft version to install on, exactly, e.g. 1.21.1 or 26.2.",
            "type": "string"
          },
          "mod_id": {
            "description": "The mod's name as the user wrote it (e.g. Entity Culling), a lab mod id (e.g. sodium, fabric_api) or a Modrinth slug (e.g. fabric-api).",
            "type": "string"
          }
        },
        "required": [
          "mod_id",
          "mc",
          "loader"
        ],
        "type": "object"
      },
      "name": "find_mod_download"
    },
    {
      "description": "What one Minecraft mod is and where to get it: its Modrinth page (title, summary, categories, loaders, the Minecraft releases its author lists, client/server side, licence, downloads, source and issue links) next to a short Modkeel lab record (tested versions, run and pair counts). Use it for \"what does this mod do?\", \"is it client-only?\", \"where do I download it?\" or to link a suspect from diagnose_crash. The versions here are what the author declares; for what the lab saw run or crash, use get_mod_runs, and for two mods together, check_mod_pair. Takes a lab mod id or a Modrinth slug; from a name, call search_mods first. The project is matched by the SHA-1 of a jar the lab ran (source: jar_hash, exact), else by slug (source: slug); a mod on neither returns found: false, not an error. Asks Modrinth live on each call (nothing cached here), so it can fail when Modrinth is down: retry later.",
      "inputSchema": {
        "properties": {
          "mod_id": {
            "description": "Lab mod id (e.g. fabric_api, ferritecore) or Modrinth slug (e.g. fabric-api, sodium-extra), lowercase. Unsure? Call search_mods first.",
            "type": "string"
          }
        },
        "required": [
          "mod_id"
        ],
        "type": "object"
      },
      "name": "get_mod_info"
    },
    {
      "description": "Everything the Modkeel lab saw one Minecraft mod do: each Minecraft version where it ran on a server or a client, or crashed, and every mod it ran with or clashed with. Use it for \"does this mod work on 1.21.1?\", \"which versions was it tested on?\" or to check a suspect from diagnose_crash. For one specific pair of mods, check_mod_pair gives a direct verdict; for what the mod is and where to get it, get_mod_info. Takes a mod id; from a name, call search_mods first. A mod the lab never ran returns tested: false with empty lists, not an error. Returns every matching row, unpaginated: a few dozen at most per mod.",
      "inputSchema": {
        "properties": {
          "mc": {
            "description": "Minecraft 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.",
            "type": "string"
          },
          "mod_id": {
            "description": "Lowercase mod id as the loader knows it (the Modrinth/Fabric/NeoForge id, e.g. sodium, create, entityculling), not the display name. Unsure of the id? Call search_mods first.",
            "type": "string"
          }
        },
        "required": [
          "mod_id"
        ],
        "type": "object"
      },
      "name": "get_mod_runs"
    },
    {
      "description": "Turn a mod's display name or part of its id into the exact mod id the other lab tools take, and see which mods the Modkeel lab has data on. Use it first when you only have a name (\"Entity Culling\", \"Sodium\") or are unsure of the id; skip it when you already have the id. To download a mod, call find_mod_download with its name instead: it finds the mod itself. Matching ignores case, spaces and punctuation; best match first, then the mods with more lab data. An empty query lists every mod the lab tested. Returns each mod's id, the Minecraft versions it was tested on and how many runs and pairs it has, plus the total number of matches. No match means the lab has no data on that mod, not that it is broken (get_mod_info still finds it on Modrinth by slug). mc keeps only mods with a run on that exact version; limit caps the list, and total says how many matched.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 25,
            "description": "How many mods to return, 1 to 100. Default 25.",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "mc": {
            "description": "Minecraft 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.",
            "type": "string"
          },
          "query": {
            "description": "Mod name or part of its id, e.g. \"Entity Culling\", \"sod\" or \"create\". Empty or omitted: list every mod the lab tested.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_mods"
    }
  ]
}

What the leaf hashes

{"body":"45cbe9af5ed57521769fc0ad6fddba2d7079e8ce8154644668ef43449c7a3738","id":539113,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793129497188916,"prev":null,"subject":"0b17174c-2a18-4b8d-b1c4-82d3a082e671","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0x4d742a97b1520f2aa84d2399bce7ecaac4019c3b75c55779b158a0145514ac4e
  2. 0xb0b7dccf24abff309c3c49b699064ed7b7248324a365bc9eb72b34627e2d5d98
  3. 0xc61536a1743b34d0d06192a6cfe8de1c113da397b67790b8156019d03dbba73d
  4. 0xab8cb871988ed9b7fe468126e02d64c37e81bda077b01f237b4acfea846916ff
  5. 0x95def35d63c8918ed8e1dc6429c24c46615aac4bf6d164682d122b66f7e5a320
  6. 0x2b0825d6a6fb20e01728d52e01fff7ae485dd994c60074ca16e344f814b8292d
  7. 0x68d412e2605a191f9741d3ae562cb3c358c8606dde4777f956894c85e738c362
  8. 0xd5fb88bcb4f3469df69f13ea2443d2b816af5807943e3ce43a83553756eba2f4
  9. 0x5022a006bff45ceacd62004378050590fb8590ea3aec8689f467d31f40fa163b
  10. 0x913c69c9ce597ae69f8c91e4f0aa01b9327ece7dbec1e3e6473754028a34c109
  11. 0x699e1831216ceb5d0324397f8f4f58989765f950328c8adcbcb3a202d688993c
  12. 0xf9b21ec258212225fc012a1ed6399d0ec608e930f4423d2badb8be79550861ef
  13. 0x797da99476c7ebaa971607ae725e5e240b79de9e49d28859b94de107c850aaab
  14. 0x9ea0c6a53f80a30b6f13671109f98a000cf98e581875129f4be4b57131d06364
  15. 0xb78ea6a255dd06e2f402a1a733bca392fa6243920bcba95e8b80bdfc6ce5f553
  16. 0x3ed50f053eca72dfd3a9d45a11935240bfe691e57835c367ddebe2cbc49efe9d
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON