Skip to main content
Glama

exec

Execute arbitrary shell commands on a disposable Linux VM for one-off tasks. For long-running or interactive processes, use process_start; for coding agents, use agent_start.

Instructions

Execute an arbitrary shell command on the dedicated disposable Linux agent VM. Oversized stdout/stderr use bounded head/tail previews plus separate artifacts. Use this for commands that complete on their own. For servers, watchers, REPLs, or other long-running/interactive commands, use process_start instead. Do not launch Codex, Antigravity CLI (agy), or Claude Code agent work through exec; use agent_start so coding agents run in persistent Herdr workspaces. Harmless --help/--version probes remain allowed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory. Defaults to the agent user home directory.
envNoAdditional environment variables.
commandYesShell command to execute with bash -lc.
timeoutMsNoMaximum execution time in milliseconds.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers real behavioral detail: the target is a disposable VM, oversized stdout/stderr is truncated to bounded head/tail previews with separate artifacts, and certain agent commands are prohibited. It stops short of stating state persistence between calls, auth/permission requirements, or the response shape.

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

Conciseness4/5

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

Front-loads what the tool does, then stacks the routing rules in short, purposeful sentences. Slightly long at five sentences, but each one carries distinct routing or output information, so little is wasted.

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

Completeness4/5

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

For a four-parameter, unannotated, no-output-schema tool, the description covers environment nature, output truncation behavior, and the main routing decisions. Remaining gaps are persistence across calls and the exact returned payload, which are secondary for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so command, cwd, env, and timeoutMs are already documented in the schema (including bash -lc semantics and the timeout default/ceiling). The description adds no parameter-level detail beyond the probe exception, so the baseline 3 applies.

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?

States a specific verb and resource ('Execute an arbitrary shell command') plus the execution target ('dedicated disposable Linux agent VM'). It also names the sibling tools it is not (process_start, agent_start), so an agent can distinguish it without opening any schema.

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

Usage Guidelines5/5

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

Explicit when-to-use ('commands that complete on their own'), when-not ('servers, watchers, REPLs, or other long-running/interactive commands'), the named alternative for each case (process_start, agent_start), and a carve-out for harmless --help/--version probes. This is close to ideal routing guidance.

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