fivem-mcp-server
Provides tools for building, running, and live-testing FiveM servers through RCON, client devcon, game window input/screenshot, and an in-game bridge for natives, exports, and NUI callbacks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fivem-mcp-serverrestart the mcpb resource and check the client console for errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fivem-mcp
An MCP (Model Context Protocol) server that lets AI agents — Claude, Qwen, or anything that speaks MCP — build, run and live-test FiveM servers from the same machine.
It is the missing test layer for the "did it actually work in-game?" question: the agent can run real console commands, watch both the server log and the live F8 console of a running FiveM client, wait for specific output, and react — without you touching the keyboard.
agent (Claude / Qwen / …)
│ MCP over stdio
▼
fivem-mcp-server ──► UDP RCON / getinfo ──► FXServer (game port, e.g. 30120)
──► TCP devcon (29200/29300) ──► FiveM Legacy client F8 console
──► tail ─────────────────────► FXServer's redirected stdout logStatus
v0.5 drives the whole loop: server console (RCON), client F8 console (devcon), the game
window (launch, focus, screenshot, keyboard/mouse) and an in-game bridge (mcpb) for
natives, exports and NUI callbacks — plus ready-made test prompts. Tools answer with
structured content, carry MCP annotations, and stop as soon as the client cancels. All of it live-verified
against a real FXServer + FiveM Legacy client (see docs/plan.md and scripts/live-*.mjs).
Related MCP server: Universal Computer Control MCP
Where it is published
Channel | Address |
npm | fivem-mcp-server — |
MCP Registry |
|
Source releases | GitHub Releases, tagged |
The repository's GitHub Packages sidebar is deliberately empty: the artifact lives on
npmjs.com, not GitHub Packages — the latter would force a scoped @ziyacivan/ package name
and a second registry for no benefit.
Requirements
Node 22+ (Windows, macOS or Linux for the server side; the client devcon works wherever the FiveM client runs — this tool must run on that machine for the
client_*tools since devcon binds to localhost by default).A running FXServer you administer (
rcon_passwordset forserver_command).The Legacy FiveM client for the client-console tools (Enhanced removed the client devcon ports; see docs/protocol.md).
The keyboard/mouse/screenshot tools are Windows-only and run on the machine with the game. On other platforms every tool except those is served normally.
Install
Published on npm — no clone needed. Add it to Claude Code in one line:
claude mcp add fivem -s user \
-e FIVEM_RCON_PASSWORD=your-rcon-password \
-e FIVEM_SERVER_LOG=C:\FXServer\my-data\server.log \
-- npx -y fivem-mcp-server(-s user = available in every project; drop it for a per-project entry. Verify with claude mcp get fivem — status should read ✓ Connected. Remove with claude mcp remove fivem -s user.)
For a shared project config, put .mcp.json in the repo root and commit it —
Claude Code asks to approve it on first open, and env values can be interpolated
from your local .env-less shell via ${VAR} expansion:
{
"mcpServers": {
"fivem": {
"command": "npx",
"args": ["-y", "fivem-mcp-server"],
"env": {
"FIVEM_RCON_PASSWORD": "${FIVEM_RCON_PASSWORD}",
"FIVEM_SERVER_LOG": "${FIVEM_SERVER_LOG}"
}
}
}
}For Claude Desktop (or any client with JSON config), add to
claude_desktop_config.json:
{
"mcpServers": {
"fivem": {
"command": "npx",
"args": ["-y", "fivem-mcp-server"],
"env": { "FIVEM_RCON_PASSWORD": "your-rcon-password" }
}
}
}The server is also listed in the MCP Registry as
io.github.ziyacivan/fivem-mcp. Building from source (development):
git clone https://github.com/ziyacivan/fivem-mcp
cd fivem-mcp && pnpm install && pnpm build
claude mcp add fivem -- node ./dist/index.js # points at your working copyConfiguration (environment)
Variable | Default | Meaning |
|
| Machine running the FiveM client (devcon host) |
|
| FiveM.exe for the |
|
| Override the client devcon port |
|
| FXServer game port (UDP RCON + getinfo) |
| — | Matches |
| — | Path to FXServer's redirected stdout; enables server-side |
| — | Matches |
|
| Client console lines kept in the ring buffer |
|
| Consider command output done after this quiet period |
|
| Default max wait for |
| — |
|
Tools
Tool | What it does |
| Connection state: RCON, log file, client devcon. Call first. |
|
|
| Any server console command over UDP RCON; returns the captured output. |
| Types into the F8 console of a running Legacy client over devcon (nothing steals focus). This is the local console command layer — |
| Recent lines: client = live devcon stream (with |
| Block until a line matching a regex appears — your assertion primitive. |
| Every command the client console knows (devcon handshake). |
| Start FiveM, optionally straight into |
| Graceful |
| Game window existence, title, pid, rect, foreground state. |
| Bring the game forward / give focus back to your window. Input tools focus automatically. |
| PNG of the game window (PrintWindow, screen-BitBlt fallback). Downscaled — default 900, optional |
| Real scan-code input — GTA's DirectInput ignores VK-only injection. Held keys are released if the process dies. |
| Literal Unicode events — the channel the F8 console and chat NUI read. |
| Relative moves drive the camera; absolute coordinates position the cursor for NUI. |
| Pause between actions (loading screens, walk cycles). |
| The newest |
| Invoke the |
Prompts
Two workflows are shipped as MCP prompts, distilled from the live-verified loops:
test_resource(resource, expectations?)— clean restart → console error scan → client-half scan → in-game scenario (keys, screenshot, bridge state) → evidence-backed PASS/FAIL report where anything unverifiable is said so out loud.smoke_check— one fast sweep: connections, which server, error tails on both sides, window + screenshot, persisted client log. OK/WARN/DOWN per line.
The bridge resource (bridge/)
Client-side testing (natives, NUI callbacks, position) is outside what devcon and RCON can reach — the small companion resource closes that gap and ships in this repo.
# on the dev server
cp -r bridge/ <server-data>/resources/mcpb # or a junction
# server.cfg:
# ensure mcpb
# setr mcpb_enabled true
# setr mcpb_token <a-random-token>
# setr mcpb_event_allowlist my:event,other:event # trigger_event may fire only these
# setr mcpb_export_allowlist myres:*,other:method # optional; empty = any export
# setr mcpb_native_allowlist SetEntityHealth,GetGameTimer # optional; empty = any native
# setr mcpb_client_timeout_ms 8000 # a silent client fails fast
# setr mcpb_verbose true # echo requests to both consolesand point this server at it with FIVEM_MCPB_TOKEN. Then:
bridge { target: "client", src: 1, op: "position" }
bridge { target: "server", op: "call_export", args: "{\"resource\":\"myres\",\"method\":\"money\",\"args\":[1]}" }Client results come back through an in-band queue polled over RCON (~100 ms granularity since v0.5 — no log file needed; pre-0.5 resources still fall back to the log tail).
Dev servers only. mcpb_enabled defaults to false, the command is accepted only from
the console/RCON (never from a player), and the token is checked when set — but
call_native is exactly as safe as the console it runs behind. Keep RCON and this bridge
off anything you care about; see SECURITY.md. The full wire contract: docs/protocol.md §4.
Typical loop (what an agent does)
server_command: "ensure my-resource"wait_for_console: target=server, pattern="Started resource my-resource|Error"client_command: "connect localhost:30120"drives the join itself, thenread_console: target=clientcatches client-side console output that never reaches the server log.
Security notes — read before exposing anything
The client devcon socket has no authentication. Anyone who can reach it can run local console commands in that game client (connect, quit, ...). FiveM binds it to
127.0.0.1unless the client is started with-devcon(then0.0.0.0); this tool assumes the loopback default and never needs more. Do not tunnel it.RCON is the server's admin root. Keep
rcon_passwordstrong;FIVEM_RCON_PASSWORDlives in your MCP config — protect that file the same way.FXServer itself has no server-side devcon socket on current builds (verified 2026-09-02), which is why the server half is RCON + log tail.
Treat
server_commandas giving the agent root on your box the moment it canexecanything; run it only against development servers.
Development
pnpm test # vitest: fake devcon/rcon servers, byte-level SendInput/PNG checks, bridge contract, docs drift
pnpm typecheck
pnpm check # biome
pnpm build # -> dist/
pnpm run ci # all of the above (plain `pnpm ci` is a pnpm builtin and errors)Releasing: move the Unreleased changelog notes under the new version heading, then
pnpm version <patch|minor|major> (bumps and syncs server.json + the bridge manifest,
and tags), npm publish from your machine (prepublishOnly runs the full gate), and
git push --follow-tags. The Release workflow then re-runs the gate, creates the GitHub
Release from CHANGELOG.md, and registers the version with the MCP Registry.
See CONTRIBUTING.md.
Live verification against a real server/game: pnpm live:probe, live:e2e, live:m2, live:m3.
The wire protocol (DevCon frames, RCON/getinfo OOB datagrams, the Cfx string hash)
is documented byte-by-byte in docs/protocol.md, derived from the
open-source CitizenFX server, citizenfx/fivem@03dcc562. Live-verified: RCON reply
format, getinfo response and the >8-byte challenge drop were confirmed against a
real FXServer on 2026-09-02.
License
MIT. The FiveM/CitizenFX name is a trademark of Cfx.re; this project is not affiliated with or endorsed by Cfx.re.
Available Tools
23 toolsbridgeInvoke a bridge operation (mcpb resource)ADestructive
Runs an operation through the mcpb bridge resource — the half neither devcon nor RCON can reach. Server ops (target=server): ping, players, poll, call_export, trigger_event, wait; call_export {resource, method, args}, trigger_event {event, args, toClient?, player?} (event names must be in mcpb_event_allowlist). Client ops (target=client, needs src): ping, position, teleport, freeze, call_native, send_nui, nui_callback; teleport {x,y,z,heading?}, freeze {freeze}, call_native {name, args}, send_nui {resource, message, event?}, nui_callback {resource, endpoint, payload}. Client results are collected in-band via the bridge's poll queue — no FIVEM_SERVER_LOG needed. The bridge must be installed, started and enabled (mcpb_enabled true).
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation name (see description for which target) | |
| src | No | Player server id (required for target=client) | |
| args | No | Operation arguments as a JSON object string, e.g. {"resource":"chat"} | |
| target | Yes | Where the op runs — server console or game client | |
| timeoutMs | No | Client-op result wait (default 8000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| op | Yes | |
| data | Yes | |
| target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, and the description adds genuinely new behavioral context: the prerequisite enablement state, the mcpb_event_allowlist constraint on trigger_event, and the in-band poll-queue result mechanism. It doesn't flag which specific ops are the destructive ones (teleport/freeze/send_nui), leaving some ambiguity for a destructive-annotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then the target/op matrix, then the prerequisite — a sensible order with no filler sentences. It is dense and cramped into long clauses, but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description still explains how client results arrive (poll queue, no FIVEM_SERVER_LOG). Combined with target/op routing, src requirement, timeout default and prerequisites, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes well beyond the schema by decomposing the opaque 'args' JSON string into per-op shapes ({resource, method, args}, {event, args, toClient?, player?}, teleport {x,y,z,heading?}, send_nui {resource, message, event?}). That is real added meaning the schema cannot convey; it only falls short of 5 because a few op argument sets are listed without field semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Runs an operation through the mcpb bridge resource') and immediately differentiates itself from sibling command tools by naming the boundary ('the half neither devcon nor RCON can reach'). The op inventory further pins down exactly what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for selection: server ops vs client ops, the rule that client ops 'needs src', and the prerequisite that the bridge must be installed, started and enabled. It stops short of explicitly naming when to prefer a sibling (e.g., server_command/client_command) over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickMouse clickA
Click at the current cursor position (position it with mouse_move absolute first for NUI).
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | default left | |
| double | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-destructive, non-idempotent action, so the safety profile is covered. The description's one useful addition is that the click occurs at the existing cursor position rather than at a supplied coordinate. It does not disclose latency, focus requirements, or how the click interacts with the target window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, action first, prerequisite in the parenthetical. Every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The prerequisite is covered and annotations carry the safety profile, with no output schema needed for a fire-and-forget input action. Gaps remain around what 'double' does and whether the click targets the focused window, which an agent needs for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'button' has an enum and default, but 'double' is a bare boolean with no explanation anywhere. The description mentions neither parameter, so it adds nothing to compensate for the undocumented half.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (click) and the target (current cursor position), which clearly separates it from mouse_move, the sibling it explicitly names. The scope is unambiguous, though nothing states that this is a synthetic input event rather than a UI query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite: position with 'mouse_move absolute' first, and flags the NUI case where this matters. It stops short of saying when not to use click (e.g. vs. press_key or hold_key), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_commandRun a FiveM client (F8) console commandADestructive
Type a LOCAL console command into the running Legacy client's F8 console over devcon — no screen focus needed, nothing is typed into the game window. This is the process's console context (connect, quit, tooling commands), NOT the chat command layer: commands registered with RegisterCommand are chat commands and live in a different system (run them through server_command, which has console privileges, or drive the chat UI with the M2 input tools). Waits until output goes quiet and returns the lines the client console printed.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command text, e.g. 'connect localhost:30120' | |
| timeoutMs | No | Max ms to wait for output (default 5000) | |
| waitForOutput | No | Set false to fire without waiting (long-loading maps, blocking commands) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, non-idempotent and non-readOnly, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it runs over devcon with no screen focus and nothing typed into the game window, and it waits until output goes quiet before returning printed lines. It stops short of detailing the concrete destructive effect or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence, and the behavioral and differentiation details follow in an ordered way. The chat-vs-console parenthetical is long but earns its place by preventing a common mis-selection; slightly verbose overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly discloses the return value (the lines the client console printed) and the waiting behavior, and it fully covers the guidance needed to invoke it correctly. The main gap is concrete detail on the destructive consequences implied by destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so command, timeoutMs and waitForOutput are already documented in the schema; baseline 3 applies. The description adds only the general note that no screen focus is needed, not parameter-level syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: type a LOCAL F8 console command into the running client over devcon, explicitly scoped to the process console context, not chat. It clearly separates itself from the chat command layer and names sibling server_command as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this (process console commands like connect, quit, tooling) and when not to (commands registered with RegisterCommand are chat commands), and routes the agent to the correct alternatives (server_command or M2 input tools). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_windowBring the game to the foregroundA
Restores/minimizes-out if needed and steals foreground (remembering the previous window for restore_focus). Every input/screenshot tool calls this automatically.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as a non-read-only, non-idempotent mutation of window state, so the bar is lower; the description adds genuinely useful behavior beyond that by disclosing the foreground steal, the automatic restore/minimize-out step, and that the prior window is remembered for restore_focus. It does not say what happens if the game is not running or if the steal fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the practical routing note. Every clause earns its place; nothing is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema tool this covers the essential behavior and the relationship to restore_focus and the input/screenshot family. Minor gaps remain around failure modes (game not launched, no window to focus), but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there is no parameter semantics to document; baseline 4 applies. The description correctly adds no spurious parameter discussion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('steals foreground') with concrete mechanics (restores/minimizes-out if needed), which cleanly separates it from siblings like restore_focus and window_status. The title reinforces rather than restates, and the parenthetical naming of restore_focus tells the agent how the two tools relate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Every input/screenshot tool calls this automatically' is a strong routing signal telling the agent it usually does not need to invoke this manually, and it names restore_focus as the counterpart tool. It stops short of an explicit when/when-not rule (e.g. only call if window_status shows it is not foreground), so it is clear context rather than full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hold_keyHold a key downA
Key stays pressed until release_key. Use for movement (W) and camera. Key name: W A S D E F Q space enter esc tab shift ctrl alt arrows up down left right, f1-f12, letters/digits. Held keys are released if this process exits.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false and idempotent=false, but the description adds real lifecycle behavior not in the schema: the key remains held until released, and held keys are auto-released if the process exits. That process-exit caveat is exactly the kind of context annotations can't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical semantics ('stays pressed until release_key') before the long key enumeration. The key list is lengthy but earns its place given 0% schema coverage; minor redundancy with 'arrows up down left right'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool this covers the essentials: hold semantics, the release counterpart, valid key names, and process-exit cleanup. Only gap is behavior on repeated calls with the same key, which is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'key' parameter, so the description carries the full burden — and it does, enumerating accepted key names (W/A/S/D, space, enter, esc, tab, modifiers, arrows, f1-f12, letters/digits). The 'letters/digits' bucket is vague on case/format, so it falls just short of fully specifying syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('key stays pressed until release_key') and names the complementary tool, which cleanly distinguishes it from the sibling press_key (a momentary tap). An agent can tell immediately that this is the sustained-input tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context ('use for movement (W) and camera') and points to release_key as the terminating call. It stops short of an explicit when-not (e.g., 'for a single tap use press_key instead'), so the routing decision against the sibling is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launchStart the FiveM clientA
Launch FiveM, optionally straight into a server via the fivem://connect link. Default target is the configured game port. Returns immediately — watch window_status/client_command to see when the game is up.
| Name | Required | Description | Default |
|---|---|---|---|
| connectTo | No | host:port to connect to (default: the configured rcon host:port) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, non-idempotent, non-destructive), so the description only needs to add what they cannot. It does so by disclosing the non-blocking return ('Returns immediately') and pointing at the status tools that reveal when the game is actually up — genuine behavioral context. It still omits what happens if a client is already running, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the action and the optional variant before operational notes. The 'Default target is the configured game port' sentence largely duplicates the schema default, which is the only minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param mutation tool with no output schema and solid annotation coverage, the description supplies the key missing piece — that it is asynchronous and how to observe readiness. The only gap is the undefined behavior when the game is already launched.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by tying connectTo to the 'fivem://connect link' concept and restating the default target. That is a modest but real semantic addition over the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Launch FiveM'), plus the optional scope (straight into a server via the fivem://connect link). No sibling tool launches the client, so the purpose is unambiguously separable from quit_game, window_status, and client_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use and routes the agent to the right follow-up tools ('watch window_status/client_command to see when the game is up'), which is exactly the sequencing an agent needs. There is no explicit when-not guidance (e.g. re-launching while already running), but no real alternative tool exists, so 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commandsList client console commandsARead-onlyIdempotent
The devcon handshake streams every command the client console knows (CVAR frames). For server commands, run 'help' through server_command instead. Filter with a case-insensitive substring.
| Name | Required | Description | Default |
|---|---|---|---|
| contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the data-source mechanism (handshake streams CVAR frames), which is useful context, but says nothing about volume, rate limits, or auth. With annotations carrying the safety burden, a 3 fits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what gets returned, then the routing alternative, then the filtering behavior. No filler, and each sentence carries information. Slightly dense with domain jargon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a read-only listing tool, the description covers the source, the sibling alternative, and the filter behavior. It is complete enough for correct invocation without being exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It does: 'Filter with a case-insensitive substring' explains the semantics of the 'contains' param, including case-insensitivity, which the bare schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool streams every command the client console knows, with the parenthetical '(CVAR frames)' clarifying the return. It distinguishes the client console from server commands and routes the latter to server_command, but the core action is conveyed through jargon ('devcon handshake') rather than a clean verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names an explicit alternative and the condition for using it: 'For server commands, run help through server_command instead.' That is a clear routing rule. It does not, however, address the other nearby siblings like client_command or read_console, so guidance is present but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_moveMove the mouseA
Relative dx/dy drives the in-game camera; absolute x/y (screen pixels) positions the real cursor for NUI elements.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| dx | No | ||
| dy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly=false, idempotent=false, destructive=false, openWorld=false, which together mark this as a non-idempotent state-changing input action. The description adds the meaningful behavioral distinction that the same tool drives two different targets depending on which params are used. It does not say whether movement is instantaneous, how repeated calls accumulate, or what happens with no parameters (0 required), leaving gaps beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero filler; the relative-mode semantics are front-loaded and the absolute-mode behavior follows. Every clause earns its place, and no words are wasted on restating the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, zero-required tool with no output schema and thin annotations, the description covers the core mode semantics but leaves the agent without guidance on precedence between x/y and dx/dy, units, or the effect of calling with no parameters. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and none of the four integer parameters carry descriptions, so the description carries the full semantic burden—and it does so well by mapping dx/dy to relative camera movement and x/y to absolute screen pixels. It omits units for dx/dy (degrees vs pixels), accepted defaults, and precedence when both pairs are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource (mouse movement) and splits it into two distinct modes: relative dx/dy for the in-game camera and absolute x/y for NUI cursors. That dual-mode semantics is more than the title 'Move the mouse' conveys. It stops short of naming which siblings (click, scroll) it should be paired with, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when each mode applies—relative for camera control, absolute for NUI elements—which is genuine routing guidance for two of the four parameters. However, it never states when to choose this tool over click/scroll or how the two modes interact if both are supplied, so usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_keyTap a keyA
Press and release a key (scan codes — what GTA's DirectInput/raw input reads). Key name: W A S D E F Q space enter esc tab shift ctrl alt arrows up down left right, f1-f12, letters/digits.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| holdMs | No | Hold duration (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-destructive, non-idempotent behavior. The description adds genuine context by explaining these are scan codes read by DirectInput/raw input, which justifies why it targets games, but it says nothing about timing, default hold behavior, or focus requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then the technical rationale, then the accepted values. Slightly list-heavy but every element earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter input tool with no output schema, the description covers what it does, why scan codes matter, and valid inputs. It omits focus/window prerequisites and the holdMs default, though the latter is in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the undocumented 'key' parameter is the required one; the description compensates by enumerating accepted key names (letters, digits, f1-f12, named keys). holdMs is covered by the schema, so the remaining gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('press and release a key') and the 'press and release' framing implicitly distinguishes it from the sibling tools hold_key and release_key. It stops short of naming those siblings explicitly, so differentiation requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tap semantics contrast with hold_key/release_key, but the description never states when to choose this over them or any prerequisites. The key-name list helps invocation but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quit_gameClose the FiveM clientADestructive
Graceful path: prints 'quit' to the client console over devcon and waits for the game to close (nothing is typed into the window). force: true kills the FiveM process tree instead — use it only when the game is wedged.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true; the description adds how each path works — the graceful path prints 'quit' over devcon and waits for closure without typing into the window, while force kills the process tree. This mechanism-level detail goes well beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, graceful path front-loaded before the force branch. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param, no-output-schema tool, the description covers the critical decision (graceful vs. force) and the mechanics. It omits edge cases such as what happens if the graceful path times out or fails, which would matter for an agent deciding whether to escalate to force.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'force' parameter has no schema description, so the description carries the burden — and it does, explaining that force:true kills the process tree and that the default is a graceful quit. Full parameter meaning is conveyed, though without naming acceptable values beyond boolean semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('quits the FiveM client') and immediately distinguishes the two shutdown paths (graceful console quit vs. force kill). No sibling tool does this, and the description makes that clear 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the force path ('only when the game is wedged') and implies the default graceful path otherwise. This is actionable when/when-not guidance rather than mere context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_client_logRead the FiveM client log fileARead-onlyIdempotent
Tail the newest CitizenFX_log_*.log under the FiveM install — the same stream as read_console(client) but persisted across sessions, without the channel tags.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | default 100 | |
| pattern | No | ||
| contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| lines | Yes | |
| matched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavioral detail on top — it auto-selects the newest log file and returns lines without channel tags, unlike read_console. It does not describe how the pattern/contains filters affect the stream, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the action, the target file, and the sibling contrast. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the file-selection behavior is covered. However, with 0 required params and two undocumented filter params, an agent lacks enough to use the filtering capability correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the description says nothing about any of the three parameters. Pattern (regex vs glob?) and contains (substring, case sensitivity?) are left entirely undocumented in both places, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (tail) plus resource (newest CitizenFX_log_*.log under the FiveM install) and an explicit contrast with the sibling read_console. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'the same stream as read_console(client) but persisted across sessions' tells the agent the condition that selects this tool over its sibling. It stops short of an explicit when-not rule, but the routing context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_consoleRead recent console outputARead-onlyIdempotent
Return recent console lines without running anything. For 'client', reads the devcon line buffer (live from the moment this server first connected; supports afterSeq paging). For 'server', tails FIVEM_SERVER_LOG (FXServer's redirected stdout) — the last 512 KB, filtered; afterSeq is not supported there.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max lines (default 100) | |
| target | Yes | 'server' = the FXServer console (UDP RCON; needs rcon_password). 'client' = the F8 console of a running FiveM Legacy client (devcon 29200/29300) — LOCAL console commands only (connect, quit, tooling); RegisterCommand chat commands are not console commands. | |
| channel | No | Exact channel name, e.g. 'breeze-chat' or 'script:breeze-chat' | |
| pattern | No | JS regex matched against '<channel>: <message>' | |
| afterSeq | No | client only: lines after this sequence number (response carries nextSeq) | |
| contains | No | Case-insensitive substring of the message |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| matched | Yes | |
| nextSeq | Yes | Pass as afterSeq next time (client); -1 for server |
| clientError | No | Why the client console is not live (lines may be stale) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely useful behavior the annotations cannot convey: the client buffer starts at first server connection, server output is a filtered tail of the last 512 KB, and afterSeq paging only works on the client. These data-freshness and paging constraints are exactly the non-obvious traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core guarantee ('without running anything') before splitting into the two target cases. Dense but every clause (buffer origin, 512 KB tail, filtering, afterSeq support) carries behavioral weight rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return formatting needn't be explained, and all six params are schema-documented. The description covers the hard part — per-target data sources and paging limits — though it omits the client-vs-server routing relative to the read_client_log sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters including the 'client only' note on afterSeq. The description reinforces which parameters apply to which target but adds little syntax or format detail beyond that; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Return recent console lines') and then breaks the behavior down per 'client' and 'server' target, so an agent can tell exactly which backing buffer is read. It does not, however, distinguish itself from the sibling read_client_log, which plausibly overlaps, leaving target selection between the two to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'without running anything' implicitly contrasts this with the command-execution siblings (server_command, client_command), and the requirement of rcon_password for 'server' appears in the schema. But there is no explicit when-to-use/when-not guidance and no named alternative such as read_client_log or wait_for_console.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_keyRelease held key(s)A
Release one held key, or all of them with key='all'.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is covered structurally. The description usefully discloses the 'all' sentinel behavior, which the schema does not, but says nothing about what happens if the key is not currently held or about failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, zero filler, with the scope constraint ('all') front-loaded and easy to scan. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with annotations covering safety, the description is close to adequate but omits error/edge behavior (e.g. releasing a key that is not held) and does not hint at the result. Not deficient, but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'key' parameter, so the description must carry the semantics. It does add a meaningful sentinel value (key='all') that the bare string schema lacks, but leaves the format for individual key names unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (release) and resource (held key) plus the 'all' scope, so the action is unambiguous. It does not explicitly contrast itself with the sibling hold_key/press_key, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'release one held key' implies this is the inverse of hold_key, and the key='all' note conveys a usage option. However, there is no explicit when-to-use or when-not-to-use guidance relative to the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_focusGive focus back to the previous windowA
Returns foreground to whatever window was focused before this tool focused the game.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the agent knows this mutates foreground state. The description adds the stateful dependency on a previously focused window, but does not say what happens if there was no prior window, if the prior window has closed, or whether the call reports success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The trailing clause 'before this tool focused the game' is slightly muddled since focus_window, not this tool, performs the focusing, but the meaning survives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema tool whose annotations carry the safety profile, the description covers the core contract adequately. The main omission is edge-case behavior when no previous window exists, which is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters and no schema properties, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly avoids inventing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns/restores) and the exact target (the window focused before the game was focused), which is a precise and unusual resource. This implicitly distinguishes it from the sibling focus_window, since the agent can tell this is the undo counterpart rather than a fresh focus request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the semantics — an agent infers this should be called after focus_window to return the user to their prior application. No explicit when-to-use, when-not-to-use, or named alternative (focus_window is not mentioned by name).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotCapture the game windowA
PNG of the FiveM window (PrintWindow with PW_RENDERFULLCONTENT; falls back to a screen BitBlt of the window rect when the swapchain returns black, which means whatever covers the window is also captured — the game is focused first). Downscaled so vision models can read it cheaply. COST WARNING: every screenshot stays in the transcript and is re-sent on every later turn - many shots multiply session latency. Prefer text probes (read_console, wait_for_console, bridge ops); when pixels are the evidence, keep maxSide small (640 suffices for layout checks) and crop to the panel of interest.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | Window-pixel rect, as an object or JSON string, e.g. {"x":300,"y":200,"width":400,"height":300} | |
| maxSide | No | Downscale longest side (default 900) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: it discloses the capture mechanism (PrintWindow with PW_RENDERFULLCONTENT), the black-swapchain fallback to BitBlt (and that occluding windows are then captured), and — critically — that the game is focused first, which explains the readOnlyHint=false annotation. The transcript-cost warning (shots are re-sent every later turn, multiplying latency) is a behavioral trait no structured field conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place — mechanism, fallback, cost, alternatives, and parameter advice are all non-redundant. It is dense with parentheticals and the cost warning arguably belongs before the mechanism detail, but there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still specifies the return format (PNG), the resize behavior, and the failure/fallback path, plus cost and alternative-tool context. Nothing an agent needs to invoke this correctly — or to decide against it — is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds operational meaning by tying maxSide to cost ('keep maxSide small (640 suffices for layout checks)') and by advising crop to the panel of interest, which the schema's bare types don't imply. It doesn't restate ranges or defaults, but the added usage-level semantics lift it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (capture PNG of the FiveM window) and immediately names the mechanism and scope, distinguishing it from text-oriented siblings like read_console and wait_for_console. An agent can tell what this returns and how it differs from the surrounding tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to prefer text probes (read_console, wait_for_console, bridge ops) and names the condition that justifies this tool: 'when pixels are the evidence'. It further routes usage with 'keep maxSide small (640 suffices for layout checks) and crop to the panel of interest', which is actionable when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrollMouse wheelA
Scroll the wheel (positive = up). NUI lists respond to it.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description usefully adds the direction convention and that NUI lists are the responsive target, but says nothing about focus requirements, rate limits, or repeat behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the direction convention front-loaded and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter input tool with annotations covering safety and no output schema, the definition covers direction and target context adequately. Remaining gaps (focus/prerequisite conditions) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'amount' parameter only exposes a -50..50 range with no description. The description supplies the crucial missing semantics ('positive = up'), which is exactly what the schema omits, though it doesn't state units or step granularity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Scroll') and resource ('the wheel'), and adds sign semantics ('positive = up'). It is distinguishable from siblings like mouse_move and click, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'NUI lists respond to it' implies a usage context but gives no when-to-use vs alternatives guidance, no prerequisite such as needing an open NUI or focused window, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_commandRun an FXServer console commandADestructive
Execute a command on the server console over UDP RCON (any command the console accepts: ensure/stop/restart, convars, registered commands). The reply carries the command's captured console output. Needs rcon_password on the server and FIVEM_RCON_PASSWORD here; rate-limited server-side (~5 burst).
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command text without a leading slash, e.g. 'restart breeze-chat' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/non-readonly, and the description adds substantial context beyond them: the UDP RCON transport, the two required credentials (rcon_password on the server plus FIVEM_RCON_PASSWORD locally), and a server-side rate limit (~5 burst). These are exactly the operational facts an agent needs before firing a destructive command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the verb and transport, then reply semantics, then prerequisites. No filler, though the parenthetical command examples could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains that the reply carries the command's captured console output, and it covers auth, transport, and rate limiting. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single command parameter, including the no-leading-slash rule. The description adds only the category examples of valid commands, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Execute) and resource (command on the server console) and scopes it via the transport (UDP RCON) plus examples of what the console accepts. It clearly contrasts with the sibling client_command, which acts on the client rather than the server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by enumerating command categories (ensure/stop/restart, convars, registered commands), but it never states when to prefer this over siblings like client_command, list_commands, or read_console. No explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoQuery server identity (no credentials)ARead-onlyIdempotent
Ask the server's getinfo out-of-band endpoint: hostname, players online, max clients, protocol, game build. Works without rcon_password; use it to confirm which server you are pointed at.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, so credit goes to what the description adds: it discloses that this uses an out-of-band endpoint and requires no rcon_password, which is genuinely useful auth context. It does not mention latency, rate limits, or failure behavior, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The returned fields are front-loaded and the usage/credential note follows immediately, so nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return formatting, and it still conveniently previews the fields. For a simple, no-arg, read-only probe, everything an agent needs to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline this scores 4; the description correctly adds no parameter syntax that would be redundant. There is nothing more needed for a no-arg call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (query the server's getinfo out-of-band endpoint) and enumerates exactly what it returns: hostname, players online, max clients, protocol, game build. It also implicitly separates this credential-free identity probe from the rcon-based siblings like server_command and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case ('use it to confirm which server you are pointed at') and the key selection condition ('works without rcon_password'), which routes the agent here rather than to credential-requiring tools. It stops short of an explicit when-not or naming the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusConnection statusARead-onlyIdempotent
Report RCON configuration for the server, the devcon connection to the FiveM client console, and the server log-file tailer. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| host | Yes | |
| client | Yes | |
| server | Yes | |
| clientDevconPorts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety and repeatability profile is fully covered by structured data. The description adds real value by enumerating the three subsystems whose connection state is reported, but it says nothing about failure/degraded states or what a disconnected result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first enumerates scope, the second is the usage directive. Nothing is redundant and the scope statement is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description gives the agent enough to know what is being checked and that it should run this first. It is a near-complete diagnostic preamble, missing only guidance on interpreting a failed connection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly introduces no parameter semantics to confuse the agent, and the schema is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ("Report") and three concrete resources it inspects: RCON configuration, the devcon connection to the FiveM client console, and the server log-file tailer. That is far more specific than the bare name/title "status / Connection status", though it does not explicitly differentiate itself from sibling diagnostics like server_info or read_console.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call this first" is an explicit, actionable ordering directive that tells the agent when to reach for this tool relative to the rest of the toolset. There is no when-not guidance or named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_textType literal textA
Sends Unicode key events — the F8 console and chat/NUI inputs read these normally. Open the target input first (e.g. client_command to focus, or a chat key like T). Does not press Enter.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds real behavioral context beyond that: the input goes out as Unicode key events, it is consumed by F8 console and chat/NUI inputs, a focused target input is required first, and it deliberately omits the Enter keystroke. What it does not cover is failure behavior when no input is focused or whether repeated calls append.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler; the mechanism and its consumer surfaces come first, then the required precondition, then the boundary. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so return values are the description's responsibility and they are left unaddressed (success/failure signal, whether text is echoed). For a one-parameter input-injection tool the prerequisite and effect coverage is otherwise strong, so the gap is narrow rather than structural.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'text' parameter is completely undocumented in the schema (0% coverage, bare string type), so the description carries the burden. It does add meaning — the value is typed literally as Unicode key events, not interpreted as a key name or macro — but it stops short of spelling out constraints such as embedded newlines or special-character handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and mechanism — 'Sends Unicode key events' — and names the exact surfaces that consume them (F8 console, chat/NUI inputs). This cleanly separates it from the sibling key tools (press_key, hold_key, release_key) without the reader needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('Open the target input first') and names concrete ways to satisfy it (client_command to focus, or a chat key like T). The closing 'Does not press Enter' is a useful boundary that implies press_key for submission, but the alternative is not stated outright, so it falls just short of fully explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitPauseARead-onlyIdempotent
Sleep between actions — loading screens, walk cycles, held-key sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| ms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, idempotent, non-destructive, closed-world, which already communicate safety. The description adds that this is meant to 'sleep between actions' with specific scenarios, providing useful context about when the tool is appropriate, though it doesn't describe maximum duration, blocking behavior, or whether it returns anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Sleep between actions') followed by illustrative examples. No wasted words, though the em-dash style is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate but doesn't mention the maximum wait time or that it blocks execution. An agent might need to know these details to avoid unexpected delays. However, for a basic wait tool, the essentials are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the schema only shows that 'ms' is a required integer between 0 and 120000. The description says 'Sleep' but doesn't clarify that 'ms' is milliseconds or the max limit. However, the parameter name 'ms' is self-explanatory and the schema provides bounds; the description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Titled 'Pause' and described as 'Sleep between actions', the tool clearly performs a delay. The examples ('loading screens, walk cycles, held-key sequences') clarify its use over generic sleep, and it is distinguishable from siblings like wait_for_console, but the description doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the examples ('between actions – loading screens...'), which suggest when to insert a pause. However, there's no explicit when-to-use vs. wait_for_console or other alternatives, leaving some ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_consoleWait for a console line to appearARead-onlyIdempotent
Block until a line matching a regex appears. 'client' watches the live devcon stream; 'server' polls FIVEM_SERVER_LOG for newly written lines (only lines appended after the call count). Use after a fire-and-forget command, to watch for a resource's startup banner, an error, or a scripted RESULT: line.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | 'server' = the FXServer console (UDP RCON; needs rcon_password). 'client' = the F8 console of a running FiveM Legacy client (devcon 29200/29300) — LOCAL console commands only (connect, quit, tooling); RegisterCommand chat commands are not console commands. | |
| pattern | Yes | JS regex, e.g. 'Started resource breeze-chat' | |
| afterSeq | No | client only: ignore lines up to this sequence number | |
| timeoutMs | No | Default 10000 |
Output Schema
| Name | Required | Description |
|---|---|---|
| seq | Yes | |
| channel | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: the call blocks, 'client' watches a live stream while 'server' polls FIVEM_SERVER_LOG, and only lines appended after the call are considered. It does not describe what a timeout yields, which is the main remaining gap for a blocking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the target mechanics, then the usage trigger. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description covers the blocking model and target behavior. The only omission is timeout/partial-result behavior, which matters for a tool that blocks up to timeoutMs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: the stream-vs-poll distinction for 'target' and the 'only lines appended after the call count' semantics that govern afterSeq and the freshness of matches.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+mechanism: 'Block until a line matching a regex appears.' It also distinguishes itself from read-only siblings (read_console, wait) by describing the two observation targets and the streaming-vs-polling model, so an agent can tell what this tool does without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to reach for it: 'Use after a fire-and-forget command, to watch for a resource's startup banner, an error, or a scripted RESULT: line.' That is concrete triggering context, though it never names a competing sibling (e.g., read_console) or says when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
window_statusGame window stateARead-onlyIdempotent
Whether the FiveM game window exists, its title/pid, on-screen rect, and whether it is the foreground window. Input/screenshot tools focus it automatically.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| pid | No | |
| rect | No | |
| found | Yes | |
| title | No | |
| focused | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds genuine behavioral context beyond them: it lists the state fields returned (existence, title/pid, rect, foreground) and discloses the non-obvious side-effect-free property that input/screenshot tools handle focusing on their own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core answer to 'what is this?' is front-loaded before the useful focusing caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and annotations cover the safety profile. The description is complete enough for an agent to call it correctly, with only explicit sibling routing missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document in the description; the baseline for a parameterless tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the FiveM game window) and enumerates exactly what it reports: existence, title/pid, on-screen rect, foreground status. It is clearly distinguishable from siblings like server_info or status, though it never names a sibling to contrast with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated — an agent infers it should call this before input/screenshot work, and the second sentence helpfully notes that input/screenshot tools focus the window automatically. There is no explicit when-to-use/when-not guidance or named alternative (e.g. focus_window).
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.
23 tool updates
v0.6.0- First observed
bridge - First observed
click - First observed
client_command - First observed
focus_window - First observed
hold_key - First observed
launch - First observed
list_commands - First observed
mouse_move - First observed
press_key - First observed
quit_game - First observed
read_client_log - First observed
read_console - First observed
release_key - First observed
restore_focus - First observed
screenshot - First observed
scroll - First observed
server_command - First observed
server_info - First observed
status - First observed
type_text - First observed
wait - First observed
wait_for_console - First observed
window_status
TDQS
Scored across 23 tools
Most tools target distinct capabilities (input vs window vs console vs bridge), and descriptions go to lengths to clarify boundaries (e.g., server_command vs client_command vs the chat layer). However there is genuine overlap among the read/inspect tools (read_console, read_client_log, list_commands) and between the multi-purpose bridge and server_command/client_command, which could still cause misselection.
Many tools follow a verb_noun or clear noun pattern (read_console, hold_key, focus_window, window_status), but others are bare verbs or nouns (bridge, status, launch, click, scroll, wait) with no single governing convention. It stays readable but is a mixed bag rather than a predictable scheme.
23 tools is on the heavy side, but the surface spans genuinely separate domains — RCON server control, devcon client console, the mcpb bridge, raw input, and window/screenshot management — so nearly every tool earns its place. It is slightly over what feels ideal but not padded.
Coverage is broad and coherent: server and client command execution, console reading/waiting, bridge ops, full keyboard/mouse/text input, window focus, and screenshots. Minor gaps remain, such as a dedicated chat-send or screenshot-crop helper, but agents can work around these with existing primitives.
Maintenance
Related MCP Connectors
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read and administer FiveM/RedM game servers via txAdmin, supporting queries about server status, players, bans, and actions like announcements, resource control, and bans.37 npmMIT
- AlicenseBqualityAmaintenanceThis server enables AI agents to operate Windows and Linux computers by observing the screen, understanding the UI through accessibility, OCR, and vision, and performing mouse, keyboard, window, clipboard, and system actions with verification and recovery.292MIT
- AlicenseNot gradedqualityAmaintenanceEnables local FiveM development by letting an AI assistant execute JavaScript/Lua on the server or client, automate NUI interactions, capture game screenshots, manage resources, and run repeatable tests with screenshot evidence.4MIT
- AlicenseAqualityDmaintenanceEnables AI agents to connect to one or more running Roblox game clients to execute Lua code, decompile and search scripts, browse instances with CSS-like selectors, intercept and block remotes, drive GUIs, and capture screenshots through a local dashboard and bridge.2166 npmMIT