Skip to main content
Glama

sassy_shell

Destructive

Executes arbitrary shell commands on the host, applying safety gates and timeouts. Long commands auto-run in background, returning a handle to poll.

Instructions

Mutating: executes an arbitrary shell command in the host shell — it can do anything the shell can. shell defaults to powershell on Windows or the login shell on macOS/Linux; POSIX shells run the command verbatim while PowerShell syntax is normalized. timeout_seconds defaults to 30 (clamped 1-300); over 120 the call auto-promotes to a background session, returning a JSON handle to poll with sassy_session_read. Safety gates always run: catastrophic blocklist entries hard-block, delete keywords auto-stage targets to DELETE/ when identifiable, and other destructive patterns block or return a confirmation_required token (when interceptor.destructiveAction is 'confirm'; redeem via sassy_shell_confirm). allow_pattern bypasses one named pattern only. Output shows [exit: N] plus stdout and stderr. Use for one-shot commands; prefer sassy_session_start for long-running work.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
shellNo
commandYes
allow_patternNo
timeout_secondsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description goes far beyond that: it discloses safety gates (catastrophic blocklist hard-blocks, delete keywords auto-stage to _DELETE_/, destructive patterns block or return confirmation_required), the confirmation flow via sassy_shell_confirm, allow_pattern bypass semantics, shell normalization differences, timeout clamping, auto-promotion to background sessions, and output format ([exit: N] plus stdout/stderr). This is rich behavioral context that annotations alone do not provide.

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?

The description is dense but every sentence earns its place: safety gates, shell behavior, timeout behavior, output format, and usage guidance are all packed into a compact paragraph. It is front-loaded with the most important fact ('Mutating... can do anything the shell can') and ends with the usage recommendation. Slightly long, but justified given the tool's power and safety complexity.

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?

For a high-risk, arbitrary-command execution tool with 4 parameters and no schema descriptions, the description covers everything an agent needs: what it does, safety gates, confirmation flow, timeout behavior, background promotion, output format, and when to use an alternative. The output schema exists, so return values need not be spelled out. This is complete for the tool's complexity.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It explains shell defaults and normalization, timeout_seconds default and clamping, and allow_pattern's single-pattern bypass semantics. The command parameter is self-evident from the tool's purpose. It doesn't explicitly describe the exact JSON shape of the background-session handle, but it names the polling tool, which is sufficient for an agent to proceed.

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 verb ('executes') and resource ('arbitrary shell command in the host shell'), and immediately clarifies scope ('can do anything the shell can'). It also distinguishes itself from siblings by naming sassy_session_start for long-running work and sassy_session_read for polling, so an agent can tell it apart from the session tools 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?

The description explicitly says 'Use for one-shot commands; prefer sassy_session_start for long-running work,' which is direct when-to-use guidance with a named alternative. It also explains when auto-promotion to a background session happens (timeout over 120), which is a clear behavioral condition for choosing this tool vs. polling with sassy_session_read.

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

Deploy Server

Other Tools