Skip to main content
Glama

keyboard_keycode

Send low-level Win32 keyboard events to a Windows 98 VM using virtual-key or scan codes. Choose action from down, up, or press. Remember to unlock the VM afterwards.

Instructions

Send a low-level Win32 virtual-key or scan-code input event. VM remains locked by this session; call vm_unlock when finished.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionNopress
extendedNo
scan_codeNo
virtual_keyNo
Behavior4/5

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

The description adds the important behavioral detail that the VM remains locked and requires vm_unlock when finished, which is not conveyed by the annotations. It also correctly implies a non-read-only action, consistent with readOnlyHint=false. However, it does not discuss other behaviors like event queuing or repeat.

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

Conciseness5/5

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

The description is two sentences, front-loading the core purpose and adding the essential lock warning. No wasted words.

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

Completeness3/5

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

The tool has four optional parameters and no output schema, and the description provides minimal guidance beyond the key input type and lock state. The schema supplies types and bounds, but the description leaves the meaning of 'action' and 'extended' implicit, making it adequate but not thorough for a low-level input tool.

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

Parameters2/5

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

With schema description coverage at 0%, the description only mentions 'virtual-key or scan-code', which maps to the virtual_key and scan_code parameters, but leaves action (down/up/press) and extended undocumented. The enum and defaults in the schema provide some structure, but the description does not explain their semantics.

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

Purpose5/5

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

The description specifies 'Send a low-level Win32 virtual-key or scan-code input event', clearly stating the verb (send), resource (keyboard input), and scope (low-level virtual-key/scan-code). This distinguishes it from siblings like keyboard_type or keyboard_key for higher-level input.

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

Usage Guidelines3/5

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

The description mentions 'low-level Win32' but does not explicitly compare with sibling tools such as keyboard_type or keyboard_hotkey. The VM locking note provides context that this is part of a locked session requiring vm_unlock, but no 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.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ido-pluto/windows98-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server