Skip to main content
Glama
paulomanrique

mesen-for-ai

mesen-for-ai

mesen-for-ai is an MCP server that lets AI agents drive Mesen headlessly for console reverse engineering and game conversion work.

It does not port or vendor Mesen. It launches an existing Mesen/MesenCE binary, runs bridge.lua inside the emulator, and exposes the debugger-facing Lua API over MCP JSON-RPC on stdio.

If you are an LLM, read this first: AGENTS.md.

Supported Systems

Use this project for Mesen systems where the required debugger surface is available:

  • SNES / Super Nintendo

  • NES / Famicom

  • PC Engine / TurboGrafx-16, including CD-ROM² cue sheets

  • Game Boy Advance

The Code/Data Logger is available for SNES PRG ROM, NES PRG/CHR ROM, PC Engine PRG ROM, and GBA PRG ROM. Mesen emulates more systems, but this project does not promise CDL coverage for Master System, Game Boy, or WonderSwan because Mesen does not register those CDL loggers.

Related MCP server: mcp-mgba

Requirements

  • Python 3.11 or newer.

  • xvfb-run on Linux for headless Mesen execution.

  • A Mesen or MesenCE build with --testrunner support and Lua socket support.

  • Set MESEN_BIN to the Mesen executable you want to use.

Example:

export MESEN_BIN=/path/to/Mesen

The local wrapper has a development default for MESEN_BIN, but public use should set the variable explicitly.

PC Engine CD sessions also require a user-supplied System Card 3 image. The runner copies it into the isolated session home and Mesen verifies its hash:

export MESEN_PCECD_FIRMWARE=/path/to/syscard3.pce

Run the MCP Daemon

From a checkout:

PYTHONPATH=src python3 -m mesen_mcp.daemon

The daemon speaks MCP-style JSON-RPC 2.0 over its own stdio. Mesen stdout and stderr are not part of the MCP protocol; Mesen talks to the daemon through a per-session TCP socket opened by bridge.lua.

Headless Runner

You can run a Lua testrunner script directly:

MESEN_BIN=/path/to/Mesen ./scripts/run_headless.sh <rom> <script.lua>

The runner creates an isolated Mesen home and writes deterministic settings:

  • Lua IO/OS access enabled.

  • Lua network access enabled for the socket bridge.

  • deterministic RAM power-on state for SNES, NES, PC Engine, GBA, and Game Boy.

  • a standard two-button controller on PC Engine port 1.

  • NES mapper and CPU/PPU alignment randomization disabled.

Set MESEN_PCE_TURBOTAP=1 when a PC Engine verification needs two players. The isolated session then uses a TurboTap with standard two-button controllers on subports 0 and 1; input.set addresses them with port=0, subport=0/1. MesenCE 2.2.1 also needs patches/mesence-lua-input-subport.patch: its LuaApi::SetInput first requires three parameters and then grows the Lua stack to four, shifting the values read by LuaCallHelper. Removing that second stack adjustment makes the requested TurboTap subport reach the input manager.

For a deterministic RAM smoke test:

MESEN_BIN=/path/to/Mesen MESEN_MCP_FRAMES=60 MESEN_MCP_DUMP_PATH=/tmp/ram-a.bin \
  ./scripts/run_headless.sh /path/to/game.sfc scripts/dump_ram.lua
MESEN_BIN=/path/to/Mesen MESEN_MCP_FRAMES=60 MESEN_MCP_DUMP_PATH=/tmp/ram-b.bin \
  ./scripts/run_headless.sh /path/to/game.sfc scripts/dump_ram.lua
cmp /tmp/ram-a.bin /tmp/ram-b.bin

MCP Tools

Implemented tools:

  • session.load_rom, session.info, session.reset, session.shutdown

  • run.step_frames, run.status

  • input.set, input.get

  • video.export_frame

  • cpu.registers, cpu.read_memory, cpu.write_memory

  • console.state for the held machine's complete serialized scalar state, including NES PPU VideoRamAddr, TmpVideoRamAddr, ScrollX, and WriteToggle

  • watch.create, watch.list, watch.delete

  • breakpoint.create, breakpoint.list, breakpoint.delete

  • cdl.start, cdl.stop, cdl.get, cdl.export

  • trace.start, trace.stop, trace.list

session.load_rom accepts normal ROM files and ZIP archives. For ZIPs, the daemon extracts the single supported ROM member into the session temporary directory, launches Mesen against that extracted file, and removes it on session.shutdown.

Mesen accepts PC Engine CD media as a .cue plus its referenced track files. For those sessions, pceCdromRam exposes the CD unit RAM and pceCardRam exposes the 192 KiB Super CD-ROM² RAM supplied by System Card 3, in addition to the usual pceMemory, pceWorkRam, and pcePrgRom aliases. pceArcadeCardRam separately exposes the 2 MiB Arcade Card expansion RAM when that hardware is active. pceAdpcmRam, pceVideoRam, pceSpriteRam, and pcePaletteRam expose the remaining asset-bearing memories needed to verify audio and graphics extraction. Disc images and System Card firmware remain private inputs and are never copied into this repository.

Start deterministic PC Engine CD evidence from a new session and advance with reset=false. In the source-built MesenCE version validated here, calling emu.reset() from the bridge after a cue sheet has started closes the testrunner instead of returning a frame response. A fresh isolated session supplies the cold-boot boundary without that reset call.

PC Engine CD READ(6) compatibility patch

MesenCE commit 20ba206cef5ba207c21203176d02cb9f43dda9fb treats a zero READ(6) transfer-length byte as an empty request. SCSI READ(6) defines that byte as 256 sectors, and commercial PC Engine CD software can depend on it. Apply patches/mesence-pce-read6-zero-length.patch to that revision before building:

git apply /path/to/mesen-for-ai/patches/mesence-pce-read6-zero-length.patch
git apply /path/to/mesen-for-ai/patches/mesence-lua-input-subport.patch
make core -j4
make ui

The patch widens the saved sector counter to 16 bits and maps command byte zero to 0x100. It was validated with the Japanese PC Engine CD release of World Heroes 2: command 08 00 22 78 00 00 transfers sectors 8824 through 9079 and allows the original post-versus loader to reach CPU $C15B. No game bytes or firmware are included here.

For deterministic evidence runs, call run.step_frames with reset=true. That makes reset plus N frames one bridge operation and avoids variable frames between separate MCP calls. A newly loaded ROM is held before its first frame starts until that explicit run request, so watches and CDL can be armed without recording an uncontrolled pre-reset interval.

input.set latches named controller buttons and applies them from Mesen's inputPolled callback, which is the only safe point for scripted input. Change the latch while held at a frame boundary, then advance the intended number of frames. video.export_frame writes the held rendered frame as binary P6 RGB.

Code/Data Logger Semantics

Mesen's Lua API exposes getCdlData; it does not expose a logger on/off switch. cdl.start and cdl.stop are MCP-side window markers only. Collection is continuous inside Mesen.

The Lua getCdlData table is zero-indexed even though ordinary Lua arrays are usually one-indexed. The bridge preserves physical ROM offset zero as JSON element zero; do not add an index adjustment in callers.

cdl.export returns coveredBytes and memorySize. Equality means the exported map has one decoded record for every byte in that ROM region. It does not mean the run executed or read the whole ROM.

The evidence that CDL is live is growth in codeBytes, dataBytes, and summaryRanges when a deterministic run is driven for longer or through more gameplay.

NES CHR is the platform-specific exception to the generic flag names. Mesen's source defines bit 0x01 as NesChrDrawn for CHR ROM, not CPU Code. Inline/exported CHR records therefore expose drawn, summaries classify those ranges as drawn, and export counts report drawnBytes; codeBytes and dataBytes remain zero for CHR.

Skills

The repo ships Codex/Codex-compatible skills in skills/:

  • skills/mesen-emulator - load ROMs, manage session handles, step frames, read/write memory, and inspect CPU registers.

  • skills/mesen-debug - answer debugging questions with watches, breakpoints, traces, registers, and memory inspection.

  • skills/mesen-codedata - export and interpret Mesen Code/Data Logger maps.

Install them by symlinking or copying the skill directories into your agent's skill directory. If the skills are installed outside this checkout, set MESEN_FOR_AI_REPO to the checkout root so scripts/mesen_client.py can find the daemon.

Validation

Unit and static smoke tests:

python3 -m py_compile src/mesen_mcp/*.py scripts/test_mcpd.py
PYTHONPATH=src python3 -m unittest discover -s tests -v

Real emulator validation requires a private test ROM supplied by the user:

MESEN_BIN=/path/to/Mesen PYTHONPATH=src scripts/test_mcpd.py --rom /path/to/test-rom.zip --frames 60

Do not commit, upload, or redistribute ROM, BIOS, firmware, disc-image, or other copyrighted game material.

License

mesen-for-ai is licensed under GPL-3.0-only. See LICENSE.

Mesen itself is an upstream GPL-3.0 emulator and is not vendored in this repository. The wrapper code in this repository is original, but bridge.lua runs inside the Mesen process and calls Mesen's Lua API directly. The conservative licensing position is therefore to publish the wrapper under GPL-3.0-only as well.

Available Tools

22 tools
breakpoint.createD

breakpoint.create

ParametersJSON Schema
NameRequiredDescriptionDefault
accessNo
lengthNo
addressYes
cpuTypeNo
sessionYes
memoryTypeYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are present, and the description provides no behavioral disclosure. It does not mention side effects, permissions, or any operational details that would help an agent understand the tool's impact.

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

Conciseness2/5

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

While very short, the description is under-specified rather than concise. It consists solely of the tool name, providing no substance or structure to aid an agent.

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

Completeness1/5

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

With six parameters, no annotations, and no output schema, this description is completely inadequate for the tool's complexity. There is no context to guide invocation or understanding of expected behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no parameter information. All six parameters (access, length, address, cpuType, session, memoryType) are left entirely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives like breakpoint.list, breakpoint.delete, or watch.create. The description gives no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

breakpoint.deleteD

breakpoint.delete

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
sessionYes

TDQS

D1/5.0
Behavior1/5

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

No annotations are provided, and the description discloses no behavioral traits. It does not mention whether the operation is destructive, whether it requires specific prerequisites, or what side effects it might have. The agent receives no behavioral context.

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

Conciseness1/5

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

A two-word description that simply echoes the tool name is under-specification, not concise efficiency. It provides no information beyond what the name already conveys.

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

Completeness1/5

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

This is a delete operation with two required parameters, no annotations, and no output schema. The description is completely inadequate for an agent to select and invoke the tool correctly; it needs at least a basic purpose statement and parameter explanations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema defines 'handle' and 'session' but the description adds no meaning to either parameter. With 0% schema description coverage, the description must compensate but does not even mention the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus siblings like breakpoint.create or watch.delete. The description provides zero context about appropriate use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

breakpoint.listD

breakpoint.list

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

With no annotations and no descriptive content, the tool's behavior is entirely undisclosed. There is no mention of what the tool returns, whether it requires a valid session, or whether it has side effects.

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

Conciseness2/5

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

The description is technically short but under-specified to the point of emptiness. This is not conciseness; it is missing information entirely.

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

Completeness1/5

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

Even for a simple one-parameter tool with no output schema, the complete absence of context makes the description unusable. An agent cannot determine what 'list' means, what the parameter is for, or what to expect in response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema shows a single 'session' string parameter, but the description provides no explanation of its meaning. With 0% schema description coverage, the description fails entirely to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is given about when to use this tool versus alternatives. The description does not mention any use cases, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cdl.exportC

Export decoded Code/Data Logger bytes and contiguous range summaries for a supported ROM region.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
sessionYes
memoryTypeNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It does not disclose whether the operation is read-only, has side effects, or what the output format or destination is. 'Export' might imply a read operation, but the description does not confirm this or explain any consequences.

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

Conciseness5/5

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

The description is a single, direct sentence that communicates the core purpose without extraneous detail. It is appropriately sized and front-loaded with the action and object.

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

Completeness2/5

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

Given the absence of annotations, output schema, and parameter descriptions, the description is incomplete. It only states the high-level purpose but omits essential details about parameters, return values, and usage prerequisites, making it insufficient for reliable tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters (session, path, memoryType). The schema only lists them as strings, leaving the agent without any clue about their meaning or allowed values.

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 clearly states the tool exports decoded Code/Data Logger bytes and contiguous range summaries for a ROM region. This specific verb+resource distinguishes it from siblings like cdl.get, cdl.start, and cdl.stop.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as cdl.get, nor does it mention prerequisites like an active CDL session or a loaded ROM. The phrase 'supported ROM region' hints at constraints but without explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cdl.getC

Read decoded Code/Data Logger bytes from a supported ROM region.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNo
offsetNo
sessionYes
memoryTypeNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It conveys a read operation via 'Read', but fails to mention potential side effects, permission requirements, error conditions, or the format of returned bytes. The lack of detail about 'decoded' behavior and unsupported regions leaves significant ambiguity.

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 a single, clear sentence with no fluff, front-loading the core purpose. However, it is so terse that it omits valuable context about parameters and usage, making it slightly under-specified for the tool's complexity.

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

Completeness1/5

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

Given four parameters, no annotations, and no output schema, the description is severely incomplete. It does not explain return values, parameter details, prerequisites (such as needing a CDL session), or how the read behaves in edge cases, making it inadequate for effective tool use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate. It mentions no parameters' meaning, leaving the purpose of session, length, offset, and memoryType entirely undocumented. This is a critical gap for an agent to select and invoke parameters correctly.

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 uses a specific verb ('Read') and identifies the resource ('decoded Code/Data Logger bytes') and location ('supported ROM region'). This clearly distinguishes it from sibling tools like cdl.start, cdl.stop, and cdl.export, which manage or export CDL data.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as cdl.export or cpu.read_memory. There are no stated prerequisites (e.g., a started CDL session) or explicit exclusions, leaving the usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cdl.startB

CDL collection is continuous in Mesen Lua and cannot be turned on or off; this marks the session's intended coverage window.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

B3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It reveals an important non-obvious behavior: CDL collection is continuous and cannot be toggled, so this tool merely marks the intended coverage window rather than starting/stopping collection. This is valuable context beyond the schema, though it doesn't detail effects on existing data or how the session is stored.

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

Conciseness5/5

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

The description is a single sentence that packs useful behavioral information without extra fluff. It is concise and front-loaded with the key constraint about continuous collection.

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

Completeness2/5

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

The tool is relatively simple (one string parameter, no output schema), but the description leaves a major gap: it does not explain the `session` parameter or provide any usage scenario (e.g., 'call before running code to record CDL data'). Key context about the session identifier and workflow is missing, making the description incomplete despite the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'session' with 0% description coverage. The description mentions 'session's intended coverage window' but never explains what the `session` parameter should contain, what format it expects, or how it's used. The description fails to compensate for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explains that CDL collection is continuous and then says 'this marks the session's intended coverage window.' This gives a general sense that the tool marks the start of a coverage window, but it lacks a clear active verb like 'start' or 'begin.' It does distinguish from siblings by referencing the continuous nature and the window concept, but not strongly.

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?

The description implies you use this to mark when you want coverage to count, since collection is always on. However, it doesn't explicitly say when to use it, what precedes it (e.g., loading a ROM), or when to use cdl.stop instead. The guidance is contextual but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cdl.stopA

CDL collection is continuous in Mesen Lua and cannot be turned on or off; this marks the coverage window as no longer active.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosure. It reveals the crucial behavioral quirk that CDL collection cannot actually be turned off and that the tool only marks the window inactive. This adds significant context beyond the tool name, though it omits details like idempotence or side effects on already-stopped windows.

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

Conciseness5/5

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

The description is a single sentence that front-loads the most important caveat ('collection is continuous... cannot be turned on or off') before stating the actual behavior. No redundant words or filler.

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?

For a one-parameter tool with no output schema, the description adequately covers the essential behavioral nuance. It could optionally explain the coverage window concept or what happens after stopping, but given the tool's simplicity and the presence of sibling tools like cdl.start, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'session', is not mentioned in the description, and the schema provides only the type and required flag (0% schema description coverage). The parameter is simple and probably understandable from sibling tools, but the description does not compensate for the lack of schema coverage, so minimal credit is given.

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 clearly identifies the tool's action: it marks the CDL coverage window as no longer active. It also directly addresses the potential misconception about stopping collection, which distinguishes it from a generic 'stop' command and from siblings like cdl.start.

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?

The usage context is implied: use this tool to end a coverage window. However, there is no explicit comparison with alternatives such as cdl.start or guidance on when not to use it, so it meets only the 'implied usage' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cpu.read_memoryD

cpu.read_memory

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthYes
addressYes
sessionYes
memoryTypeYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals nothing about side effects, required permissions, memory access constraints, or return behavior.

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

Conciseness2/5

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

The description is extremely short (just the name), but this is under-specification rather than effective conciseness. It saves words but sacrifices all informational value.

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

Completeness1/5

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

Given a 4-parameter read operation with no annotations, no output schema, and no parameter descriptions, the description is wholly inadequate. It leaves the agent completely in the dark about how to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 4 parameters with 0% description coverage, and the description does not compensate. There is no explanation of what session, memoryType, address, or length mean or how they should be formatted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool vs alternatives like cpu.write_memory or cpu.registers. No context, prerequisites, or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cpu.registersD

cpu.registers

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
cpuTypeNo
sessionYes

TDQS

D1/5.0
Behavior1/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. The description provides no information about effects, return values, side effects, or restrictions.

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

Conciseness1/5

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

The description is a single word that repeats the tool name. This is under-specification, not conciseness, and provides no useful content.

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

Completeness1/5

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

The tool has no output schema and a complex input schema with nested objects. The description fails to explain the tool's purpose, inputs, or behavior, making it unusable for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the meaning or purpose of any of the three parameters ('state', 'cpuType', 'session'). The description adds no value over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool or how it compares to alternatives. The description does not mention use cases, preconditions, or circumstances for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cpu.write_memoryD

cpu.write_memory

ParametersJSON Schema
NameRequiredDescriptionDefault
bytesYes
addressYes
sessionYes
memoryTypeYes

TDQS

D1.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that writing memory is destructive, requires session context, or affects the emulator state. The description is completely silent on behavior.

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

Conciseness2/5

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

While the description is extremely short, this is under-specification rather than conciseness. It fails to provide any useful information, so the brevity is not a positive trait.

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

Completeness1/5

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

For a 4-parameter tool with no annotations, no output schema, and a tautological description, the information is completely inadequate. The agent cannot determine proper usage, side effects, or parameter semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and the description contains no parameter information. All 4 parameters (bytes, address, session, memoryType) are undocumented in both schema and description, leaving the agent without any semantic understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives like cpu.read_memory or session.reset. There is no mention of context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run.statusD

run.status

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations exist and the description discloses no behavioral traits. It does not state whether this is a read or write operation, whether it has side effects, or what kind of response is returned.

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

Conciseness2/5

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

The description is one token, but this is under-specification rather than conciseness. A useful concise description would include a verb and object, not simply repeat the tool name.

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

Completeness1/5

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

With no output schema, no annotations, and a single undocumented parameter, the description carries the full burden of explaining behavior, return format, and side effects. It fails completely, making the tool effectively unusable for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the single 'session' parameter. The agent receives no help understanding what 'session' refers to or what values are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is given on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, leaving the agent completely without direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run.step_framesD

run.step_frames

ParametersJSON Schema
NameRequiredDescriptionDefault
resetNo
framesYes
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, and the description offers no behavioral information. The tool's side effects, required permissions, return values, or edge cases are completely undisclosed, placing the full burden on an empty description.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than effective conciseness. It does not provide any useful content; it merely repeats the tool name.

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

Completeness1/5

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

The tool is part of an emulator context with related sibling tools, but the description provides no integration context, usage scenarios, or relation to the other tools. No output schema exists, so the absence of behavioral description is a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the three parameters (reset, frames, session). The schema only indicates types and requiredness, but does not explain what each parameter does or how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus any alternative. The description gives no context, prerequisites, or examples, leaving the agent without any direction for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session.infoD

session.info

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits, side effects, or requirements. The agent receives zero information beyond the tool's name, so it cannot anticipate any read-only, destructive, or auth-related behavior.

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

Conciseness2/5

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

The description is technically short, but it is under-specified rather than concise. It consists solely of the tool name, which is tautological and provides no useful content for the agent.

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

Completeness1/5

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

Despite having only one parameter and no output schema, the tool is entirely opaque. The description does not explain what information the tool provides, how 'session' is used, or what the agent should expect. A minimal viable description would at least mention that it fetches session details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'session' with no description. Schema description coverage is 0%, and the description does not explain what 'session' refers to, how to format it, or its purpose. The description adds no semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is given on when to use this tool versus alternatives like session.load_rom or session.reset. The description offers no context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session.load_romD

session.load_rom

ParametersJSON Schema
NameRequiredDescriptionDefault
romYes
timeoutNo
mesen_binNo

TDQS

D1.1/5.0
Behavior1/5

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

There are no annotations and the description is empty, so the agent receives no behavioral information. It cannot infer whether this is a read, write, or destructive operation, or any side effects.

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

Conciseness2/5

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

The description is extremely short but this is under-specification, not conciseness. It fails to provide any useful information and does not earn its place as a meaningful description.

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

Completeness1/5

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

For a tool with 3 parameters and no output schema, the description is completely inadequate. It provides no context about the operation, return values, or edge cases, leaving the agent blind.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description does not explain any of the three parameters (rom, timeout, mesen_bin). The agent is left without semantic understanding of what these parameters mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives like session.reset or session.info. The description gives no context for intended use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session.resetD

session.reset

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, and the description contains zero behavioral information. The agent is left without any disclosure of side effects, state changes, or required permissions for resetting a session.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than conciseness. It provides no structure or substantive content, making it insufficient for an agent to understand the tool.

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

Completeness1/5

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

For a tool with one parameter and no output schema or annotations, the description offers no meaningful context. It does not explain the purpose, usage, or expected behavior, making it inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines a single 'session' string parameter, but the description provides no additional meaning about what this parameter represents or how it is used. With 0% schema description coverage, the description completely fails to compensate for the parameter's undocumented semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is given on when to use this tool versus alternatives such as session.shutdown or session.load_rom. There is no mention of context, prerequisites, or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session.shutdownD

session.shutdown

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, and the description contains no behavioral information. The description does not disclose side effects, whether it terminates the session, what state changes occur, or whether it is destructive.

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

Conciseness2/5

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

The description is extremely short but this is under-specification rather than concise. It does not earn its place as a helpful description; it merely repeats the tool name.

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

Completeness1/5

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

For a tool that likely shuts down a session, the description provides no context about effects, expected usage, or relationship to sibling tools. The output schema is absent, but the description should at least explain what shutdown entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The parameter 'session' is a required string, but the description provides no additional meaning about what the session identifier refers to, format, or semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives like session.reset or watch.list. No context, prerequisites, or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace.listD

trace.list

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are present, and the description merely repeats the tool name. It does not disclose any behavioral traits such as side effects, required permissions, or return behavior.

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

Conciseness2/5

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

The description is extremely short but under-specified, which is a deficiency rather than conciseness. It fails to earn its place by providing any useful content.

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

Completeness1/5

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

With no annotations, no output schema, an opaque parameter, and no behavioral context, the description is entirely inadequate for an agent to understand what this tool does or how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no meaning to the 'session' parameter. The schema only indicates a required string, leaving the parameter's purpose and format entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided about when to use trace.list versus sibling tools like trace.start or trace.stop. The description offers no context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace.startD

trace.start

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuTypeNo
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided and the description gives zero behavioral detail. It does not disclose side effects, required permissions, lifecycle implications (e.g., whether trace must be stopped), or what happens if the session is invalid.

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

Conciseness2/5

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

While extremely short, this is under-specification rather than conciseness. There is no substantive content, so it fails to earn its place as a helpful description.

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

Completeness1/5

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

The tool has two parameters, no output schema, and no annotations. The description is entirely inadequate for an agent to select or invoke this tool correctly, especially given the existence of closely related sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the parameters. 'cpuType' and 'session' are entirely unexplained, so the agent has no idea what values are expected or how they affect the tool's behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool vs alternatives. No mention of prerequisites (e.g., having a session), no exclusions, and no mention of related tools like trace.stop or trace.list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace.stopD

trace.stop

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

With no annotations and a one-word description, the tool's behavior is entirely opaque. The description fails to disclose what 'stopping a trace' entails, such as whether it terminates a session, cleans up resources, or requires active traces.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than deliberate conciseness. It contains a single word that adds no informational value, so it fails the 'every sentence earns its place' test.

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

Completeness1/5

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

Given the tool has two required parameters and no output schema, the description is completely inadequate. It provides no context about the tool's purpose, usage, parameters, or expected behavior, making it impossible for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema lists handle and session as required strings, but the description provides no explanation of what these parameters mean or how they relate to the trace. With 0% schema description coverage and no supplementary description, the agent is left without semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance whatsoever about when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, leaving the agent to guess when trace.stop is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch.createD

watch.create

ParametersJSON Schema
NameRequiredDescriptionDefault
accessNo
lengthNo
addressYes
cpuTypeNo
sessionYes
memoryTypeYes

TDQS

D1.1/5.0
Behavior1/5

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

With no annotations and no descriptive text, the tool's behavior is completely undisclosed. The description does not mention side effects, required permissions, or operational constraints.

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

Conciseness2/5

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

The description is extremely short, but it is under-specified rather than concise. It lacks any substantive content, making it an inefficient use of the description field.

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

Completeness1/5

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

Given six parameters, no annotations, and no output schema, the description is severely incomplete. It provides no operational context, return behavior, or conditions for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines six parameters with zero description coverage. The description adds no meaning to any parameter, leaving the agent with no semantic understanding of what values are expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool or how it differs from alternatives. The description offers no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch.deleteD

watch.delete

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, so the description must disclose behavioral traits. It fails to mention that this is a destructive operation, what exactly gets deleted (e.g., a watch entry identified by handle/session), or any side effects. The bare name 'watch.delete' gives no behavioral insight beyond a vague sense of deletion.

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

Conciseness2/5

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

The description is a single word repeated from the tool name. While short, this is under-specification rather than conciseness—it fails to convey any useful information. A well-structured description would have at least one sentence explaining the tool's function.

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

Completeness1/5

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

The tool has no output schema, no annotations, and an extremely vague description. Sibling names like watch.list and watch.create hint at a watch management context, but the description provides no context about how deletion works, what is deleted, or any constraints. This is completely inadequate for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema includes required parameters 'handle' and 'session' with no descriptions. Schema description coverage is 0%, and the description adds no meaning to these parameters. There is no explanation of what 'handle' or 'session' represent or how they should be formatted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives such as breakpoint.delete or watch.list. The description offers no context, prerequisites, or exclusions, leaving the agent without any direction on appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch.listD

watch.list

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYes

TDQS

D1.1/5.0
Behavior1/5

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

No annotations are provided, and the description adds zero behavioral information. It does not disclose whether this is a read-only operation, what data it returns, or any side effects. The description carries no burden beyond the name, offering no transparency.

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

Conciseness2/5

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

While the description is extremely short, this is under-specification rather than conciseness. It contains one word that adds no information beyond the tool name, so it fails to earn its place as a meaningful description. The structure is minimal but empty.

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

Completeness1/5

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

With no output schema, no annotations, and a single undocumented parameter, the description is completely inadequate. The agent cannot determine what the tool does, what inputs are expected, or what the output will look like. It provides no contextual completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the 'session' parameter or its meaning. The schema only indicates it is a required string, leaving the agent to guess what format or purpose it serves. The description adds no semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. No mention of when to list watches, prerequisites, or relationships to other watch or breakpoint tools. The description is empty of any usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.1.0
    • First observedbreakpoint.create
    • First observedbreakpoint.delete
    • First observedbreakpoint.list
    • First observedcdl.export
    • First observedcdl.get
    • First observedcdl.start
    • First observedcdl.stop
    • First observedcpu.read_memory
    • First observedcpu.registers
    • First observedcpu.write_memory
    • First observedrun.status
    • First observedrun.step_frames
    • First observedsession.info
    • First observedsession.load_rom
    • First observedsession.reset
    • First observedsession.shutdown
    • First observedtrace.list
    • First observedtrace.start
    • First observedtrace.stop
    • First observedwatch.create
    • First observedwatch.delete
    • First observedwatch.list

TDQS

C2.1/5.0

Scored across 22 tools

Disambiguation5/5

Every tool is namespaced by domain (session, run, cpu, watch, breakpoint, trace, cdl) with a specific action, so there is no ambiguity between them. Even similar list operations are clearly scoped (watch.list vs breakpoint.list vs trace.list).

Naming Consistency5/5

All tools follow the same `<domain>.<action>` pattern using lowercase snake_case. The action is consistently a verb (load, reset, create, delete, start, stop) or a common noun for getters (info, status, registers), maintaining a uniform and predictable structure.

Tool Count3/5

With 22 tools, this sits in the borderline heavy category (16-25). While each tool has a distinct purpose, the large number could overwhelm an agent, though it may be justified by the broad scope of emulator debugging features.

Completeness2/5

The set covers session management, CPU/memory access, breakpoints, tracing, and CDL, but lacks essential emulator interactions for AI use such as input injection, video/screen capture, or save/load states. These gaps prevent an agent from fully controlling or observing a game, making the surface significantly incomplete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for RetroArch via its Network Control Interface. Drive any libretro core — read/write memory, save/load state, screenshot, pause/frame-advance/reset — across NES, SNES, Genesis, N64, GBA, PS1 and more.
    17
    16 npm
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the mGBA Game Boy Advance emulator. Read and write GBA memory, inject button presses, take screenshots, save/load state, and step the emulator through a Lua bridge.
    18
    19 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for BizHawk, the multi-system emulator. Drive NES, SNES, GB/GBC/GBA, Genesis, N64, PSX, Saturn and more through one Lua bridge — memory r/w across named domains, joypad input, frame-advance, screenshot, save/load state.
    20
    18 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the mGBA Game Boy/GBA emulator, enabling full emulator control, memory access, debugging, and screenshot capture through natural language.
    4
    MIT