Skip to main content
Glama

run_command

Executes a pre-approved build, test, or lint script from your configured allow-list using an optional single target argument, safely sandboxed with bounded output.

Instructions

Run a named command from the workspace's [[command]] allow-list (build/test/lint/scripts) without leaving plumb. It runs only the exact fixed argv the user configured (no shell, no agent-supplied command line); the optional target fills a single {target} placeholder with one shell-safe argument. A command from a project's .plumb/config.toml must be trusted first (run plumb trust); a command from your global config always runs. The command runs under an OS sandbox (a write jail) when one is available. Output and runtime are bounded. For an ordinary build/lint/test, prefer run_task and its [tasks.] slots — those ship with defaults.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of an entry in the [[command]] allow-list (in global or project .plumb/config.toml). You cannot pass an arbitrary command line — only a configured name.
targetNoOptional value substituted for the single {target} token in the command's fixed argv (e.g. a test name or package). Restricted to one shell-safe argument ([A-Za-z0-9._/:@-]); refused if the command has no {target}.

Schema Changelog

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

  1. First observedv0.16.6

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full weight and does so thoroughly. It discloses no shell interpolation, no agent-supplied command line, an OS write-jail sandbox when available, and bounded output/runtime. It also warns about the trust step, which is exactly the kind of behavioral context an agent needs before invoking a command executor.

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 first sentence states the primary purpose immediately, and every subsequent sentence adds a distinct constraint: fixed argv, target placeholder, trust, sandbox, bounded resources, and the run_task alternative. There is no filler or redundancy; the length is justified by the tool's power and risk.

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

Completeness5/5

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

Given the tool has no output schema and no annotations, the description still tells an agent everything essential to invoke it correctly: what names are valid, how target is constrained, when trust is needed, what sandboxing applies, and when to use a sibling instead. The only omitted detail, exact output formatting, is not needed for correct selection and invocation of a command-runner.

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 the schema already fully documents both name and target. The description mostly restates schema facts (allow-list entry, one shell-safe argument, {target} placeholder) rather than adding new parameter-level meaning. It adds useful surrounding context about trust and global config, but that is behavioral context, not new parameter 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 opens with a specific verb and resource: run a named command from the workspace's [[command]] allow-list. It differentiates itself from siblings by stressing the fixed argv model and explicitly pointing to run_task for ordinary build/lint/test work. An agent can distinguish this from write_file, git, or run_task without opening schemas.

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

Usage Guidelines5/5

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

It gives crisp selection guidance: prefer run_task for routine build/lint/test tasks, and use run_command when a configured allow-list command is needed. It also states the trust prerequisite for project-local commands and notes that global-config commands always run. This tells the agent both when to use the tool and when to pick a sibling.

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/plumbkit/plumb'

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