Skip to main content
Glama

dosbox-store-mcp

一个 MCP 服务器,用来在不触碰桌面的前提下驱动一个 DOSBox-X 客户机:不倒绘图、不产生宿主机的合成击键、不移动指针。一个模型可以把 DOS 程序从头到尾跑完,而你还能在它前面继续干你自己的活。

它最初只是某个逆向工程项目的采集工作流,如今已经成为一个通用工具。面对一个正在运行的 DOS 客户机,它可以毫无先验知识地找到那个客户机,告诉你加载了哪些程序和它们的位置,读取并修补任意内存段,随着时间持续采样内存值,从视频内存中直出屏幕画面,驱动模拟器自带的录音器,并紧盯代码的运行——全程不需要调试器,也不会在磁盘上改动一个字节。

它能做什么

找到客户机

只靠 BIOS 不变量就能定位 DOS 客户机——不需要配置、不需要标记、事先什么都不用知道。沿 DOS 内存链走一圈,把每个已加载的程序的名称、所在段和来源路径都报出来。

寻址任意段

启动链中的另一个程序、TSR、覆盖模块、中断向量表、EMS 页面。一切都可以读、改、转储、搜索。

驱动它

按键直接进 BIOS 键盘环形缓冲区后台。点击直接写进游戏自己的 post-INT-33h 鼠标缓存。这两条路都不碰不下主机的输入队列。

观察它

直接从模拟器的视频内存里读帧缓冲:字节索引原样、无窗口、无缩放、客户机零消耗——并用参考帧逐字节确认。必要的时候也可以截窗口。

测量它

阻塞到一个内存条件成立,或者把一张监测列表按最高 200 Hz 采样成 TSV——每一列都出自同一个快照,所以彼此永远不会分离。还能监测视频内存里出现过的每一个不同帧,以及它出现的时刻。

录制它

用模拟器自带的 OPL、MIDI 和 WAVE 录制,免焦点,完全绕开宿主机的按键映射。

给它插桩

把一条 实时的 CALL 改道到一个代码洞,当 época数据文件恰好在每一个命中挂钩记录寄存器和内存,然后客户机可以全速让它读走。磁盘上从头到尾一个字都没有变。

Related MCP server: dosbox-mcp

它如何工作

这里的一切都与宿主机的输入队列或屏幕无关。

  • 客户机发现。每个 DOS 客户机的内存里都有键盘环形缓冲区的范围界字节 0x001E/0x003E,落在 0040:0080,里面有因该范围对应的头指针、尾指针,还存在一个活的 INT 21h 向量。只要在模拟器内存里找到这三个特征,就找到了客户物理零地址;有了这个,每个段都能直接“不确定”。这根本不需要什么已做好的配置——这正是新项目一开始不需要去面对“先有鸡还是先有蛋”的卡点的方式。

Hmm, the last clause: "This needs no profile, which is what breaks a nearby new project starts chicken-and-egg." I wrote a bit awkwardly. Let me phrase: "这一步骤根本不需要 profile——这正好也就是一个新项目在起步阶段最难住的鸡–蛋过程僵局所在的点。" Ahem, keep simple: "这也正是新项目起步时最致命的“鸡生蛋”困局被破解的地方。"

  • 按键 会像真实键盘一样,被追加到客户机的 BIOS 键盘环形缓冲区中。

  • 点击 被写入游戏自己的 INT 33h 处理器会填充的那些字——即游戏真正读取的状态。这些字会被反复不断重写,因为游戏里的那个处理程序一直在覆盖它们,只写一次必然输掉这场竞速。

  • 画面 直接来源于视频内存。DOSBox 按真实硬件的做法布局 chain-4 页面——CPU 偏移量 o 位于线性地址 4 * (o & ~3) + (o & 3)——所以每隔 16 个字节取一组四个字节,就能把一块区域还原为屏幕。搞清楚哪些字节才是屏幕,需要一张参考帧:模拟器的内存里充满了像图画却并非画面的数据,所以页面要么和参考帧逐字节对上(会被确认),要么就永不确认。见读取屏幕。

  • 追踪 把一条 近 CALL` 指向一段全零占位区。这个代码洞会去调用被“挤掉”的原目标,保持标志寄存器,再把你所要的数据复制到自己代码之后并返回。模拟器随运行结束而退出,这个补丁也就一并涂去了。不写入磁盘的文件系统上不会留下任何东西。

安装

pip install "dosbox-x-mcp[all] @ git+https://github.com/md0-code/dosbox-x-mcp"

其余部分都是可选的,名字直接写到它们买了什么:

可选依赖

用途

window

Pillow,为模拟器的窗口拍快照

fast

numpy,让 chain-4 反交错更快(也可以退回到纯 Python)

x11

python-xlib,在 Linux 上列出窗口并把它们拍下来

把这个注册到你的 MCP 客户端里。对 Claude Code,在项目根目录放一个 .mcp.json:

{
  "mcpServers": {
    "dosbox": {
      "command": "python",
      "args": ["-m", "dosbox_mcp.server"],
      "env": {
        "DOSBOX_MCP_PROFILE_DIR": "dosbox-x/profiles",
        "DOSBOX_MCP_EXECUTABLE": "dosbox-x/dosbox-x.exe"
      }
    }
  }
}

变量

含义

DOSBOX_MCP_PROFILE_DIR

配置文件所在目录(默认:包的 profiles/)

DOSBOX_MCP_PROFILE

默认配置文件名;为 none 则不用配置

DOSBOX_MCP_EXECUTABLE

要启动的的 dosbox-x 可执行文件

DOSBOX_MCP_OUTPUT_DIR

相对输出相对参考路径的基准目录

一个工具读写的每条路径都遵守同一规则:绝对路径原样解释;相对路径被解释在 DOSBOX_MCP_OUTPUT_DIR 之内。工具会返回被解析后的路径,所以某文件到底去了哪里永远不会有疑问。

工具

工具

作用

dosbox_capabilities

这台机能做什么、不能做什么

dosbox_profiles

列出所有配置;显示某个配置的命名偏移

dosbox_launch

启动 DOSBox-X 并等待客户机变得可驱动

dosbox_attach

通过 pid 将已运行的模拟器接入

dosbox_sessions

已接入的会话,以及其它任何 DOSBox-X 窗口

dosbox_quit

结束一个会话

dosbox_find_guest

找到客户机并列出每个已加载的程序——不需要配置文件

dosbox_search_memory

找一个字节模式,报告为客户的 segment:offset

dosbox_send_keys

往 BIOS 键盘环形缓冲区里输入

dosbox_click

用游戏自己的鼠标字完成点击

dosbox_hold_buttons

按住若干按钮,可选一直按住直到内存测试通过

dosbox_read_memory

读取字节段,或任意段

dosbox_write_memory

修改数据段,或任意段

dosbox_dump_segment

把整个 64 KiB 的段存成文件

dosbox_wait_for

阻塞直到指定内存字段满足某个条件

dosbox_sample

把某监视列表按时间采样到 TSV

dosbox_view_screen

把当前帧作为图返回供查看

dosbox_capture_screen

保存一帧准确画面,来自视频内存或窗口

dosbox_read_framebuffer

从视频内存中读出页面

dosbox_watch_frames

一段时间内每一个不同的帧,以及时间

dosbox_emulator_command

触发一条 DOSBox-X 自己的菜单命令

dosbox_record

把 OPL、MIDI 或 WAVE 录制到文件

dosbox_find_cave

找到足足够大的零字填充区以用于 trace

dosbox_install_trace

把一条实时 CALL 改道进入记录洞中

dosbox_read_trace

读取某次追踪已经记录了的内容

dosbox_remove_trace

恢复调用现场并清空洞

只要一个参数是偏移量,也可以用配置里的符号名——即 treasury 替代 0x634A。

从一款没有任何人配置过的游戏开始

配置并不为前置条件:下面就是第一次会话的全部:

dosbox_launch(config="game.conf", profile="none")     → pid
dosbox_find_guest()
   → 640 KiB, INT 21h live, and:
       JP2D     load segment 2456    1.1 MB   C:\JP\JP2D.EXE
       JP       load segment 08A1     64 KB   C:\JP\JP.EXE
       COMMAND  load segment 0801     16 KB   C:\COMMAND.COM
dosbox_search_memory(text="sprites.dbt")   → 2456:027A
dosbox_dump_segment(path="jp2d.bin", segment="0x2456")

那一份转储就是配置的弹药:从中挑 50–100 个不会在运行间变化的字节,再配上两条便宜的检查规则,然后每一件“相对 DS”的工具都能按名称起效。

读取屏幕

dosbox_read_framebuffer 在读取那一瞬间返回客户所写入的调色板索引。它是确切的,不会吞掉半帧画面,也不会对客户机产生任何成本——这正是“任何需要测量的东西,都首选它”的理由。

它需要一个参考帧,并且它会直接告诉你这一点,而不是去猜。 定位页面等于在数百兆字节的内存里找出 64,000 个字节;只有“自成一体”这某一件事是完全不够的——对着一个活着的游戏实测,盲扫会送回一页 0.999 相似的页面,但那其实是一个解码出来的精灵图库,根本不是屏幕。于是,请把 reference= 指向一个 64,000 字节的文件,内容正是当前屏幕上的画面。到此,页面才被逐字节最终确认:

dosbox_read_framebuffer(reference="credits_logo.bin", stem="shots/logo")
   → page_offset 16, confirmed true, pages [16, 64016, 128016, 192016]

参考帧可以有这些来源:

  • 一个开发中的移植版,它天然就有一份——它本身对同一屏幕的渲染结果。这也是值得做的一次对照:如果两边逐字节一致,说明这个移植的渲染器是对的。

  • 同一屏幕之前任意一张已确认的抓屏,都可以再确认一次。

  • 窗口照片——只要配置里带了一张调色板,这一步是自动做的,不用传任何参数。

一旦确认,页面位置就会缓存下来,此后每一次读取、以及 dosbox_watch_frames 产生的每一帧都不需要再搜索。allow_unconfirmed=true 则是给那些想直接看看“盲扫”结果的人准备的。

页面所在处不一定是你想当然的地方:它随着 CRTC 起始地址起,只落在一个四字节的对齐边界上,更细粒度是没有的。真正实测的那个页面就在偏移量 16 处。

配置文件

一个配置就是这样一个 JSON 文件,描述一个游戏:如何识别它的数据段、它把鼠标状态放在哪、屏幕的尺寸和调色板、命名偏移、监视组、以及已知的空洞。
profiles/example.json 是一个带注释的示例模板;真实案例见OpenJP这个仓库,它是针对一款 1993 年发行的真实游戏写的。

{
  "name": "example",
  "ds_segment": "0x1234",
  "marker": { "bytes": "6578616d706c652e64617400", "offset": "0x0100" },
  "checks": [ { "kind": "cstring_via_pointer", "pointer": "0x0200", "value": "game" } ],
  "mouse": { "buttons": "0x00B2", "position": "0x00B6" },
  "screen": { "width": 320, "height": 200 },
  "symbols": { "lives": { "offset": "0x1234", "size": 1, "description": "Lives left." } },
  "watch_sets": { "player": ["lives", "score", "level"] }
}

标记可以直接内嵌成 bytes 十六进制,也可以从一片参考转储里切出来(source_dump + offset + length)。可用的检查式包含:cstring_via_pointer、max、max_range、equals——这就足以让误报变得几乎不可能,而这很重要,因为误报的结果就是对一块莫名其妙的野生内存打补丁。

平台支持矩阵

Windows

Linux

macOS

客户机内存、段、搜索、键鼠

是

是

没有后端

帧缓冲、采样、追踪

是

是

没有后端

窗口列表、截屏、调整大小

是

需配合 X11

—

模拟器菜单命令

是

不支持——用隔离的显示环境

—

离屏显示缓存

—

使用 Xvfb

—

dosbox_capabilities 会针对当前正在运行的主机报告所有相关能力,因此请直接查询,而不是猜测。

在 Linux 上,kernel.yama.ptrace_scope 对另一个进程内存的访问控制方式,与 Windows 上的完整性级别(integrity level)完全一致:

值

效果

0

任意同一 UID 进程 — dosbox_attach 可用

1(Debian 和 Ubuntu 默认)

仅限后代进程 — dosbox_launch 可用,dosbox_attach 不可用

2

仅限 CAP_SYS_PTRACE

3

完全无法 attach

在这种常见的默认配置下,应选择 launch 而不是 attach。服务器会读取该 sysctl,并明确说明这一点,而不是抛出一个裸露的 EPERM。

Linux 上如果没有合成管理器(compositing manager),就无法拍摄被遮挡的窗口;而 Wayland 完全没有跨客户端捕获能力。解决之道不是模拟 PrintWindow,而是移除了它所要满足的那个约束:dosbox_launch(isolated=true) 会把模拟器放到自己的 Xvfb 显示环境中,那里没有需要保护的桌面,模拟器自己的键盘快捷键也可以正常使用,而不会从任何人那里抢走按键。

macOS 需要 task_for_pid,因此要么以 root 运行,要么使用一个已签名、带有相应 entitlement 的二进制文件。目前没有针对 macOS 的后端。

注意事项

  • 模拟器必须是可访问的:在 Windows 上处于同一完整性级别,在 Linux 上 ptrace_scope 设置合理。

  • 每个 profile 同一时间只能运行一个模拟器。两个运行同一游戏的客户机会让段扫描产生歧义,服务器会直接拒绝,而不是猜测。

  • dosbox_capture_screen 使用 source="window" 时会调整模拟器窗口大小,以获得精确的整数倍缩放。这是本服务器对桌面唯一可见的影响;也正因如此,应优先使用 source="vram",它同样更快,而且不会捕捉到绘制到一半的帧。

  • 对窗口进行拍摄会让客户机付出真实时间代价:循环拍摄会把客户机可见阶段拉长约 1.6 倍。凡是需要定量分析的内容,都应使用帧缓冲。

  • 在某些游戏中,一次点击可能会推进两个“点击继续”画面;在有列表翻页时,请发送按键。

  • 对运行中的游戏进行写入是无法撤销的,而游戏可能在你设置字段后立刻重新计算它——请在该字段被读取、且尚未被重新计算的时机进行写入。

  • 跟踪内存捕获在代码洞(cave)运行时通过 DS 当前持有的段来读取。对于只有一个数据段的游戏来说,这恰好是正确的;对于会切换 DS 的例程,请同时捕获 ds 并检查。

  • 只有 chain-4 线性模式 13h 会从显存中读取;其他情况都需要 source="window"。

  • 对帧缓冲的盲目扫描只是一条线索,不是答案,且会被标记为未确认。请提供一帧参考帧。

开发

pip install -e ".[dev,all]"
pytest

该测试套件完全离线:一个 DOS 客户机、一个内存链、一个 chain-4 帧缓冲和一个可追踪的代码段,全部构建在一个 bytearray 中,因此它能在任何平台上运行,不需要模拟器,也不需要游戏。未覆盖的部分是最底层的两个系统调用——读取和写入另一个进程——以及窗口。

许可证

MIT。

Available Tools

26 tools
dosbox_attachA

Attach to a DOSBox-X process that is already running, by process id, and locate the game's data segment inside it. Use dosbox_sessions to find candidate process ids.

NameRequiredDescriptionDefault
pidYesDOSBox-X process id.
profileNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is not read-only and not destructive, so the description's added value is describing the stateful attach behavior and the goal of locating the game's data segment. It does not explain deeper behavioral consequences, such as what becomes attached or how this affects later memory operations, but it is not misleading.

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 two concise sentences with the primary action front-loaded and the useful session-discovery hint included second. It contains no filler or repeated schema content.

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

Completeness3/5

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

The description covers the key action and pid discovery, but the profile parameter is left unexplained and the exact state changed by attaching is not stated. An output schema exists, which reduces the need to describe return values, but the gaps around profile and attach semantics keep this from being fully 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 schema gives a clear description for pid, and the description usefully enriches it by pointing to dosbox_sessions as the way to find candidate pids. However, the profile parameter has no description in the schema and is not explained anywhere in the tool description, leaving its semantics unclear. With 50% schema coverage, the description needed to compensate but only partially does.

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 action: attach to a running DOSBox-X process by process ID and locate the game's data segment. It distinguishes itself from sibling tools like dosbox_launch and dosbox_sessions by focusing on an already-running process and by identifying a concrete resource (the game data segment).

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

Usage Guidelines4/5

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

The description gives clear context that the target must already be running and explicitly tells the agent to use dosbox_sessions to find candidate process IDs. It does not explicitly say when not to use this tool or name alternatives, but the usage context is clear enough for selection.

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

dosbox_capabilitiesA
Read-only

What this host can do, and what it cannot. Guest memory works everywhere there is a backend; window capture and the emulator's own menu commands do not. Call this when a tool refuses, or before planning a session that depends on frames or recordings.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Though the readOnlyHint annotation already signals a safe read operation, the description adds meaningful behavioral detail beyond that: it openly discloses specific host limitations (window capture and emulator menu commands are unavailable) and frames/recordings dependency caveats. This is useful context an agent cannot infer from structured fields alone.

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 two sentences, front-loaded with the core purpose, then specific constraints, and then usage triggers. Every sentence carries information and there is no fluff or redundancy.

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?

With zero parameters, an output schema present, and readOnlyHint true, the description covers everything an agent needs: what this tool provides, what it does not provide, and when to invoke it. There are no missing contextual details that would prevent correct selection or invocation.

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?

The tool takes zero parameters and schema coverage is trivially 100%, so the baseline for this dimension is 4. The description adds context about the tool's purpose without discussing parameters, but none are needed. It does not compensate for absent parameters; it doesn't need to.

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 states a specific purpose: enumerating host capabilities and limitations, with concrete examples ('Guest memory works everywhere there is a backend; window capture and the emulator's own menu commands do not'). It is clearly distinct from the sibling tools, which are actionable operations (launch, capture, read memory, etc.) rather than a capabilities overview.

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?

Explicit usage guidance is provided: 'Call this when a tool refuses, or before planning a session that depends on frames or recordings.' This directly tells the agent when the tool should be consulted, which is exactly the kind of contextual advice the rubric rewards.

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

dosbox_capture_screenA

Capture the current frame exactly and save it: .rgb (one byte per pixel), .png, and with with_segment also _ds.bin, the data segment from the same instant -- which is what makes a captured frame replayable as a fixture.

source='vram' reads the frame out of the emulator's video memory, which is exact, cheap, cannot catch a half-drawn frame and does not slow the guest. source='window' photographs the window instead, resizing it to an integer multiple of the guest resolution; that is the one visible effect this server has on the desktop, and it costs the guest real time. 'auto' takes video memory when the page has been CONFIRMED against a reference and falls back to the window otherwise, so it never quietly saves the wrong 64,000 bytes.

NameRequiredDescriptionDefault
pidNo
stemYesOutput path without a suffix; relative to DOSBOX_MCP_OUTPUT_DIR.
exactNoRequire every pixel to be a palette colour.
scaleNoWindow scale to capture at, for source='window'.
sourceNoauto
referenceNoPath to a 64,000-byte frame on screen now; confirms a vram capture.
with_segmentNoAlso dump the data segment from the same instant.
settle_secondsNoWait for the window to finish resizing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing writes to multiple files, vram vs window behavior, the desktop-visible resize effect, guest slowdown cost, and the auto source's confirmation fallback. This substantially enriches the sparse readOnly/destructive hints without contradicting them.

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 wording is dense but every sentence earns its place; the most important action is front-loaded, and the source-mode explanation is directly tied to real behavioral tradeoffs. Minor awkwardness around 'with with_segment' does not undermine actual clarity.

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?

The description is complete for frame capture, source selection, output artifacts, and side effects, and an output schema exists for return values. It could be even more complete with an explicit note about when the optional pid would be needed and how capture differs from segment-only dumping, but nothing essential for calling it correctly is missing.

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

Parameters4/5

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

Schema coverage is 75%, and the description adds real meaning beyond the schema, especially for source, where it explains exactly what each enum value means and how auto avoids saving incorrect data. It also clarifies with_segment and output naming. It does not explain pid, but that is optional and less central.

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 first sentence states a specific action ('Capture the current frame exactly and save it'), identifies the resource (the current frame), and lists the concrete output artifacts. The mention of a replayable fixture makes the tool's role distinct from view-only or memory-read tools.

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 gives strong within-tool source guidance: when to use vram, window, or auto. However, it does not explicitly say when to choose this tool over siblings such as dosbox_view_screen or dosbox_record, so an agent must infer the boundary between capturing a saveable frame and other observation workflows.

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

dosbox_clickA

Click at a guest screen coordinate by writing the game's own mouse state, the words its INT 33h handler normally fills in. The host pointer never moves. The state is rewritten continuously for duration because the game's handler keeps overwriting it; a single write usually loses that race. Beware: on 'click to continue' pages one click can advance two pages -- send a key instead when paging through lists.

NameRequiredDescriptionDefault
xYesGuest X, 0 to screen width - 1.
yYesGuest Y, 0 to screen height - 1.
pidNo
buttonNo1 left, 2 right, 3 both.
duration_secondsNoHow long to hold the click.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description reveals multiple non-obvious behavioral details: the host pointer never moves, the mouse state must be rewritten continuously for duration, a single write usually loses to the game handler, and one click can advance two pages. These go well beyond the annotations and materially improve agent decision-making.

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 compact and front-loaded: purpose, mechanism, timing behavior, and a cautionary alternative all appear in a few dense sentences without filler or repetition.

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?

Given the annotations cover safety and an output schema exists, the description provides the remaining critical context: what the tool actually alters, why duration is needed, and when to prefer a key. An agent has enough information to call this tool correctly in most DOS game scenarios.

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

Parameters4/5

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

Schema coverage is 80%, so the schema already documents most parameters. The description adds real semantic value for duration_seconds by explaining why the duration exists and why a single write is insufficient, and 'guest screen coordinate' reinforces x/y meaning.

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 starts with a specific verb and resource: 'Click at a guest screen coordinate' and clarifies the unusual mechanism by writing the game's own mouse state. It clearly separates this from the other input tools in the sibling list, such as dosbox_send_keys and dosbox_hold_buttons.

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

Usage Guidelines4/5

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

It gives useful context for using the tool and explicitly recommends 'send a key instead' for the 'click to continue' paging case. It does not offer a full when-to-use vs. when-to-avoid comparison across all sibling tools, but the guidance is concrete and actionable.

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

dosbox_dump_segmentA
Read-only

Write a whole 64 KiB guest segment to a file -- the state at one instant, for later analysis or as a test fixture. With no segment this is the profile's data segment; with segment=0x1234 it is any segment in the guest, which is how the marker for a new profile is captured.

NameRequiredDescriptionDefault
pidNo
pathYesOutput file; a relative path goes under DOSBOX_MCP_OUTPUT_DIR.
segmentNoGuest segment; omit for the profile's data segment.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Given readOnlyHint and openWorldHint are already present, the description adds useful behavioral detail: it always dumps the full 64 KiB segment, captures the state at one instant, defaults to the profile's data segment, and treats segment=0x1234 as the marker-capture mechanism. It does not describe overwrite/path-creation behavior, but it does not contradict the read-only annotation because it reads guest memory and writes an output file.

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?

Two sentences carry the full behavioral contract: the primary operation first, then the default segment behavior and special marker use. Every clause contributes semantics, so it is concise without being vague.

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

Completeness4/5

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

With an output schema present and readOnly/openWorld annotations, the description is nearly complete for selecting and invoking the tool: it covers the size, snapshot semantics, default segment, arbitrary segment values, and marker use. The main gap is pid, which the agent must infer refers to the target session/profile.

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?

The schema already documents path and segment, and the description adds useful segment semantics by explaining that segment=0x1234 targets any guest segment and is used for capturing a marker. The pid parameter remains undocumented in both the schema description and the tool description, keeping this from a perfect score.

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 names the operation precisely: 'Write a whole 64 KiB guest segment to a file' as a one-instant snapshot. This clearly distinguishes it from interactive memory tools like dosbox_read_memory or dosbox_write_memory by emphasizing the whole-segment file output and its analysis/fixture purpose.

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

Usage Guidelines4/5

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

It provides concrete usage contexts: 'for later analysis or as a test fixture' and 'how the marker for a new profile is captured.' It does not explicitly name sibling alternatives or say when not to use it, but the intended use is easy to infer from the wording.

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

dosbox_emulator_commandA

Fire one of DOSBox-X's own menu items without focus and without a keystroke: record_opl, record_midi, record_wave, record_video, screenshot, save_state, load_state. Firing a record action again stops that recording. Windows only -- DOSBox-X draws its own menu elsewhere; see dosbox_capabilities.

NameRequiredDescriptionDefault
pidNo
actionYesrecord_opl, record_midi, record_wave, record_video, screenshot, save_state, load_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

It adds genuinely useful behavior beyond what the schema and annotations expose: firing a record action again stops that recording, actions are fired without focus, and Windows is a required platform because DOSBox-X draws its own menu elsewhere. These details are non-obvious and not available in the structured fields. The annotation flags (readOnlyHint=false, destructiveHint=false) align with the described behavior, and the description contradicts nothing.

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 compact and efficient: the first sentence delivers the core purpose and action list, the second adds the important toggling behavior, and the third isolates platform restrictions and a pointer to a related tool. It front-loads the most important information and keeps total length short, although it duplicate the action list from the schema somewhat.

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?

Given there is an output schema, the return format does not need to be explained, and the tool's complexity is modest—one required parameter plus an optional pid. The description is enough to perform the call correctly for the typical case, but it does omit pid semantics and does not describe whether pid must refer to a specific session or process, leaving a small but real gap.

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

Parameters3/5

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

The description adds meaning to the 'action' parameter by explaining that these are DOSBox-X menu items and that record actions toggle on/off. However, it mostly restates the list already present in the action parameter's schema description. More importantly, the 'pid' parameter has no description in the schema and none in the tool description, and at 50% schema coverage the description fails to compensate for explaining how or when the optional pid should be provided.

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

Purpose4/5

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

The description clearly identifies a specific action: firing DOSBox-X's own menu items, and enumerates all seven supported action values. It also distinguishes itself from keystroke or focus-based input by explicitly saying it acts 'without focus and without a keystroke.' However, it does not explicitly distinguish itself from overlapping siblings like dosbox_record or dosbox_capture_screen, so an agent must infer those boundaries.

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 context is clear: it is for menu actions when keyboard/focus simulation is not appropriate, and it even notes a Windows-only restriction with a pointer to dosbox_capabilities. That said, it never explicitly says 'use this instead of X when Y' or mentions alternatives like dosbox_send_keys, dosbox_record, or dosbox_capture_screen, leaving some selection inference to the agent.

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

dosbox_find_caveA
Read-only

Find runs of zero in a guest code segment long enough to hold a trace cave. Padding between routines is the usual supply. Longest first; pass one of these offsets to dosbox_install_trace.

NameRequiredDescriptionDefault
pidNo
segmentYesGuest code segment, e.g. 0x1000.
bytes_neededNoHow much room the cave needs.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds behavioral detail beyond that: it returns zero-run candidate gaps, orders them longest first, and indicates the guest segment context. It does not cover edge cases such as 'no suitable cave found', but the existing annotation and output schema partly mitigate that.

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?

Three short sentences, each signing significant value: what the tool does, where the supply is typically found, and how to use the result. The key behavioral constraint ('longest first') is front-loaded and the follow-up call is clearly mentioned. There is no redundant 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 the task of finding and using a trace cave, the description is essentially complete: it explains the search target, ordering, and next action. The only missing nuance is handling the pid parameter and the absence of an explicit failure case, but these are minor because the schema and output schema clarify the interface.

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

Parameters3/5

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

Schema description coverage is 67%, with segment and bytes_needed already described in the schema. The description reinforces that bytes_needed corresponds to the amount of room the cave needs, but it does not explain the pid parameter, which has no schema description. Overall, the description adds only modest parameter-level value beyond the schema.

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 states the exact operation: 'Find runs of zero in a guest code segment long enough to hold a trace cave.' It clearly identifies the resource (guest code segment), the condition (runs long enough), and the intended purpose (a trace cave). It also references the downstream sibling tool dosbox_install_trace, so an agent can distinguish it from read/search/memory tools.

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

Usage Guidelines4/5

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

The description provides actionable guidance: 'Padding between routines is the usual supply' tells where to look, and 'Longest first; pass one of these offsets to dosbox_install_trace' tells what to do with the result. It names the immediate sibling for the follow-up action, though it does not explicitly state when not to use this tool or describe alternative routes.

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

dosbox_find_guestA
Read-only

Find the DOS guest inside an emulator process and report what is loaded in it -- with no profile and no prior knowledge. This is the way in for a game nobody has described yet: it locates guest physical zero from the BIOS data area, then walks the DOS memory chain and names every loaded program, its load segment and the path it was started from. Those segments are what dosbox_read_memory(segment=...) and dosbox_search_memory take, and what a new profile is written from.

NameRequiredDescriptionDefault
pidNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only say readOnlyHint=true and openWorldHint=true. The description adds real behavioral depth: it locates guest physical zero from the BIOS data area, walks the DOS memory chain, and reports every loaded program with segment and source path. Nothing about the description contradicts the read-only annotation.

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 two sentences, purpose-first, and the key output (segments, paths) is front-loaded. However, it repeats the the same idea twice: 'with no profile and no prior knowledge' and 'a game nobody has described yet', plus the closing sentence adds useful context but could be trimmed.

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

Completeness3/5

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

There is an output schema so return values are covered, and the description explains what to do with the results (read/search memory and seed the profile). However, it is silent about how the target emulator process is selected via pid and what happens when pid is omitted, and it does not mention the likely prerequisite of an existing launched/attached process.

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 single `pid` parameter has 0% schema description coverage, yet the description never explains what pid means, how to select the emulator process, or what happens when it is null. The phrase 'inside an emulator process' indirectly suggests pid is the OS process ID, but the agent is left to infer an important prerequisite in order to invoke the tool 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 states a specific verb + resource: find the DOS guest in an emulator process and report what is loaded in it. It further defines the output as loaded programs, load segments, and paths, and explicitly marks it as the entry point for games with no profile or prior knowledge, which differentiates it from the profile/session/launch tools in the sibling list.

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

Usage Guidelines4/5

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

It gives a clear when-to-use scenario: a game nobody has described yet, with no profile and no prior knowledge, and says this is the way in. It also explains how the output feeds dosbox_read_memory, dosbox_search_memory, and profile creation. It stops short of 5 because it does not explicitly name alternative tools or say when NOT to use this one.

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

dosbox_hold_buttonsA

Hold mouse buttons down for a stretch of time by writing the guest's button word continuously -- the way to drive anything that reads a held button, such as an action sequence that only advances while a button is down. Sparse writes lose to the game's own interrupt handler, so this busy-writes. Give stop_when to release as soon as a memory field says the sequence is over, instead of holding for the full time.

NameRequiredDescriptionDefault
pidNo
buttonsNo1 left, 2 right, 3 both.
secondsYesMaximum time to hold.
poll_secondsNo
stop_when_sizeNo
stop_when_any_ofNo
stop_when_equalsNo
stop_when_offsetNoOffset or symbol to watch while holding.
stop_when_at_leastNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, it reveals the tool busy-writes, explains why ("sparse writes lose to the game's own interrupt handler"), and describes the early-release behavior via stop_when and memory fields. This gives strong behavioral insight that an agent needs to understand the tool's 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.

Conciseness5/5

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

The description is tight and front-loaded: first states the primary action, then explains why busy-writing is necessary, then clarifies how to stop early. No sentence is filler, and the key information is delivered early.

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?

Given the 9-parameter surface area, the description explains the important behaviors adequately: holding, busy-writing, and stop_when release. While some optional parameter details are only implicit, the required parameter and core usage are clear enough, and an output schema exists to cover return-value expectations.

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?

Schema description coverage is only 33%, and the description does not compensate for the many undocumented parameters. It only broadly mentions stop_when, leaving poll_seconds, stop_when_size, stop_when_any_of, stop_when_equals, and other semantics to be inferred from names alone.

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 opens with a specific verb and resource: "Hold mouse buttons down for a stretch of time." It also distinguishes this from related operations by explaining it is used for "anything that reads a held button" such as an action sequence, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: when the game or guest needs a continuous held-button signal and "sparse writes lose to the game's own interrupt handler." It does not explicitly name sibling tools like dosbox_click as alternatives, so it stops short of full exclusionary guidance.

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

dosbox_install_traceA
Destructive

Watch a running guest's code without a debugger. Redirects one near CALL in the live code segment through a zero-filled cave that calls the displaced target, preserves its flags, and records the registers and memory words you name -- then read them with dosbox_read_trace while the guest runs at full speed. Nothing on disk changes; the patch dies with the emulator. captures take: a register (ax bx cx dx si di bp sp), a segment register (ds es ss cs), flags, or memory -- word:0x9D10, byte:DS:0x7A0E, word:ES:0x0004. Memory is read through whatever DS holds when the cave runs; capture ds too if the routine changes it. Give expect_hex (the three bytes the call site should hold) so the trace refuses rather than landing on a moved target.

NameRequiredDescriptionDefault
pidNo
handleNoName for this trace; defaults to segment_offset.
call_atYesOffset of the near CALL to displace.
cave_atYesOffset of a zero-filled run, from dosbox_find_cave.
segmentYesGuest code segment.
capturesYesWhat to record at each hit.
expect_hexNoThe three bytes the call site must hold.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description richly discloses behavior beyond the annotations: it patches only live memory, calls the displaced target, preserves flags, records at each hit, and says the patch dies with the emulator. It also warns about the DS-relative memory caveat and the safety behavior of expect_hex.

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 long, but every sentence carries essential information: purpose, mechanism, lifecycle, capture format, memory caveat, and safety check. It is front-loaded with the core intent and then layers technical details without filler.

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?

Given the complexity of code-injection tooling, the description covers the workflow, prerequisites, parameter semantics, and side effects thoroughly. The presence of an output schema removes the need to duplicate return-value details, and nothing critical for invoking the tool correctly appears missing.

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

Parameters5/5

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

The schema only gives names and short labels, but the description adds real semantics: exact capture syntax for registers, segment registers, flags, and memory addresses, plus the contract for expect_hex. This significantly reduces ambiguity about how to construct valid calls.

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 names a specific verb and resource: it installs a trace/hook that displaces one near CALL in a running guest, routes it through a cave, and records targeted registers/memory. This clearly distinguishes it from related tools like dosbox_read_trace and dosbox_remove_trace.

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

Usage Guidelines4/5

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

It gives clear context for when to use it — watching code in a running guest without a debugger, then reading captured data via dosbox_read_trace. It also explains prerequisites like using a zero-filled cave from dosbox_find_cave, but it does not explicitly list when-not-to-use conditions or compare against other trace/read alternatives.

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

dosbox_launchA

Start DOSBox-X with a config file and attach to it. Returns the process id every other tool takes. The config's [autoexec] section decides what runs; an AUTOTYPE line there is the reliable way past intro screens. Waits until the guest is findable, so a successful call means it is really up and drivable. On Linux, isolated=true puts the emulator on its own Xvfb display -- entirely off the user's desktop, and the only way the emulator's own keyboard shortcuts can be used without taking a keystroke from whatever the user is doing.

NameRequiredDescriptionDefault
configYesPath to the DOSBox-X .conf file.
profileNoProfile name or path.
isolatedNoLinux only: run on a private Xvfb display.
executableNodosbox-x.exe to run; defaults to DOSBOX_MCP_EXECUTABLE.
wait_secondsNoHow long to wait for the guest.
working_directoryNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing that a successful call means the guest is genuinely up and drivable, and that on Linux isolated=true runs on Xvfb and avoids stealing keystrokes. It also explains the return value role and startup waiting behavior, providing valuable 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.

Conciseness4/5

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

The description is a few sentences long but every sentence contributes practical information. The most important action and output are front-loaded, followed by config guidance and the isolated-mode caveat. It is slightly long but justified by the tool's launch complexity.

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?

The description explains the key behavioral outcome, return value, and a platform-specific nuance. With 6 parameters and an output schema present, the schema covers most parameter details and the description fills in the operational context. It is sufficiently complete for an agent to successfully use and interpret the result, though it does not dive into all parameter edge cases.

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 high (83%), so the baseline is 3. The description adds semantic value by explaining that the config's [autoexec] section controls execution and that AUTOTYPE is the reliable path past intro screens, which clarifies the primary parameter's use. It also reinforces isolated behavior, giving it above-baseline value.

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 starts DOSBox-X with a config file and attaches to it, a specific verb and resource. It differentiates from siblings by explaining that the returned process ID is the identifier other tools take, which positions it distinctly among the sibling toolset.

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

Usage Guidelines4/5

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

The description establishes when to use this tool: to launch and attach to a DOSBox-X session. It provides practical context such as the [autoexec] section and AUTOTYPE line for intro screens, but doesn't explicitly contrast with alternatives like dosbox_attach or dosbox_profiles. This is strong contextual guidance, but lacks explicit exclusions or when-not-to-use cases.

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

dosbox_profilesA
Read-only

List the game profiles this server knows and, for one of them, every named memory offset it exposes. A profile says how to recognise the game's data segment, where the game keeps its mouse state, and what its screen looks like. Call this first: the symbol names it returns can be used anywhere an offset is accepted.

NameRequiredDescriptionDefault
profileNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, so the safe/read-only nature is covered. The description adds useful context beyond the annotations by explaining what a profile represents and how the returned symbols integrate with other tools, without contradicting the read-only hint.

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?

Three concise sentences, each earning its place: the action, the profile concept, and the call-first guidance. No filler or repetition of schema details.

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?

The description covers the tool's read-only purpose, the kind of data returned, and the key integration contract (symbols usable anywhere offsets are accepted). It does not spell out null/omitted behavior or unknown-profile handling, but an output schema exists and the tool is simple enough that the gap is minor.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry the parameter meaning. It implies the optional 'profile' selects one game profile and exposes its named offsets, but it never explicitly states what happens when the parameter is omitted or null, or that 'profile' expects a profile name from the returned list.

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 identifies a specific verb ('List') and resource ('game profiles', 'named memory offsets'), and explains what a profile describes. This clearly separates it from the mutation and session-oriented sibling tools and makes its role as a discovery tool unambiguous.

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

Usage Guidelines4/5

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

The description explicitly says to call this tool first and notes that the returned symbol names can be reused anywhere an offset is accepted. It gives clear when-to-use guidance, though it does not state when not to use it or point to an alternative tool.

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

dosbox_quitA
Destructive

Close a DOSBox-X session. By default only sessions this server launched may be killed; pass force to end one it merely attached to. The guest is not asked to save anything first.

NameRequiredDescriptionDefault
pidNoProcess id; omit if only one is attached.
forceNoAllow killing a process this server did not start.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations, it discloses the critical behavioral detail that the guest is not prompted to save anything first, which is essential for an agent to evaluate risk. It also clarifies the forced relationship — that by default only server-launched sessions can be killed, and force is needed for attached sessions. These details go well beyond the readOnly/destructive hints.

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?

Three short, purposeful sentences cover the core action, the condition for force, and the critical consequence about unsaved guest state. There is no redundancy or fluff, and the most important information is front-loaded.

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?

The tool is a simple, parameter-light operation with a clear safety profile; the description covers the destructive action, the force/ownership policy, and the unsaved-data consequence. Given the output schema exists and the input schema already documents both parameters, nothing else is needed for an agent to select and invoke this tool correctly.

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?

The schema already documents both pid with a clear description and force with a clear description, achieving full schema coverage. The description adds value by clarifying the force behavior in terms of sessions the server merely attached to, h but it adds no extra pid nuances. Given the schema's high coverage, a score above baseline is still justified.

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 opens with a specific verb+resource action, 'Close a DOSBox-X session,' which clearly identifies the tool's purpose among siblings like launch, attach, and emulator_command. The additional nuance about launched vs. attached sessions further disambiguates its operational scope.

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

Usage Guidelines4/5

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

The description gives clear operational context: the default applies to sessions the server launched, and the condition for using force is described directly. It does not explicitly name alternatives or state when not to use this tool, but the warning that the guest will not be asked to save implicitly tells agents to ensure saving happens elsewhere.

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

dosbox_read_framebufferA
Read-only

Read the guest's screen straight out of the emulator's video memory: the palette indices the guest wrote, at the instant of the read, with no window, no scaling and no palette round trip. Prefer this over dosbox_capture_screen for anything quantitative -- photographing the window costs the guest real time and can catch a half-drawn frame.

FINDING THE PAGE NEEDS A REFERENCE. Give reference= a 64,000-byte frame of what is on screen and the page is confirmed byte for byte; without one this refuses, because a blind scan finds the most picture-like page in memory and on a real guest that is often a sprite bank or an offscreen buffer. Once confirmed the location is cached and every later read is free. allow_unconfirmed=true takes the guess anyway.

Writes .bin (one byte per pixel) and .png when stem is given. A page-flipping game has more than one page; pass page_offset from the pages list to read the other.

NameRequiredDescriptionDefault
pidNo
stemNoOutput path without a suffix; omit to only report.
relocateNoSearch for the page again rather than reusing the cached one.
referenceNoPath to a 64,000-byte frame of what is on screen, to confirm the page.
page_offsetNoByte offset of the page, from a previous call's pages list.
allow_unconfirmedNoAccept an unconfirmed blind scan; check the result yourself.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint by explaining that a reference page is required for confirmation, that a blind scan otherwise occurs but is refused, that confirmed locations are cached, and that the tool writes <stem>.bin and <stem>.png when a stem is provided. These are consequential observable behaviors an agent needs to know.

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?

Three paragraphs, each with a distinct job: what it is, the reference/caching constraint, and the outputs/page-flip behavior. It is longer than the minimal examples but stays dense and front-loaded; the all-caps phrase is loud but not actually redundant.

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?

For a 6-parameter tool with no required arguments, this description supplies the essential decision context: when to use it, what the reference requirement is, why the cache exists, what files are written, and how page_offset relates to page-flipping. With the output schema present, the return values need not be re-explained.

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

Parameters4/5

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

Schema coverage is high (83%), so the schema does much of the work. The description adds meaningful semantics to reference (64,000-byte frame, byte-for-byte confirmation), stem (writes .bin/.png), page_offset (page-flipping games), and allow_unconfirmed (takes the unsafe blind scan). It does not add nuance for pid or expose the 'relocate' parameter by name, though schema descriptions cover those.

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 opens with a specific, purposeful verb and resource: "Read the guest's screen straight out of the emulator's video memory." It then precisely characterizes the return (palette indices at the instant of the read) and calls out the sibling it is not, dosbox_capture_screen, making the tool unambiguous.

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?

Explicit usage guidance: 'Prefer this over dosbox_capture_screen for anything quantitative,' with reasoning about guest-time cost and half-drawn frames. It also states the reference requirement, the refusal to guess by default, and when allow_unconfirmed is appropriate.

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

dosbox_read_memoryA
Read-only

Read bytes from the guest. With no segment this is the game's own data segment and offset may be a profile symbol name; with segment=0x1234 it is any segment in the guest -- another program in a launcher chain, a TSR, an overlay, or the interrupt vector table at segment 0. Choose a format: hex (raw bytes), u8/u16/u32 (little-endian numbers), or text (NUL-terminated string). This is how to read game state -- money, a unit's health, which screen is up -- without any of it being visible on screen.

NameRequiredDescriptionDefault
pidNo
formatNohex
lengthNoBytes to read.
offsetYesOffset, or a symbol name when no segment is given.
segmentNoGuest segment; omit for the profile's data segment.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true, so the non-mutating behavior is covered. The description adds useful behavioral context beyond the annotations, including segment semantics, profile symbol offsets, and format interpretations like little-endian numbers or NUL-terminated text. It does not mention authentication, side effects, or limits, but those are minor for a read-only memory tool.

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 three sentences with a clear front-loaded action, followed by concrete addressing behavior, formats, and a motivating use case. Every sentence earns its place, and nothing feels like filler or repeated schema content.

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?

Given the output schema exists and annotations already cover read-only behavior, the description is nearly complete for calling the tool. It covers the required option, offset semantics, segment behavior, format enum, and maximum scope. The only meaningful missing context is an explicit statement about when pid needs to be set, but that does not block the common case.

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?

The schema already documents offset, segment, and length, but the description adds meaningful semantics: symbol-name offsets only apply when segment is omitted, segment values can address another program/TSR/interrupt vector table, and format values have precise meanings (little-endian integers, NUL-terminated text). This compensates well for the remaining 40% schema coverage gap, though performance on pid remains untouched.

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

Purpose4/5

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

The description clearly states the tool reads bytes from guest memory and explains the two addressing modes (default data segment vs. an explicit segment). It frames the purpose as reading game state such as money or health, which makes the resource scope obvious. It does not explicitly distinguish itself from sibling read-style tools like dosbox_read_framebuffer or dosbox_dump_segment, but the action and resource are specific.

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

Usage Guidelines4/5

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

The description gives clear usage context: use it to read guest memory state, with offset-as-symbol when no segment is provided and any segment when segment is provided. It even calls out this is 'how to read game state.' However, it does not explicitly list alternatives or state when not to use it, such as pointing to dosbox_search_memory or dosbox_write_memory.

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

dosbox_read_traceA
Read-only

Read what an installed trace has recorded: the values from its most recent hit, and how many times it has fired. A hit count of zero means the traced call has not run -- which is itself an answer.

NameRequiredDescriptionDefault
pidNo
handleNoTrace handle; omit if only one is installed.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true, covering the non-mutating nature. The description adds meaningful context beyond those hints by disclosing that only the most recent hit is visible and that a hit count of zero is itself a useful answer.

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?

Two sentences, with no filler. The core action and output shape come first, and the actionable interpretation of a zero hit count follows immediately. This is efficient and front-loaded.

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?

Given that output schema exists, annotations cover safety, and the operation is a simple trace read, the description provides enough operating context. The main residual gap is the undocumented pid parameter, but it is optional and handle is already described in the schema.

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?

Schema coverage is only 50%, and the description does not compensate for the undocumented pid parameter. The handle parameter does have schema-level meaning ('omit if only one is installed'), but the description itself adds no parameter-level guidance. An agent would have to infer what pid refers to.

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-resource pair: 'Read what an installed trace has recorded' and specifies exactly the returned information (most recent hit values and hit count). It also differentiates itself from siblings like dosbox_install_trace and dosbox_remove_trace by describing a read of existing recorded state.

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

Usage Guidelines4/5

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

The description clearly implies when to use it: after a trace is installed, to see whether it fired and what values were captured. Interpreting a zero hit count is also explicitly explained, which guides acting on the result. It does not explicitly name alternatives or state when not to use this tool, so it does not earn a 5.

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

dosbox_recordA

Record the guest's sound for a stretch of time and return the file that appeared: an OPL register log (.dro), the MIDI stream (.mid) or the mixer output (.wav). This is the only independent record of what a game's sound driver actually writes. Arm it EARLY -- DOSBox-X starts an OPL capture at the guest's first register write, so arming late does not truncate the capture, it starts it somewhere else entirely.

NameRequiredDescriptionDefault
pidNo
kindNorecord_opl
configNoConfig file, to find its captures= directory.
secondsYesHow long to record.
settle_secondsNo
captures_directoryNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description reveals a genuinely non-obvious behavior: DOSBox-X starts an OPL capture at the guest's first register write, so arming late moves the capture window rather than truncating it. This is valuable behavioral context and is consistent with the annotations' readOnlyHint=false and destructiveHint=false.

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 compact and front-loaded: the first sentence states the action and output, the second states the tool's unique value, and the third gives the most critical timing caution. Every sentence earns its place and there is no redundant repetition of the schema or annotations.

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

Completeness3/5

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

Because an output schema exists, the description does not need to detail the return value, but the tool still has six parameters and one enum option (record_video) that are only partially or inconsistently covered by the description. The core 'provide a duration and record audio' flow is well explained, but the video capture and file-location parameters could leave an agent guessing in less common invocations.

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

Parameters3/5

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

With only 33% schema description coverage, the description partially compensates by mapping record kinds to file formats (.dro, .mid, .wav), which helps with the kind parameter. However, it ignores pid, settle_seconds, captures_directory, config's full role, and the record_video enum alternative, leaving several parameters under-explained.

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

Purpose4/5

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

The description uses a specific action ('Record the guest's sound...') and clearly names the produced artifacts (.dro, .mid, .wav), so an agent can tell this is an audio-capture tool. However, it does not differentiate it from related siblings like dosbox_capture_screen or dosbox_sample, and it omits the record_video kind that appears in the schema.

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

Usage Guidelines4/5

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

The phrase 'This is the only independent record of what a game's sound driver actually writes' gives a strong, explicit reason to use this tool over alternatives for sound-driver investigation. The early-arming warning also adds context, though it does not explicitly name sibling tools or say when not to use this tool.

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

dosbox_remove_traceB
Destructive

Remove an installed trace: the call site is restored first so nothing new can enter the cave, then the cave is blanked.

NameRequiredDescriptionDefault
pidNo
handleNoTrace handle; omit if only one is installed.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

The annotations already indicate destructive=true and readOnly=false. The description adds useful process context: the call site is restored first to prevent new entries, then the cave is blanked. This goes beyond the annotations by describing the sequence and the protective safety step.

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 sentence with the main action front-loaded and no unnecessary repetition. The use of metaphorical terms like 'cave' introduces slight ambiguity but does not bloat the description.

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

Completeness3/5

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

An output schema exists, and the description sufficiently exposes the destructive process and ordering. However, it does not clarify how pid relates to the target trace or what the caller should do when multiple trace handles exist, which is meaningful for a destructive tool.

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 description does not explain pid or handle, and schema coverage is only 50% (handle is documented but pid is not). Since the description must compensate for that gap, the lack of any parameter-level meaning leaves an agent guessing about how to identify the trace to remove.

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

Purpose4/5

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

The phrase 'Remove an installed trace' names a specific verb and resource and clearly states the core action. The additional call-site/cave detail describes what removal entails, though it does not explicitly differentiate the tool from siblings like dosbox_install_trace or dosbox_read_trace.

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?

There is no guidance about when to prefer this tool over alternatives, no mention of prerequisites, and no exclusions such as 'use dosbox_read_trace instead to inspect a trace.' The usage context is only implicit in the action named by the description.

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

dosbox_sampleA

Sample a set of memory fields repeatedly and write the series as a TSV. dosbox_read_memory answers what a value is and dosbox_wait_for answers when it becomes something; this answers how it MOVES, which is what most questions about a running program actually are. Every field in a row comes from one snapshot, so the columns do not drift against each other. watch takes symbol names, offsets, or the name of a watch set the profile defines. The whole segment at the entry instant is dumped beside the TSV, so a question nobody thought to put in the watch list can still be answered offline.

NameRequiredDescriptionDefault
hzNoSamples per second.
outNoWrite <out>.tsv and <out>_entry_ds.bin.
pidNo
pokesNoWritten once after the entry sample, before the series.
watchYesSymbols, offsets, or a watch-set name.
secondsNoHow long to sample.
settle_secondsNoWait between the entry sample and the pokes.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations by explaining that each row shares a coherent snapshot (no column drift), that the output is an on-disk TSV plus an entry-time segment dump, and that the dump allows offline investigation. It does not enumerate every side effect, such as pokes, but the schema already documents those and the annotations are consistent.

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 front-loaded with the core purpose and each major sentence contributes useful context: the semantics, the sibling contrast, the snapshot consistency guarantee, and the side outputs. The rhetorical phrase 'which is what most questions about a running program actually are' is slightly extraneous but not bloated or confusing.

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 7-parameter tool with high schema coverage and supporting annotations, the description covers the conceptual essentials: what it samples, how it differs from siblings, and what output artifacts are produced. It does not spell out duration, frequency, or pokes flow, but those are already described in the input schema and the description is strong enough for selection and initial invocation.

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

Parameters3/5

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

With 86% schema description coverage, the schema does most of the parameter-documentation work, so a baseline of 3 is appropriate. The description adds a little extra meaning by clarifying that watches can be symbols, offsets, or profile-defined watch sets and that the dump lets unreported questions be answered later, but it does not redefine the parameter contracts.

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 opens with a specific verb and resource: 'Sample a set of memory fields repeatedly and write the series as a TSV.' It then immediately distinguishes itself from dosbox_read_memory and dosbox_wait_for by positioning this tool as answering 'how it MOVES,' so an agent can tell what the tool does without opening the 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?

It gives an explicit routing rule: dosbox_read_memory answers what a value is, dosbox_wait_for answers when it becomes something, and this tool answers how it moves over time. This is a genuine when-to-use vs. alternative-tool comparison, not just a vague statement of behavior.

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

dosbox_search_memoryA
Read-only

Search the guest's 640 KiB of conventional memory for a byte pattern and report every hit as a guest segment:offset. This is how a known string -- a file name the game opens, a message it prints -- becomes the segment that holds it, which is the first step in writing a profile. Give text, or hex for raw bytes.

NameRequiredDescriptionDefault
hexNoRaw bytes as hex, instead of text.
pidNo
textNoLiteral text to find (latin-1).
limitNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the readOnlyHint and openWorldHint annotations: it states the exact memory region searched, that every hit is reported, and the output form as segment:offset. There are no hidden side effects or contradictions.

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?

Three compact sentences each carry functional weight: the operation and result, the motivating scenario, and the input modes. No padding or repetition of schema fields.

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?

The description gives enough context about how to call the tool, what it returns, and why it matters in the profiling workflow. The main omission is guidance on pid/limit, but since zero parameters are required, defaults plus the schema cover most invocation scenarios.

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

Parameters3/5

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

The description explains the key text-versus-hex choice and suggests raw bytes, while the schema describes text as latin-1. However, pid and limit are not documented anywhere, and with 50% schema coverage the description should have compensated a bit more for those two unexplained parameters.

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 a specific operation: searching the guest's 640 KiB conventional memory for a byte pattern and reporting each hit as a guest segment:offset. This distinguishes it from read/dump siblings by making both the resource and the hit-reporting behavior explicit.

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

Usage Guidelines4/5

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

It gives a concrete use case: converting a known game string or message into the segment where it lives, as the first step in profiling. It does not explicitly list alternatives or exclusions, so it falls just short of a 5, but the context is clearly conveyed.

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

dosbox_send_keysA

Type into the guest by appending to its BIOS keyboard ring buffer -- no window focus, no host keystrokes. Each item is a single character or a key name (space, enter, esc, tab, backspace, up, down, left, right, home, end, pgup, pgdn, plus, minus, f1..f10). Keys are paced apart so the game consumes them one screen at a time; the ring holds 15, so send small batches and let the game catch up. Fails cleanly if the ring is full, which means the game is waiting on the mouse, not the keyboard.

NameRequiredDescriptionDefault
pidNo
keysYesKeys to send, in order.
pace_secondsNoDelay between keys.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses rich behavior beyond the annotations: the buffered injection mechanism, no host keystrokes, paced delivery, ring capacity, and clean failure on a full ring. These facts are not visible in readOnlyHint/openWorldHint/destructiveHint and directly improve an agent's ability to use the tool safely.

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?

Three dense sentences, each earning its place: mechanism, key vocabulary, and pacing/capacity constraints. The most important fact is front-loaded, and there is no filler or repetition.

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?

For a tool with an output schema, annotations, and only three parameters, the description covers the essential behaviors, constraints, key-format rules, and failure semantics. The agent has enough context to call it correctly without additional lookup.

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?

Adds meaning the schema leaves out: each array item is a single character or a named key, it enumerates valid key names, and it explains the purpose of pace_seconds. The optional pid is not explained, but since it is nullable and has a default it does not block correct use.

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?

Leads with a precise action: 'Type into the guest' by appending to its BIOS ring buffer. It also distinguishes itself from mouse/focus-dependent input tools by saying 'no window focus, no host keystrokes'.

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

Usage Guidelines4/5

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

Provides clear operational guidance: send small batches, respect pacing, and interpret a full ring as the game waiting on the mouse rather than the keyboard. It does not explicitly name sibling alternatives like dosbox_click or dosbox_hold_buttons, so the guidance is strong but not fully exclusionary.

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

dosbox_sessionsB
Read-only

List attached sessions and any other visible DOSBox-X windows on the machine, with their process ids.

NameRequiredDescriptionDefault
window_titleNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate read-only and open-world behavior, so the safety profile is covered. The description additionally clarifies scope by noting it returns both attached sessions and other visible DOSBox-X windows on the machine, but it does not describe how filtering or window-title affects results. No contradiction with annotations exists.

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 focused sentence. It front-loads the main action and result, and every phrase ('attached sessions', 'other visible windows', 'process ids') adds value. No filler or repetition.

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 simple read-only listing tool, this is largely complete: it says what is listed, the scope, and an important output detail (process IDs). The output schema exists so return documentation is not needed. The main omission is that the optional window_title parameter is not mentioned, which is important for full standalone clarity.

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?

Schema description coverage is 0%, so the description must compensate for the undocumented parameter. It does not mention `window_title` at all, leaving the agent to infer whether it is for filtering, matching, or returning output. The parameter name offers some minimal hint, but not sufficient guarantees.

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

Purpose4/5

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

The description uses a specific verb ('List') and identifies the resource ('attached sessions and any other visible DOSBox-X windows on the machine'), including process IDs. This is clear and distinct from the sibling options, though it does not explicitly differentiate itself by naming an alternative tool.

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 intended use is implied: call this to enumerate sessions/windows and their process IDs. However, it does not state when to prefer this over sibling tools like dosbox_attach, dosbox_launch, or dosbox_profiles, nor does it provide explicit exclusion conditions.

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

dosbox_view_screenA
Read-only

Look at the emulator's screen. Returns the current frame as an image, photographed from the window without activating it. Use this to see where the game actually is between steps; use dosbox_capture_screen when the frame has to be exact and saved.

NameRequiredDescriptionDefault
pidNo
max_widthNoDownscale wider images to this.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral context: capturing from a window photograph without activating it implies non-exact/approximate output, and clarifying the contrast with 'exact and saved' helps set expectations. It could additionally state output format details, but the annotations already cover the key safe-read behavior.

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?

Three sentences, all substantive, with the primary function and key differentiator front-loaded. No filler or redundant prose.

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?

For a simple read-only view tool with two optional parameters, defaults, and only an image return value, the description gives everything an agent needs to determine when to call it and what result to expect. It even routes to the exact-frame sibling.

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

Parameters3/5

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

Schema coverage is 50%: max_width is thoroughly described in the schema, but pid is not. The description does not explain pid's role or when to provide it, though pid is optional with a null default and max_width is already documented. Since the missing parameter is optional and low-risk, baseline 3 is appropriate.

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 action ('look at/results in the current frame as an image') and the resource (the emulator screen). It also explicitly distinguishes the tool from dosbox_capture_screen by noting this view is photographed from the window and not guaranteed to be the exact saved frame.

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?

It states when to use this tool ('see where the game actually is between steps') and provides the alternative condition: use dosbox_capture_screen when the frame has to be exact and saved. This gives clear decision guidance to an agent.

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

dosbox_wait_forA
Read-only

Block until a memory field satisfies a test, or the timeout runs out. Use it to wait for a screen transition, an animation to finish, or a state byte to settle, instead of guessing at sleeps. Returns whether the test was satisfied and the last value seen -- it does not raise on timeout, so a caller can decide what a timeout means.

NameRequiredDescriptionDefault
pidNo
sizeNo
any_ofNo
equalsNo
offsetYesData-segment offset or symbol name.
at_mostNo
at_leastNo
not_equalsNo
poll_secondsNo
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

The description discloses important behavioral traits beyond the readOnlyHint annotation: it does not raise on timeout, it returns whether the test was satisfied and the last value seen, and it blocks. This is genuinely useful context beyond the annotations. It could add more detail about invalid offsets or poll behavior, but for a read-only operation this is solid.

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 concise two-sentence structure: first states the core behavioral guarantee, then gives use cases, then states the return policy and timeout behavior. Every sentence stands alone and adds value without padding or restating the tool name.

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

Completeness3/5

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

The description covers the high-level operation, use cases, and timeout contract, and the existence of an output schema lessens the need to spell out return structure. However, the tool has 10 parameters and only 10% schema description coverage, so the description lacks essential detail on how to specify the test condition and how polling works. It is adequate for basic guidance but not fully complete for predictable invocation.

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?

Schema description coverage is only 10%, and the description does not compensate. It says only 'satisfies a test' with a memory field, leaving equals, any_of, at_most, at_least, not_equals, size, pid, poll_seconds, and timeout_seconds semantics to inference. An agent has to guess how multiple conditions combine or whether they are exclusive. The description adds little meaning beyond what parameter titles already hint at.

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

Purpose4/5

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

The description clearly states a specific verb and resource: 'Block until a memory field satisfies a test, or the timeout runs out.' It also gives concrete use examples like screen transitions, animations, and state bytes, which help distinguish it from memory reading or search tools. It does not explicitly name an alternative sibling, so it slightly under-delivers on full sibling differentiation.

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

Usage Guidelines4/5

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

The description explicitly says to use this when waiting for a screen transition, animation finish, or state byte to settle, and contrasts it with guessing at sleeps. It gives clear situational guidance, but it does not explicitly say when not to use it or how it compares to alternatives like watch_frames or read_memory polling.

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

dosbox_watch_framesA

Watch the guest's video memory and return every distinct frame it put up, with the moment each appeared. This is how to measure an animation, a fade or a transition -- reading video memory does not slow the guest the way filming the window does, so the timings are the guest's own. Frames are written as _NNN.png.

NameRequiredDescriptionDefault
pidNo
stemNoWhere to write the frames; omit to only count them.
secondsYesHow long to watch.
referenceNoPath to a 64,000-byte frame on screen now, to confirm the page.
max_framesNo
interval_secondsNo
allow_unconfirmedNoAccept an unconfirmed blind scan.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds meaningful behavior beyond what annotations already state: it reads video memory rather than the GUI, does not slow the guest, captures distinct frames with the guest's own timings, and writes files as <stem>_NNN.png. This complements the readOnlyHint/destructiveHint flags well.

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 short, front-loaded, and has no fluff. Both the outcome and the distinctive behavior are introduced early, and each sentence earns its place.

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 tool with seven parameters and an output schema, the description provides the core context: what it watches, when to use it, and where frames land. It does not explain the max_frames/interval cap fully, but those are already documented in the schema. It is nearly complete and trustworthy.

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

Parameters3/5

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

The description adds a bit of parameter meaning, especially around stem by explaining the file naming convention. However, with 57% schema coverage, the description does not flesh out key parameters like pid, max_frames, or interval_seconds beyond their schema descriptions. It is adequate but not compensating significantly.

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 names a specific action and resource: watching the guest's video memory and returning distinct frames with their appearance timings. It also distinguishes itself from filming the screen by noting that reading video memory does not slow the guest, so it is clearly targetable among the many dosbox sibling tools.

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

Usage Guidelines4/5

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

The description explicitly says this is how to measure animations, fades, and transitions, and explains why it should be preferred over filming the window. It does not formally name alternative tools or list exclusion conditions, so it is clear but not maximally prescriptive.

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

dosbox_write_memoryA
Destructive

Patch the game's data segment. This is how to set up a state that would otherwise take hours of play -- a treasury, a rank, a flag -- so a particular screen or code path can be reached. Writes land in the running game and are not undoable; the game may recompute a field shortly after it is written, so patch at a moment where it will be read before it is recomputed.

NameRequiredDescriptionDefault
pidNo
writesYes
segmentNoGuest segment for every write; omit for the profile's.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Even though annotations already signal a destructive, non-read-only operation, the description adds valuable behavioral detail: writes land in the running game, are not undoable, and the game may recompute a field shortly after it is written. This is exactly the kind of non-obvious runtime behavior an agent needs to know. No contradiction with annotations.

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?

Three sentences deliver the core purpose, a motivating use case, and the critical timing/durability caveat. There is no filler or repetition; every sentence earns its place.

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 destructive memory-mutation tool, the description is nearly complete: it says why to use it, what makes it dangerous, and what timing to respect. It does not explicitly state the requirement that a target session/game is already attached or running, nor mention targeting via pid. That is a minor gap and is mostly inferable from sibling tools and the schema.

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

Parameters3/5

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

The nested schema already explains offset, size, value, and hex well, but the description adds little parameter-specific detail beyond casting writes as patches to game state. It does not clarify the top-level pid, writes, or segment semantics in prose, and top-level schema description coverage is only 33%. The description is behaviorally useful but does not fully compensate for that gap.

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 opens with a specific verb and target: 'Patch the game's data segment.' It then clarifies the concrete use case—setting up a state like a treasury, rank, or flag to reach a particular screen or code path. This clearly distinguishes it from the sibling read/search/memory tools.

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

Usage Guidelines4/5

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

It gives clear context for when the tool should be used: when a state would otherwise take hours of gameplay. It also gives timing guidance: patch where the value will be read before the game recomputes it. It does not explicitly state when-not-to-use or name alternatives, so it stops just short of perfect.

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. 26 tool updatesv0.2.0
    • First observeddosbox_attach
    • First observeddosbox_capabilities
    • First observeddosbox_capture_screen
    • First observeddosbox_click
    • First observeddosbox_dump_segment
    • First observeddosbox_emulator_command
    • First observeddosbox_find_cave
    • First observeddosbox_find_guest
    • First observeddosbox_hold_buttons
    • First observeddosbox_install_trace
    • First observeddosbox_launch
    • First observeddosbox_profiles
    • First observeddosbox_quit
    • First observeddosbox_read_framebuffer
    • First observeddosbox_read_memory
    • First observeddosbox_read_trace
    • First observeddosbox_record
    • First observeddosbox_remove_trace
    • First observeddosbox_sample
    • First observeddosbox_search_memory
    • First observeddosbox_send_keys
    • First observeddosbox_sessions
    • First observeddosbox_view_screen
    • First observeddosbox_wait_for
    • First observeddosbox_watch_frames
    • First observeddosbox_write_memory

TDQS

A3.9/5.0

Scored across 26 tools

Disambiguation3/5

The tools cluster into clear capability areas, but within some clusters the boundaries are narrow: view_screen, capture_screen, read_framebuffer, and watch_frames all provide screen-related output, and launch/attach/find_guest all establish a guest context in different ways. The detailed descriptions make the distinctions learnable, but an agent would need to read them carefully before selecting the right tool.

Naming Consistency4/5

The dosbox_ prefix plus snake_case is used consistently, and most tools follow a clear verb_noun pattern such as send_keys, read_memory, and install_trace. A few resource/query names such as dosbox_profiles, dosbox_sessions, and dosbox_capabilities drop the verb form, which is a minor but noticeable inconsistency.

Tool Count4/5

26 tools is large and heavier than the conventional well-scoped 3-15 range, but the tool set represents a genuinely broad and specialized domain: process management, input, memory inspection/editing, frame capture, tracing, and recording. The size feels deliberately broad rather than padded.

Completeness5/5

The set covers the full workflow of driving and inspecting a DOSBox-X guest: launch/attach/quit, keyboard/mouse input, read/write/search/dump memory, sample state over time, watch screen frames, and install/read/remove code traces. No major dead-end operations are apparent that would force the agent to leave the server to complete a task.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables headless debugging of Windows executables from Linux/macOS hosts by orchestrating winedbg's gdbserver and a GDB client, exposing 19 tools for launch, attach, breakpoints, stepping, register/memory access, and session lifecycle.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables an MCP client to observe and control a text-mode DOS system via a Python bridge, supporting keyboard input and screen capture.
    8
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    This MCP server enables AI agents to inspect and control the native DOSBox-X debugger through bounded MCP tools, including breakpoint management, execution control, register/memory inspection, and disassembly for DOS program debugging and reverse engineering.
    1
    -