Skip to main content
Glama

shell_write

Send UTF-8 text or base64 bytes to an interactive shell in a Windows 98 VM, optionally close stdin. The VM stays locked during the operation; unlock it when finished.

Instructions

Write UTF-8 text or base64 bytes to an interactive shell and optionally close stdin. VM remains locked by this session; call vm_unlock when finished.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
eofNo
textNo
base64No
vm_nameYesUnique VM name configured in WIN98CTL.INI.
session_idYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changedv1.7.0
    • addedInput schema / properties / vm_name
      Added value: +{
      +  "description": "Unique VM name configured in WIN98CTL.INI.",
      +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "session_id"
      -]New value: +[
      +  "session_id",
      +  "vm_name"
      +]
  2. First observedv0.0.0-development

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already establish that this is a mutating operation (readOnlyHint=false) and non-idempotent. The description adds valuable behavioral context beyond the schema: the VM lock persists after the call and must be explicitly released with vm_unlock, and the eof option can close stdin. This helps the agent understand side effects and cleanup obligations.

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

Conciseness5/5

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

Two sentences carry the essential information: the primary action and the lock cleanup requirement. There is no redundant wording, and the most critical detail is front-loaded. The description earns every word it uses.

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

Completeness3/5

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

The description covers the core action and lock/unlock behavior, which is important. Still, it omits practical invocation details such as how to choose between text and base64, whether the VM must already be locked before calling, and what happens if neither payload is provided. Given the low schema coverage and absence of an output schema, these gaps make the definition incomplete for reliable use.

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

Parameters3/5

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

Schema description coverage is only 20%, so the description partially compensates by clarifying that 'text' carries UTF-8 data, 'base64' carries bytes, and 'eof' closes stdin. However, it does not explain whether text and base64 are mutually exclusive, whether exactly one must be provided, or what session_id refers to. These gaps leave ambiguity in invoking the tool correctly.

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

Purpose5/5

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

The description states a specific action and resource: 'Write UTF-8 text or base64 bytes to an interactive shell and optionally close stdin.' This clearly distinguishes the tool from siblings like shell_read (reading output) and shell_exec (likely executing commands) by targeting an existing interactive shell's input stream. The verb and payload formats are unambiguous.

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

Usage Guidelines3/5

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

The description implies usage in an interactive shell context via the word 'interactive' and mentions the lock lifecycle ('VM remains locked by this session; call vm_unlock when finished'). However, it does not explicitly state when to prefer this tool over alternatives like shell_exec or shell_start, nor does it provide exclusions or a comparison to available sibling tools.

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

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