Skip to main content
Glama

SassyMCP

One MCP server to replace them all.

274 tools | 36 modules | 18 tool groups | Replaces 75+ MCP servers | 34MB standalone exe

Last updated: 2026-08-14 — v1.14.4 | all tools unlocked; optional supporter license

Compatible with Claude Desktop, Grok Desktop, Cursor, Windsurf, and any MCP client.

The official GitHub MCP server has critical SHA-handling bugs. SassyMCP's GitHub module uses correct blob SHA lookups, proper path encoding, atomic multi-file commits via Git Data API, retry logic with exponential backoff, and rate-limit awareness. It's a drop-in replacement that actually works.

Why SassyMCP?

The MCP ecosystem is fragmented. Need file operations? Install Filesystem server. Need terminal? Desktop Commander. GitHub? Another server. Android? Another. Screenshots? Another. You end up with 6-10 separate MCP servers, each consuming context window, each with its own config, bugs, and update cycle.

SassyMCP replaces 75+ individual MCP servers — including Desktop Commander (5.9k stars), Windows-MCP (5k stars), GitHub MCP Server (28.6k stars), Anthropic's official Filesystem and Memory servers, mobile-mcp (4.4k stars), and dozens more — with a single 34MB exe.

Key differentiators:

  • Smart Tool Loading — Only loads tool groups you use. Reduces context window overhead from ~25K tokens to ~5K tokens by default.

  • Dynamic Vision — Real-time screen monitoring with change detection for both desktop and Android. No more screenshot-and-pray.

  • Android Interaction — Full phone control via UI accessibility tree: tap, swipe, type, with automatic sensitive context detection (auth/payment screens auto-block).

  • Pause/Resume — User takes over the phone for manual steps (login, 2FA, account selection), AI watches and learns, then resumes autonomously.

  • Usage Tracking — ML-lite scoring of tool invocations with exponential decay. Your most-used tools load first.

  • Context Estimation — Built-in tool to measure how much of your 200K context window tool definitions consume.

  • Response Minification — GitHub API responses stripped of URL metadata bloat (40-70% smaller).

  • Safe Delete — Delete commands (rm, del, Remove-Item, etc.) are intercepted across all shells. Instead of destroying files, targets are moved to a _DELETE_/ staging folder in the same directory for human review — protecting against AI hallucinations.

  • Guided Setup — Wizard walks through persona, GitHub token, SSH credentials, and optional tool discovery.

Related MCP server: Auralis Commander

What It Replaces

Domain

SassyMCP Module

Replaces

Top Alternative

File operations

FileOps, Editor

11 filesystem/editor MCP servers

Filesystem (Anthropic official)

Shell / terminal

Shell, Session

5 shell MCP servers

Desktop Commander (5.9k stars)

Desktop automation

UIAutomation, Vision

9 desktop MCP servers

Windows-MCP (5k stars)

GitHub / Git

GitHub Quick, GitHub Full

5 GitHub/Git MCP servers

GitHub MCP Server (28.6k stars)

Android / phone

ADB, PhoneScreen

9 mobile MCP servers

mobile-mcp (4.4k stars)

Network scanning

NetworkAudit

8 nmap/security MCP servers

mcp-for-security (601 stars)

Security auditing

SecurityAudit

8 security MCP servers

mcp-security-hub (509 stars)

SSH / remote Linux

Linux

7 SSH MCP servers

ssh-mcp (365 stars)

Memory / state

Memory, StateManager

7 memory MCP servers

mcp-memory-service (1.6k stars)

OCR / screen reading

Vision

7 OCR/vision MCP servers

PaddleOCR MCP

Web inspection

WebInspector, Utility

7 web/fetch MCP servers

Fetch (Anthropic official)

Windows system

Registry, ProcessManager, Clipboard, EventLog, Bluetooth

13 Windows MCP servers

Windows-MCP (5k stars)

Plus features with no MCP server equivalent: phone pause/resume with sensitive context detection (auto-blocks on login/payment screens), operational hooks (14 expert playbooks), safe delete interception, Windows autorun forensics, Android+Windows clipboard sync, usage-weighted smart loading.

Licensing

Every tool group ships unlocked, for everyone, with no key required. As of v1.13.0 the release model is all-or-nothing — there is no free/pro split, no gated groups, no crippled demo. The 274 tools you see in the module table below are the product, out of the box.

Supporter licenses (optional): SassyMCP can still be purchased through LemonSqueezy as a one-time supporter license (no subscriptions). Activating a key registers your machine as a seat and records a supporter tier that shows in the startup banner, control panel, and VS Code cockpit — it does not unlock anything, because everything is already unlocked. Buy once to support development; refunds revoke the label automatically.

Activation flow (supporters):

  1. Purchase at https://sassyconsultingllc.com/store — LemonSqueezy emails you a key (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX).

  2. Activate from your AI agent: sassy_setup_license action=activate key=...

  3. Or from a terminal: sassymcp.exe setup opens the interactive menu.

Offline operation: Once activated, a local HMAC-signed payload lets the supporter tier validate fully offline. A weekly re-check against LS catches refunds and cancellations; a faster startup check against the SassyMCP billing oracle cuts refund-to-revocation latency to seconds. Missing, expired, tampered, or corrupt license files just show the free label — tool availability is never affected.

Back-compat: SASSYMCP_LICENSE_BYPASS=1 (the old dev escape hatch that unlocked gated groups) is accepted and ignored — there is nothing left to bypass.

Running supervised (sassymcp supervise)

For always-on / remote deployments, run SassyMCP under its built-in supervisor instead of bare launcher scripts:

sassymcp.exe supervise start              # bridge only (127.0.0.1:21001)
sassymcp.exe supervise start --tunnel-mode managed   # also run the cloudflared tunnel as a child
sassymcp.exe supervise status             # JSON status; exit code != 0 if unhealthy
sassymcp.exe supervise stop               # graceful stop

The supervisor owns the runtime tree and makes it self-healing and orphan-proof:

  • No orphans, ever. A hard kill of the supervisor (crash, kill -9, taskkill /f) takes every child with it — on Windows via a Job Object (KILL_ON_JOB_CLOSE), on Linux via process groups + PR_SET_PDEATHSIG. No leftover bridge holding a wedged SQLite/WAL lock, which is what the old taskkill-based scripts caused.

  • Self-healing. Crashed children restart with exponential backoff (and give up cleanly after a crash-loop, rather than spinning).

  • Catches hangs. An HTTP readiness probe recycles a hung-but-alive bridge — the failure a Windows scheduled task can never detect.

  • Crash-survivable control. A pidfile + on-disk registry under $SASSYMCP_HOME mean supervise status/stop work even when the bridge is down, so an operator or agent can recover a wedged system.

start-supervised.bat wraps this as the recommended Windows launcher. stdio mode (Claude Desktop pipe) is client-owned and intentionally not supervised.

Modules

Module

Tools

Group

Description

Meta

9

meta

Context estimation, tool usage analytics, group management

FileOps

10

core

Read, write, search, move, copy, edit, mkdir, file info, safe delete

Shell

2

core

PowerShell, CMD, WSL execution with syntax normalization and delete interception

UIAutomation

6

core

Desktop state, click, type, hotkeys, screenshots, screen info

Editor

2

core

Surgical find/replace, multi-edit

Audit

4

core

Audit log read, search, clear, false-positive tracking

Session

6

core

Persistent terminal sessions (start, read, send, stop)

GitHub Quick

6

github_quick

Daily-driver: push_files, get_file, issue, PR, protect

Persona

7

persona

Expert-mode directives, decision framework, engineering standards

Utility

11

utility

Env vars, toast, zip/tar/unzip/untar, HTTP requests, file diff

Setup

8

setup

Setup wizard, GitHub token guide, SSH setup, tool checker, license activation

ToolsManager

1

setup

External tool bootstrap and detection

Observability

3

infrastructure

Health, metrics, tool stats

StateManager

3

infrastructure

Persistent key-value state across sessions

RuntimeConfig

3

infrastructure

Runtime config, recent tool calls

Memory

9

memory

Persistent cross-session memory, milestones, task handoffs, pattern learning

Updater

4

updater

Version checks, changelog, self-update (Kali-style)

GitHub Full

80

github_full

Complete GitHub API: repos, issues, PRs, actions, security, gists

ADB

10

android

Android shell, packages, file transfer, logcat, screencap

PhoneScreen

14

android

UI tree reader, phone glance/watch, tap/swipe/type/key, pause/resume, scrcpy

NetworkAudit

7

system

netstat, ARP, WiFi scan, port scan, DNS, traceroute

ProcessManager

5

system

Windows + Android process list/kill, system info

SecurityAudit

7

forensics

Hash, permissions, certs, APK, firewall, Defender

Registry

4

forensics

Read, write, export, autorun forensics

Bluetooth

3

system

Windows + Android BT enumeration

EventLog

3

system

Windows Event Log + Android logcat

Clipboard

4

system

Windows + Android clipboard sync

Vision

8

v020

Screen capture, OCR, dynamic glance/watch/diff

AppLauncher

6

v020

Launch apps, focus/close/resize/snap windows

WebInspector

5

v020

Security headers, URL screenshots, tech stack detection

Crosslink

7

v020

Cross-session messaging via HTTP API + SQLite

Linux

1

linux

Remote SSH execution via plink

Combos

4

combos

Multi-step workflows in one call: PR review, phone observe, codebase grep

Prompts

0

prompts

MCP slash-menu shortcuts (pr-review, phone-status, resume, brain-status, setup-sassy)

Dynamic Vision

Desktop (Vision module)

Traditional MCP screenshots are blind — you capture one frame and hope it's the right one. SassyMCP's dynamic vision changes this:

Tool

Purpose

sassy_screen_glance

Fast grayscale capture at ~3-6KB. Call repeatedly to "watch" the screen.

sassy_screen_watch

Monitor for N seconds, returns only frames where content changed (pixel diff threshold).

sassy_screen_diff

Before/after comparison — takes frame, waits, takes another, returns both + a diff image highlighting changes.

All three use grayscale + heavy JPEG compression to keep context cost minimal. A glance is ~2KB vs ~14KB for a full-color capture.

Android (PhoneScreen module)

The phone isn't just a camera target — SassyMCP reads its UI accessibility tree:

Tool

Purpose

sassy_phone_ui

Reads every visible UI element — text, description, coordinates, clickable/focused/checked state. Structured data, not pixels.

sassy_phone_state

Foreground app, screen on/off, battery, WiFi, notification count.

sassy_phone_glance

Low-res grayscale phone screenshot via direct pipe (~4-8KB).

sassy_phone_watch

Monitors UI tree changes over duration. Returns snapshots only when elements change.

Phone Interaction

Full touch input via ADB — the AI can operate the phone:

Tool

Purpose

sassy_phone_tap

Tap screen coordinates

sassy_phone_swipe

Swipe between two points

sassy_phone_type

Type text into focused field

sassy_phone_key

Send key events (HOME, BACK, ENTER, VOLUME, etc.)

sassy_phone_open

Launch an app by package name

Sensitive Context Detection

All interaction tools (tap, swipe, type) automatically scan the UI tree before executing. If they detect login screens, payment forms, account selectors, 2FA prompts, or permission dialogs, the tool refuses to execute and returns what it sees instead. The AI then describes the screen to you and asks what to do. Pass confirmed=True after explicit user approval.

Safe Delete (Delete Interception)

AI agents can hallucinate destructive commands. SassyMCP intercepts all delete-family commands across every shell and every tool entry point, then moves targets to a _DELETE_/ staging folder instead of destroying them. Every interception is written to the audit log with the raw command, parsed targets, and move results.

Coverage — every destructive path is gated:

Tool

Guard

sassy_shell

Intercepts delete commands, stages targets to _DELETE_/

sassy_session_send / sassy_session_start

Same interceptor — persistent terminals can't bypass

sassy_linux_exec

Refuses destructive commands on the remote host

sassy_adb_shell

Refuses destructive commands on Android device (override with allow_destructive=True)

sassy_safe_delete

Explicit staging tool — moves symlinks as symlinks (no resolve() in the move path)

sassy_write_file (rewrite mode)

Snapshots existing file into _DELETE_/ before overwriting

sassy_edit_block / sassy_edit_multi

Refuses protected paths, snapshots existing content to _DELETE_/<name>.pre-edit.<ts><ext> before applying

sassy_copy

Refuses existing destination (no silent overwrite), refuses protected src/dst

sassy_move

Refuses silent destination overwrite, refuses protected src/dst

sassy_audit_clear

Rotates the audit log instead of deleting it; requires confirm='YES'

Intercepted command keywords: rm, rmdir, unlink (Unix/WSL), del, erase, rd (CMD), Remove-Item, ri, rni (PowerShell aliases), sdelete / sdelete64 (Sysinternals).

Also caught (beyond bare keywords):

  • Shell wrappers — powershell -c "del foo", cmd /c del foo, bash -c "rm foo", wsl -- rm foo (payload is recursively scanned)

  • Base64 payloads — powershell -EncodedCommand <base64> is decoded (UTF-16-LE) and recursively scanned

  • .NET calls — [System.IO.File]::Delete(...), [System.IO.Directory]::Delete(...)

  • Clear-Content, Set-Content -Value '' (literal empty only — normal -Value "foo" is allowed)

  • Out-File -Force, New-Item -Force (overwrite-style)

  • copy /y, xcopy /y — CMD silent-overwrite flags

  • robocopy /MIR and robocopy /PURGE — mirror/purge modes delete destination files

  • Truncate-by-redirect — > file.txt, type foo > bar.txt, cmd; > file.txt (append >> and stream 2> / &> correctly ignored)

  • Move-Item foo $null

  • Assignment prefixes — $null = ri foo is correctly unwrapped

Protected roots (refused by every guarded tool, not just the interceptor): the SassyMCP source tree itself, ~/.sassymcp/ (audit + config), and any _DELETE_/ staging folder (no staging recursion). Protection uses resolve() so path traversal (..\), symlinks, and Windows 8.3 short names all normalize correctly before the check.

Scenario

Result

rm -rf /

Hard-blocked by the always-on blocklist — no move attempted

rm important.txt

Blocked, file moved to ./_DELETE_/important.txt

del /q *.log

Blocked, all .log files moved to ./_DELETE_/

Remove-Item -Path C:\data\old

Blocked, old moved to C:\data\_DELETE_\old

cmd /c del foo (wrapper)

Blocked — payload is unwrapped and intercepted

gci *.tmp | ri (PS alias)

Blocked — ri alias is matched

sassy_write_file("doc.txt", ..., "rewrite") on existing file

Prior content snapshotted to _DELETE_/doc.overwrite.<ts>.txt first

ls -la

Executes normally — not a delete command

Name collisions in _DELETE_/ are handled automatically with counter suffixes (file.txt, file_1.txt, file_2.txt). On Windows, paths with backslashes (C:\Users\foo\bar) are preserved correctly by the parser — no shlex mangling.

Pause / Resume

For complex flows where the user needs to take over:

Tool

Purpose

sassy_phone_pause

Blocks all interaction tools. Observation tools (ui, glance, watch) still work.

sassy_phone_resume

Unblocks interaction. AI picks up where it left off, informed by everything it observed during pause.

Workflow:

  1. AI operates phone autonomously for routine tasks

  2. AI hits a login screen → sensitive context auto-blocks → AI tells the user

  3. User says "hold on" → AI calls sassy_phone_pause

  4. User logs in manually. AI watches via sassy_phone_ui / sassy_phone_glance

  5. User says "done" → AI calls sassy_phone_resume

  6. AI continues, now aware the user logged into a specific account

Permission Engine & Control Panel

SassyMCP gates the shell and file tools through one policy engine (sassymcp.policy) with four modes, set via sassy_permission set_mode or the Control Panel:

Mode

Behavior

strict

Block destructive patterns everywhere (default)

confirm

Destructive patterns return a confirm token

sandbox

Relaxed gating inside the project roots; anything resolving outside the jail is refused — run an ungated model, confined to a folder

bypass

Allow everything except protected paths (explicit, audited)

A Claude-style allow / ask / deny rules layer (tool-glob + path-glob + command-regex; first match wins) overrides the mode default. The catastrophic block-list (format, mkfs, …) and the protected-path invariant (the SassyMCP source tree + ~/.sassymcp) hold in every mode, including bypass.

The Control Panel is a localhost web UI for all of the above — a live event log, the settings/mode editor, and a classifier + rules editor. It binds 127.0.0.1 only and needs the per-install token in ~/.sassymcp/control_panel.token. Start it with sassy_panel start (or set panel.enabled / SASSYMCP_PANEL=1 to launch it at boot), then open the printed http://127.0.0.1:8765/?token=… URL.

Guided Setup

On first launch (no ~/.sassymcp/persona.md), the wizard tools are prominently available and the AI is given an onboarding playbook via the registered hook. The flow is conversational — the AI asks, you answer, it calls the tools.

Each step is independent and skippable. Just tell the AI "set up SassyMCP" or "let's get started" and it'll walk this:

#

Step

Tool

What happens

0

License (optional)

sassy_setup_license action="status" then action="activate" key=...

Reports supporter tier. All tools are unlocked regardless — a key just registers your seat and supporter status.

1

Persona

sassy_setup_wizard

Asks the questionnaire below, generates ~/.sassymcp/persona.md, hot-reloads the persona module.

2

GitHub

sassy_setup_github action="check"action="open_browser"action="save_token" token=...

Validates an existing GITHUB_TOKEN, or opens github.com/settings/tokens, walks you through scope selection, then saves and re-validates.

3

SSH / Linux

sassy_setup_ssh action="check"action="save" host=... user=... password=...action="test"

Locates plink, stores creds in process env, runs an echo round-trip to verify.

4

Optional tools

sassy_setup_check_tools

Scans for nmap, tesseract, adb, scrcpy, plink, Chrome; reports install URLs for what's missing.

Status check

sassy_setup_status

Shows what's configured, what's still missing, and the action_required hint. Run this any time.

⚙️

Auth tokens

sassy_setup_generate_token client_id="claude-desktop"

Generates a 32-byte URL-safe token for HTTP/tunnel mode and writes ~/.sassymcp/tokens.json.

Skip any step with action="skip" (where supported) — config records the skip so the AI doesn't re-prompt.

The persona questionnaire

sassy_setup_wizard accepts these fields. All optional — defaults shown.

Field

Values / format

Default

role

developer | sysadmin | security | devops | data | designer | manager | other

developer

expertise_level

junior | mid | senior | principal | staff

senior

specializations

Comma-separated areas — e.g. "web security, cloud infra, mobile"

empty

languages

Comma-separated — e.g. "Python, Rust, TypeScript, Go"

empty

frameworks

Comma-separated — e.g. "React, FastAPI, Cloudflare Workers"

empty

systems

Newline-separated hostname — OS — role entries

empty

projects

Newline-separated name — status — description entries

empty

communication_style

terse (code only) | balanced (brief explanations) | verbose (detailed rationale)

terse

security_posture

standard (OWASP) | hardened (+ CSP/HSTS/rate-limit) | paranoid (+ air-gap, cert pinning, zero trust)

standard

mcp_clients

Which AI tools connect — e.g. "Claude Desktop, Cursor, Grok Desktop"

empty

notes

Free-form text — anything else the AI should know about how you work

empty

Output goes to ~/.sassymcp/persona.md (the persona module reads it on every session) and the run is recorded in ~/.sassymcp/config.json (setup_complete, setup_timestamp, setup_version). Re-run sassy_setup_wizard any time to regenerate — the persona module hot-reloads with the new profile.

Triggering the flow from your client

The onboarding hook fires on phrases like "setup", "first time", "get started", "onboard", "new user", "set up sassymcp". Anything close to those will pull the playbook into the AI's context. If you want to drive it manually, just call sassy_setup_status first to see where you are, then walk the table above.

Smart Loading

By default, SassyMCP only loads frequently-used tool groups. This keeps tool definitions under 5% of your context window.

# Default: loads core, github_quick, persona, meta, utility, setup, infrastructure
uv run sassymcp

# Load everything (~22K tokens of context)
SASSYMCP_LOAD_ALL=1 uv run sassymcp

# Load specific groups
SASSYMCP_GROUPS=core,github_quick,android,v020 uv run sassymcp

Available Groups

Group

Modules

Default

core

fileops, shell, ui_automation, editor, audit, session

Yes

meta

meta

Yes

infrastructure

observability, state_manager, runtime_config

Yes

github_quick

github_quick (6 lean tools)

Yes

persona

persona

Yes

utility

utility

Yes

setup

setup_wizard, tools_manager

Yes

memory

memory

Yes

updater

updater

Yes

combos

combos (4 tools)

No

prompts

prompts (slash-menu shortcuts)

Yes

github_full

github_ops (80 tools)

No

android

adb, phone_screen

No

system

network_audit, process_manager, security_audit, registry, bluetooth, eventlog, clipboard

No

v020

vision, app_launcher, web_inspector, crosslink

No

linux

linux

No

Install

Pick whichever entry point matches how you already work. All four converge on the same shared brain at ~/.sassymcp/ — your persona, memory, license, and audit log are visible to every connected MCP client.

One-click via DXT (Claude Desktop)

Download sassymcp.dxt from the latest release, double-click — Claude Desktop installs it. On first launch, sassymcp auto-detects every other MCP client on your machine (Cursor, VS Code Copilot, Windsurf, Continue, Cline, Zed, Grok Desktop) and patches each one's config so they all see SassyMCP without you editing any JSON.

VS Code extension

Install SassyMCP from the VS Code marketplace. The extension locates sassymcp.exe (PATH or the sassymcp.exePath setting), runs the same auto-config CLI, and adds a status bar item showing your license tier and brain health. Five commands cover Setup Wizard, Reinstall Configs, Open Audit Log, Open _DELETE_ Folder, Show Brain Status.

Manual auto-config CLI

If you have sassymcp.exe already (from the portable zip or pip install) and want to register it with every MCP client without per-client JSON editing:

sassymcp-install

That detects Claude Desktop, VS Code Copilot, Cursor, Windsurf, Continue, Cline, Zed, and Grok Desktop and patches each one's config atomically. Re-running is a noop. Take a look first with sassymcp-install --dry-run. Remove with sassymcp-install --uninstall. The CLI takes a timestamped backup of any existing config before its first edit.

Portable bundle (manual config — older path)

No installer required, but you'll edit each client's JSON yourself unless you also run sassymcp-install after.

  1. Download sassymcp-v1.3.1-portable.zip from the latest release (~123 MB — includes sassymcp.exe, adb, nmap, plink, scrcpy, tesseract, cloudflared, and the start-*.bat launchers).

  2. Extract anywhere — D:\Tools\SassyMCP, a thumb drive, your home folder, whatever.

  3. Run start-local.bat (Claude Desktop), start-lan.bat (LAN HTTP), or start-tunnel.bat (Cloudflare Tunnel).

To uninstall: delete the folder. To upgrade: extract the new zip over the old folder, or to a new folder and delete the old one.

Standalone executable (no tools bundled)

If you don't need the bundled nmap / adb / cloudflared (or you have them on PATH already), grab just sassymcp.exe (~35 MB) from the latest release. Drop it anywhere and point your MCP client at it.

First-run wizard: Double-click sassymcp.exe (or run it from a terminal with no flags) on a fresh machine and you'll get an interactive menu — auto-detect AI agents and register SassyMCP, activate a LemonSqueezy license key, generate / list bearer tokens, or start the HTTP server. Run sassymcp.exe setup anytime to re-open the menu. Once a persona is configured, bare invocation falls back to starting the HTTP server (the v1.5 behavior) so existing setups are unchanged.

Activating a supporter license (optional)

There is no separate "licensed download" and nothing to unlock — everyone runs the same fully-unlocked binary from the GitHub releases. If you want to support development, buy a license at sassyconsultingllc.com/store and activate it to register your seat and supporter tier:

# from your AI agent:
sassy_setup_license action=activate key=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# or from a terminal — interactive menu, choose "Activate license":
sassymcp.exe setup

The license registers this machine as a LemonSqueezy instance (seat); sassy_setup_license action=deactivate frees the seat to move to another machine.

From source

git clone https://github.com/sassyconsultingllc/SassyMCP.git
cd SassyMCP
uv sync

# Optional dependencies:
uv pip install pytesseract playwright
playwright install chromium

Cloudflare Tunnel (remote access)

Want to drive SassyMCP from a remote MCP client (Claude Web, another machine)? The portable bundle ships a turnkey launcher. Full step-by-step is in docs/TUNNEL.md; the short version:

winget install Cloudflare.cloudflared          # one-time
cloudflared tunnel login                       # authenticate against your CF account
cloudflared tunnel create sassymcp             # create a named tunnel
cloudflared tunnel route dns sassymcp mcp.<your-domain>.tld
# Write ~/.cloudflared/config.yml with the ingress block (see TUNNEL.md)

[Environment]::SetEnvironmentVariable("SASSYMCP_AUTH_TOKEN", "<your token>", "User")
[Environment]::SetEnvironmentVariable(
    "SASSYMCP_ALLOWED_HOSTS",
    "mcp.<your-domain>.tld,localhost,127.0.0.1", "User")

cd D:\Tools\SassyMCP                           # wherever you extracted
.\start-tunnel.bat sassymcp                    # tunnel name as arg, or set SASSYMCP_TUNNEL_NAME

start-tunnel.bat launches the HTTP bridge on 127.0.0.1:21001 and runs cloudflared tunnel run <name> in the foreground. Nothing in the script is vendor-specific — you supply the tunnel name and the hostname. Clients send Authorization: Bearer <SASSYMCP_AUTH_TOKEN> against https://mcp.<your-domain>.tld/mcp.

For hosted-Claude clients that require OAuth 2.1 DCR/PKCE instead of a static bearer, deploy the optional Worker under sassymcp-oauth/ — copy wrangler.toml.example to wrangler.toml, fill in your hostname and KV id, and wrangler deploy. See docs/TUNNEL.md for the full OAuth section.

MCP Client Config

SassyMCP speaks standard MCP. Anything that connects works — no client-side modifications required. The portable bundle ships ready-to-edit templates under deploy/*_config.template.json. Pick the row for your client, copy the template, replace REPLACE_WITH_PATH with the absolute path to sassymcp.exe, and save it where the client expects.

Client

Transport

Config file location

Template

Claude Desktop

stdio

%APPDATA%\Claude\claude_desktop_config.json (Win) / ~/Library/Application Support/Claude/claude_desktop_config.json (mac)

claude_desktop_config.template.json

Cursor

stdio

~/.cursor/mcp.json (global) or <project>/.cursor/mcp.json (per-project)

cursor_mcp_config.template.json

Windsurf

stdio

~/.codeium/windsurf/mcp_config.json

windsurf_mcp_config.template.json

Cline (VS Code)

stdio

VS Code settings → cline.mcpServers (same mcpServers shape)

use claude_desktop_config.template.json

Continue.dev

stdio

~/.continue/config.json (merge under experimental.modelContextProtocolServers)

continue_mcp_config.template.json

Grok Desktop

HTTP

Grok Desktop MCP settings

grok_desktop_config.template.json

Any other MCP client

stdio or HTTP

client's MCP config

use the closest template; the mcpServers shape is conventional

Standard mcpServers shape (Claude Desktop, Cursor, Windsurf, Cline)

Using the exe:

{
  "mcpServers": {
    "sassymcp": {
      "command": "C:\\path\\to\\sassymcp.exe",
      "env": {
        "SASSYMCP_LOAD_ALL": "1",
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

From source:

{
  "mcpServers": {
    "sassymcp": {
      "command": "uv",
      "args": ["--directory", "C:\\path\\to\\SassyMCP", "run", "sassymcp"],
      "env": {
        "SASSYMCP_LOAD_ALL": "1",
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Continue.dev shape (different schema)

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "C:\\path\\to\\sassymcp.exe"
        }
      }
    ]
  }
}

HTTP / Grok Desktop / custom HTTP clients

Run the server in HTTP mode (sassymcp.exe --http, default 127.0.0.1:21001) and point your client at http://127.0.0.1:21001/mcp/. Set SASSYMCP_AUTH_TOKEN if the bind is non-loopback.

{
  "mcpServers": {
    "sassymcp": {
      "url": "http://127.0.0.1:21001/mcp/"
    }
  }
}

What's actually Claude-flavored (cosmetic only)

A few docstrings and the legacy .claude/skills/sassymcp-update.md slash-command target Claude Code specifically. Other clients ignore them and use sassy_update_* tools directly. No tool, transport, or auth path requires Claude — the server doesn't know which LLM is on the other end.

Transport Modes

Mode

Command

Use Case

Stdio

sassymcp.exe

Claude Desktop, Cursor (direct pipe)

HTTP

sassymcp.exe --http

Grok Desktop, Windsurf (localhost:21001)

HTTP LAN

sassymcp.exe --http --host 0.0.0.0

Multi-device (requires auth token)

HTTPS

sassymcp.exe --http --ssl

Encrypted (auto-generates self-signed cert)

SSE

sassymcp.exe --http --sse

Legacy transport

Running Multiple Instances (Dual Session)

Two SassyMCP processes on the same machine — for example, a local stdio instance for Claude Desktop and a remote HTTPS instance behind a Cloudflare Tunnel for Claude Web — can clobber each other's state if they share ~/.sassymcp/. The fix is one env var per instance.

Conflicts to resolve per-instance

Resource

Default

How to give each instance its own

HTTP port

21001

--port 21002 (HTTP-mode instances only)

Crosslink HTTP port

9377

sassy_crosslink_register port=9378

Auth token

env SASSYMCP_AUTH_TOKEN

Set per-process in launcher's env

Per-user state dir

~/.sassymcp

SASSYMCP_HOME=/path/to/dir ← the new env var (v1.3.4+)

SSL cert/key

$SASSYMCP_HOME/server.{crt,key}

Auto-isolated when SASSYMCP_HOME is set; or --ssl-cert / --ssl-key

Example: local stdio + remote tunnel side-by-side

Instance A — local stdio for Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "sassymcp-local": {
      "command": "C:\\Tools\\SassyMCP\\sassymcp.exe",
      "env": {
        "SASSYMCP_LOAD_ALL": "1",
        "SASSYMCP_HOME": "C:\\Users\\<you>\\.sassymcp-local"
      }
    }
  }
}

Instance B — remote HTTPS via Cloudflare Tunnel (start-tunnel.bat + a wrapper that sets the env):

set SASSYMCP_HOME=C:\Users\<you>\.sassymcp-remote
set SASSYMCP_AUTH_TOKEN=<token-for-remote>
set PORT=21002
"%~dp0sassymcp.exe" --http --host 127.0.0.1 --port %PORT%

Then cloudflared tunnel run <name> forwards https://<your-tunnel>/mcp to 127.0.0.1:21002.

What's isolated when SASSYMCP_HOME differs

Each instance gets its own:

  • persona.md — different profiles per session

  • config.json — different runtime config (allowed dirs, blocked commands, etc.)

  • tokens.json — different scoped auth tokens

  • license.json — separate license activation

  • audit.log / audit.jsonl — no interleaved writes

  • crosslink.db — separate cross-session message queues

  • memory.db — separate persistent memories

  • tool_state.db / tool_usage.json — separate per-tool state and usage analytics

  • server.crt / server.key — separate self-signed certs

  • The _security protected-paths check honors SASSYMCP_HOME too — neither instance can sassy_safe_delete into the other's home

What's still shared between instances

  • The repo source tree (always protected from delete/overwrite by _security)

  • %LOCALAPPDATA%\SassyMCP\updates\ — the updater download stage (harmless; tagged by version under it)

  • The bundled tools in the portable zip (adb, nmap, cloudflared, etc.) — read-only from both instances

Putting it in the OS (so both start at boot)

The legacy personal/autostart-bridge.bat + personal/register-autostart.ps1 template is gitignored — copy it, tweak the paths and the SASSYMCP_HOME for each instance, then Register-ScheduledTask once per instance.

Environment Variables

Variable

Purpose

SASSYMCP_LOAD_ALL=1

Load every tool group

SASSYMCP_GROUPS=core,android

Load specific groups

SASSYMCP_AUTH_TOKEN=xxx

Bearer token for HTTP auth

SASSYMCP_DEV=1

Enable live reload (dev mode)

SASSYMCP_NO_UPDATE_CHECK=1

Disable the startup update check (no GitHub API call)

SASSYMCP_HOME=/path/to/dir

Override the per-user state dir (default ~/.sassymcp). Required when running multiple instances on one machine.

SASSYMCP_REPO=/path/to/repo

Override the auto-detected repo root in tools/mercury_audit_sassymcp.py (dev tool only)

GITHUB_TOKEN=xxx

GitHub API access

SSH_HOST=xxx

Remote Linux hostname/IP

SSH_USER=xxx

Remote Linux username

SSH_PASS=xxx

Remote Linux password

External Tools

All bundled in the beta zip package. Install separately only if using the standalone exe.

Tool

Used By

Bundled

Install (if needed)

ADB

All sassy_adb_* + sassy_phone_* tools

Yes

Android Platform Tools

nmap

sassy_port_scan

Yes

nmap.org

plink

sassy_linux_exec

Yes

PuTTY

scrcpy

sassy_scrcpy_* tools

Yes

scrcpy releases

Tesseract

sassy_screen_ocr, sassy_find_text_on_screen

Yes

tesseract-ocr

Chrome

sassy_url_screenshot

No

google.com/chrome

Run sassy_setup_check_tools to verify all tools are detected.

Requirements

  • Windows 10/11, macOS 12+, or Linux — one source, routed at the head (sassymcp._platform) to the right command per host. See Cross-platform below.

  • Python 3.11+ (only if running from source; the standalone binary is self-contained — built per OS, since PyInstaller can't cross-compile)

Cross-platform

The same SassyMCP source runs on Windows, macOS, and Linux. The host OS is resolved once at import; every tool then routes to the host-appropriate command — shells (PowerShell / zsh|bash), clipboard (Get-Clipboard / pbpaste), event log (Get-WinEvent / log show / journald), firewall (netsh / socketfilterfw / ufw), Wi-Fi, Bluetooth, window control (pywinauto / AppleScript System Events / wmctrl), SSH (plink / native ssh), package installs (winget / brew / apt), and more.

  • Build: build.bat (Windows) or build.sh (macOS/Linux). Build each binary on its own OS.

  • macOS permissions: window-control and screenshot tools need Accessibility and Screen Recording permission for the app running SassyMCP (System Settings → Privacy & Security).

  • A handful of concepts are Windows-only by nature (raw Registry read/write/export); those report a clear message and point to the native equivalent (defaults, launchd). Forensic persistence (sassy_autorun_entries) IS cross-platform (Run keys / LaunchAgents / systemd+cron).

License

Proprietary - Copyright (c) 2026 Sassy Consulting LLC. All rights reserved.

Available Tools

97 tools
sassy_audit_clearA

Rotate the audit log to a timestamped archive.

The log is NEVER unlinked — always renamed to audit.cleared..log so forensic history is preserved. Pass confirm='YES' to proceed.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of safety disclosure. It explicitly states that the log is 'NEVER unlinked' and is 'always renamed to audit.cleared.<ts>.log,' which prevents a user from expecting destructive deletion. It also discloses the required confirmation value.

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 three short, purposeful sentences. The first sentence front-loads the action, the second provides key safety behavior, and the third gives the parameter requirement. Every line earns its place.

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?

This is a simple tool with one parameter and an output schema. The description covers purpose, safety, and the confirm gate. With an output schema present, return values need no explanation. Nothing important is missing for a tool of this 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?

The schema only shows a single optional string parameter with an empty default, offering no guidance. The description compensates by stating the exact required value: 'Pass confirm='YES' to proceed.' This adds meaning beyond the schema, though it does not explain what happens for other values or response details.

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: 'Rotate the audit log to a timestamped archive.' This clearly distinguishes it from sibling tools like sassy_audit_log (which likely retrieves logs) and sassy_audit_search (which searches logs) by emphasizing the rotation/archive behavior.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: when you need to clear/rotate the audit log while preserving history. It also gives a concrete usage requirement: 'Pass confirm='YES' to proceed.' It does not explicitly exclude alternatives or name sibling tools, so it misses a 5.

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

sassy_audit_false_positivesA

Show recent shell-interceptor pattern matches (blocks + bypasses).

Surfaces the noisy-pattern events you'd otherwise have to grep for. Each row: timestamp | event | pattern | command (truncated).

Args: count: max rows to return (newest last). include_bypasses: if False, show only blocks (commands that actually got refused). True also includes pattern_bypass entries — useful for auditing what the allow_pattern flag has been used to let through.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
include_bypassesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/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. It discloses the output row format (timestamp | event | pattern | command truncated), the 'newest last' ordering, and the exact semantics of include_bypasses for blocks versus pattern_bypass entries. It doesn't explicitly say 'read-only', but 'Show'/'audit' strongly implies no side effects.

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 front-loaded with the core purpose, then adds a compact use-case sentence, an output-format line, and two focused parameter explanations. Every sentence earns its place; there is no fluff or repetition.

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 simple 2-parameter read-only listing tool with an output schema, this description covers purpose, output fields, ordering, parameter behavior, and the intended audit use case. An agent has everything needed to select and invoke it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It does: count is explained as max rows to return with newest-last ordering, and include_bypasses is described in terms of the real behavioral difference between blocks and bypasses, including why the bypass view is useful.

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: 'Show recent shell-interceptor pattern matches (blocks + bypasses).' It also says it surfaces noisy-pattern events you'd otherwise have to grep for, which clearly distinguishes it from the audit_log/audit_search/audit_clear siblings.

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

Usage Guidelines4/5

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

The description provides clear context: this tool is for surfacing shell-interceptor false positives and auditing what allow_pattern has let through. It explains when to set include_bypasses, but it does not explicitly name alternative tools or state when not to use this one.

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

sassy_audit_logC

Read recent audit log entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only indicates a read operation and the vague qualifier 'recent', but omits details about ordering, limits, or that it is non-mutating beyond the word 'read'.

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 a single concise sentence that is front-loaded and free of fluff. It successfully states the core purpose without unnecessary words.

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

Completeness2/5

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

Given the existence of an output schema, the description still lacks necessary context about the meaning of 'recent' and the count parameter. It also does not position itself among audit-related siblings, leaving the overall behavior under-specified for a tool with a parameter and multiple related tools.

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

Parameters1/5

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

The schema has 1 parameter (count) with 0% description coverage, and the description does not mention it at all. Thus the agent receives no explanation of what 'count' controls, failing to compensate for the missing schema description.

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

Purpose4/5

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

The description clearly states the tool reads recent audit log entries with a specific verb ('read') and resource ('recent audit log entries'). It is distinguishable from siblings like audit_search, but does not explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as sassy_audit_search. The description only states what it does, leaving usage context entirely to the agent.

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

sassy_clickA

Click at absolute screen coordinates (works across multiple monitors). Use sassy_screen_info to find monitor positions first.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
buttonNoleft
clicksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It adds useful context by specifying 'absolute screen coordinates' and 'works across multiple monitors', but does not disclose potential side effects like focus stealing or required accessibility permissions.

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 concise sentences that front-load the action and provide necessary guidance. Every word earns its place with no redundancy.

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 simple click tool, the description is reasonably complete: it specifies coordinate system, multi-monitor support, and a prerequisite. With an output schema present, return values are not needed, but it could mention coordinate origin or button defaults.

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?

Schema description coverage is 0%, and the description only explains 'x' and 'y' implicitly as coordinates. It does not explain the 'button' or 'clicks' parameters, leaving them ambiguous without schema descriptions.

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 clearly states the tool's function: 'Click at absolute screen coordinates' – a specific verb and resource. It also distinguishes itself from sibling tools like sassy_type_text and sassy_hotkey by focusing on clicking at coordinates.

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

Usage Guidelines4/5

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

The description provides explicit guidance to 'Use sassy_screen_info to find monitor positions first', which is a clear prerequisite. It implies usage context for clicking at coordinates but does not mention alternative tools for other input actions.

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

sassy_context_estimateA

Estimate current context window usage from MCP tool definitions.

Shows: total estimated tokens, % of 200K window, heaviest tools. Use this to understand why your context is running low.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It describes the tool as estimating usage and listing outputs, which implies a read-only, non-destructive operation, but it does not explicitly state that it has no side effects or mention any permissions or reversibility. This is adequate but not rich in behavioral disclosure.

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 concise and front-loaded. The first sentence states the core action, and the following lines list outputs and use case without any fluff or redundancy. Every sentence earns its place.

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?

The tool is simple with no parameters and has an output schema, so the description doesn't need to detail return values. Given its simplicity, the description sufficiently covers the tool's purpose and outputs, making it complete enough for an agent to select and invoke correctly.

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?

The tool has zero parameters, so the baseline is 4. The description adds context about what the tool returns (e.g., total tokens, % of window, heaviest tools), which is meaningful even though there are no parameters to explain.

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 clearly states the tool's purpose with a specific verb ('Estimate') and resource ('current context window usage'). It details what it shows (token estimates, percentage of 200K window, heaviest tools), distinguishing it from sibling tools like sassy_observability_tool_stats.

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

Usage Guidelines4/5

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

Provides a clear use case: 'Use this to understand why your context is running low.' This gives context for when to employ the tool, though it does not explicitly mention when not to use it or name alternative tools.

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

sassy_copyA

Copy a file or directory tree.

Refuses protected src/dst and refuses to silently overwrite an existing destination (use sassy_safe_delete on the destination first if you really need to replace it).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
destinationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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. It discloses two key behavioral traits: refusal to operate on protected paths and refusal to silently overwrite existing destinations. These are significant behaviors that an agent must know. It does not mention permissions, error formats, or other side effects, but for a copy tool the disclosed behaviors are the most critical.

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-loaded with the core purpose, and every sentence adds functional value. The first sentence states what the tool does; the second explains limitations and resolution. There is no fluff or redundancy.

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?

The tool is simple with only two parameters and an output schema exists, so return values need not be described. The description covers the primary purpose and key constraints. It could mention that replication is recursive for directories (though 'directory tree' implies it) or how errors are surfaced, but for a copy operation this is sufficient. A small gap is not mentioning whether the destination must be a directory or a file path.

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?

The input schema provides only 'source' and 'destination' as strings with no descriptions, and schema description coverage is 0%. The description adds that the source/destination can be a file or directory tree and that protected paths are refused, which gives some meaning. However, it does not elaborate on path formats, whether the destination must exist, or handling of trailing slashes. The contribution is minimal but existent, so a 3 is appropriate.

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 'Copy a file or directory tree.' uses a specific verb and resource, clearly distinguishing the tool from siblings like sassy_move and sassy_safe_delete. It communicates both the action and the scope (file or directory tree) effectively.

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

Usage Guidelines4/5

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

The description provides clear guidance by stating that protected src/dst are refused and that overwriting an existing destination is not allowed, with an explicit alternative: 'use sassy_safe_delete on the destination first if you really need to replace it.' This gives an alternative and context, though it does not explicitly contrast with other copy-related tools (e.g., sassy_move).

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

sassy_desktop_stateA

Get desktop state: open windows and positions. Lean output. Coordinates are absolute across all monitors. Windows: pywinauto. macOS: System Events (needs Accessibility permission).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_taskbarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 does well: it discloses that coordinates are absolute across all monitors, names the underlying libraries, and flags the macOS permission need. It does not mention any additional side effects or limitations, but for a read-only state getter, this is reasonably transparent.

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?

Three sentences, each earning its place: first states the core purpose, second describes output style and coordinate system, third covers platform specifics. No fluff or repetition.

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?

Covers the essential functionality, output format, coordinate system, and platform-specific requirements. The only notable gap is not explaining the include_taskbar parameter, but the output schema likely handles return value details. Overall sufficient for an agent to invoke effectively.

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?

The schema has 0% description coverage and the description does not mention the include_taskbar parameter at all. The parameter name is somewhat self-explanatory, but the description fails to clarify its effect on output or why an agent would set it. Given the low coverage, the description should have compensated but did not.

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 clearly states the tool retrieves desktop state (open windows and positions), which is a specific verb+resource combination. It distinguishes itself from sibling tools like screenshots or screen info by specifying 'open windows and positions' and adds 'lean output' and coordinate system details.

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

Usage Guidelines4/5

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

Provides clear context on when to use it by explaining platform-specific implementations (pywinauto on Windows, System Events on macOS) and the Accessibility permission requirement. However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of full exclusion guidance.

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

sassy_diffB

Compare two files and return a unified diff.

context_lines: number of surrounding lines to show (default 3). Returns the diff text plus stats (added, removed, changed lines).

ParametersJSON Schema
NameRequiredDescriptionDefault
path_aYes
path_bYes
context_linesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions return values (diff text plus stats) and does not disclose side effects, permissions, error conditions, or any operational constraints.

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 concise and front-loaded with the primary purpose. The parameter note and return-value note add useful detail without being verbose, though the structure could be slightly cleaner.

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?

For a simple diff tool, the description covers the core behavior and return values. However, it lacks behavioral context like accessibility of files or error handling, and the output schema is not provided to compensate. Adequate but with clear gaps.

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 0%, so the description must compensate. It explains 'context_lines' (number of surrounding lines, default 3), but path_a and path_b are not described beyond their names, which are self-explanatory. Partial compensation for low schema coverage.

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 clearly states the tool's function: 'Compare two files and return a unified diff.' This is a specific verb+resource combination that distinguishes it from sibling tools like file readers or writers.

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?

Usage is implied by the purpose (use when you need to see differences between files), but there is no explicit guidance on when to use it over alternatives or any conditions for use. No exclusions are mentioned.

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

sassy_edit_blockA

Surgical file edit: find old_text and replace with new_text.

  • Exact match preferred; fuzzy fallback with diff reporting

  • Fails if multiple exact matches found (provide more context)

  • Preserves file encoding and line endings

  • Returns a preview of the change with surrounding context

  • Refuses edits on protected paths

  • Snapshots existing content to DELETE/ before applying

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
new_textYes
old_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries full behavioral burden. It discloses fuzzy fallback with diff reporting, failure on multiple matches, encoding/line-ending preservation, preview output, protected-path refusal, and snapshot creation. This is unusually comprehensive for a tool description.

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 front-loaded with a one-line summary followed by focused bullet points. Each bullet conveys a distinct behavioral detail without unnecessary elaboration, making it compact yet information-dense.

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 lack of annotations and minimal schema descriptions, the description covers the essential aspects of a file editing tool: success criteria, failure modes, side effects (snapshot), output (preview), and safety (protected paths). An output schema exists, so detailed return-value documentation is not required in the description.

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 coverage is 0%, so the description must compensate. It explains old_text and new_text semantics via exact match and fuzzy fallback, but path is not described beyond its schema title. The description adds partial value but misses potential path-related details like format or restrictions.

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 clearly states the tool performs a surgical file edit by finding old_text and replacing it with new_text. This distinguishes it from siblings like sassy_edit_multi (multiple edits) and sassy_write_file (whole-file write) through the 'surgical' framing and exact-match preference.

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

Usage Guidelines4/5

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

The description provides strong context for when to use it: exact match preferred, fuzzy fallback, fails on multiple matches, and refuses protected paths. However, it does not explicitly compare with alternatives such as sassy_edit_multi for multi-block edits or sassy_write_file for full rewrites, which would make the guidance complete.

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

sassy_edit_multiA

Apply multiple edits to a file in one call.

edits format (JSON string): [{"old": "text to find", "new": "replacement"}, ...]

Edits are applied in order. Each must have exactly one match. Refuses edits on protected paths and snapshots existing content to DELETE/ before applying.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
editsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden, and it excellently discloses key behaviors: edits are applied in order, each must have exactly one match, protected paths are refused, and content is snapshotted to _DELETE_/ before changes. This goes well beyond a simple 'apply edits' statement.

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 concise, front-loaded with the main purpose, and every sentence contributes new information: format, ordering, matching constraint, and safety behavior. It is well-structured and free of redundancy.

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?

The description is complete for the tool's complexity: it covers the edit format, application order, match requirements, safety restrictions, and snapshot behavior. Since an output schema exists, return value details are not required. The description provides enough context for an agent to invoke the tool correctly.

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?

The schema has 0% description coverage, so the description must compensate. It thoroughly explains the 'edits' parameter with a JSON format example and constraints (each must have exactly one match). The 'path' parameter is not explicitly described but is obvious from the tool name and context. This adds significant meaning beyond the bare schema.

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 clearly states the tool's purpose with a specific verb ('Apply') and resource ('multiple edits to a file'), and distinguishes it from simpler edit tools by emphasizing the 'in one call' batch capability. The format explanation further clarifies the operation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (applying multiple edits in one call) but does not explicitly mention alternatives or exclusions. It does not reference sibling tools like sassy_edit_block, but the purpose statement inherently guides the user toward batch editing scenarios.

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

sassy_env_getA

Get an environment variable value. Returns error if not set.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It accurately states the key error condition ('Returns error if not set'), which is valuable. The word 'Get' implicitly indicates a read operation with no side effects, though it does not elaborate on permissions or return format.

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 extremely concise, consisting of two short sentences that immediately convey the purpose and a key behavioral detail. No redundant information is included.

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?

This is a simple single-parameter tool. The description covers the core action and the notable error condition, making it sufficient for an agent to understand what to expect. The presence of an output schema likely covers return value details, so the description need not list everything.

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?

The schema has one parameter 'name' with no description, and the description does not explicitly map it to the environment variable name. However, 'environment variable value' strongly implies the parameter is the variable name. The description adds minimal meaning beyond the schema, but enough to understand the parameter's role.

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 clearly states the action ('Get') and the resource ('environment variable value'), making the tool's purpose unambiguous. It is distinct from sibling tools like sassy_env_set and sassy_env_list, which handle different operations.

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 the tool is for reading a specific environment variable, but it does not explicitly state when to use it over alternatives like sassy_env_list or provide any exclusions. The usage context is clear from the name but lacks explicit guidance.

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

sassy_env_listA

List environment variables. Optional filter by name substring. Sensitive values (tokens, keys, secrets) are masked.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_strNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states an important behavior: sensitive values (tokens, keys, secrets) are masked. This goes beyond a basic 'list' and helps the agent anticipate security masking. It does not mention permissions or pagination, but these are less critical for a simple list tool.

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-loaded with the primary action in the first sentence. Every word earns its place—it states the operation, the optional filter, and the sensitive-value masking without redundancy. This is a model of conciseness.

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 simple list tool with one optional parameter and an output schema present, the description is complete. It covers what the tool does, how filtering works, and a critical security behavior. There are no missing pieces that would prevent correct invocation or understanding of results.

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?

The schema provides no description for the single parameter filter_str (0% coverage), so the description must compensate. It does so by explaining that the filter is optional and matches by name substring, adding meaningful semantics beyond the parameter name and default value. This is sufficient for the sole parameter.

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 clearly states the tool's function with a specific verb and resource: 'List environment variables.' It also distinguishes itself from sibling tools like sassy_env_get and sassy_env_set by focusing on listing rather than retrieving or setting a single variable. The optional substring filter further clarifies intent.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: whenever you need to list environment variables, optionally filtered by name substring. It does not explicitly mention alternatives or exclusions (e.g., 'use env_get for a single variable'), but the scope is self-evident and consistent with the tool's name and siblings.

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

sassy_env_setA

Set an environment variable for the current SassyMCP process.

Persists for the lifetime of the server. Does NOT modify system env. For permanent changes, use the registry or system settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses two key behavioral traits: persistence for the lifetime of the server and no modification to system env. This is valuable context beyond just 'set env var' and covers the main side effects for this simple tool.

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 three short sentences, front-loaded with the primary action. Every sentence earns its place: purpose, persistence scope, and guidance for permanent changes. No redundancy or fluff.

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 simple 2-parameter tool with an output schema, the description covers purpose, lifetime, and scope, and even points to alternatives. It lacks minor details like overwrite behavior or validation, but these are not critical given the tool's simplicity and the presence of an output schema.

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 coverage is 0%, so the description must compensate for parameter meaning. It implicitly identifies 'name' as the environment variable and 'value' as its value via the verb 'set an environment variable', but adds no extra semantics (e.g., constraints, format, overwrite behavior). The property names are self-explanatory, so the description adds marginal value beyond the schema.

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 clearly states 'Set an environment variable for the current SassyMCP process' with a specific verb and resource. It distinguishes from sibling tools like sassy_env_get and sassy_env_list by emphasizing the 'set' action and the process-local scope.

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

Usage Guidelines4/5

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

Provides clear usage context: persists for the server lifetime and does not modify system env. Explicitly suggests registry or system settings for permanent changes, giving an alternative. Could more explicitly say 'use this for temporary process-scoped env settings' but the intent is clear.

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

sassy_file_infoA

Get detailed file/directory metadata.

Includes: size, timestamps, line count (text), sheet info (Excel).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It clearly states it returns metadata (not content), lists the specific metadata categories, and implies a read-only operation ('Get'). It does not mention error cases or access requirements, but for a simple read-only tool, this is adequate.

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 short sentences, front-loaded with the core purpose, followed by a list of included metadata. Every word earns its place; no filler or repetition of schema details. The line-break and bullet-like structure improves readability.

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?

Given the tool has a single parameter, an output schema, and simple read-only semantics, this description is sufficient. It covers the tool's scope (file/directory) and key output categories. It doesn't need to explain return values (output schema exists) or provide usage examples for such a straightforward operation.

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?

The schema has one parameter `path` with 0% description coverage. The description only refers to 'file/directory' in the purpose, implying path should be a filesystem path, but does not explain required format, whether it must exist, or any constraints. The description does not compensate for the sparse schema information.

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 uses a specific verb ('Get') and resource ('detailed file/directory metadata'), clearly distinguishing it from sibling tools like sassy_read_file (reads contents) and sassy_list_dir (lists directory entries). The inclusion of specific data types (size, timestamps, line count, Excel sheet info) reinforces this clarity.

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 for metadata retrieval (vs. reading content), and the list of included fields suggests what it's good for. However, it does not explicitly state when to use it or provide alternative tool names, leaving the agent to infer from the context. No exclusions or comparisons to sassy_read_file or sassy_list_dir are given.

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

sassy_get_configA

Get full SassyMCP configuration and system info.

Returns: config settings, system info (OS, Python, memory, disk), uptime, loaded modules, and tool usage stats. DC get_config equivalent.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full responsibility. It transparently discloses the read-only nature ('Get') and details the return payload (config, OS, Python, memory, disk, uptime, modules, usage stats). It does not mention potential side effects, but for a getter this is sufficient. It adds context beyond the name by specifying the exact information returned.

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 concise: two short sentences, with the core action in the first sentence and a bullet-like return list in the second. The 'DC get_config equivalent' is slightly cryptic and adds minor noise, but overall it is well-structured and front-loaded with the most important information.

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's simplicity (0 params, no nested objects, and an output schema exists), the description is complete. It covers the tool's purpose and return contents, and the output schema can handle formal return types. The context signal 'Has output schema: true' means the description need not explain return formats, yet it still provides a helpful overview. No important gaps remain for a config getter.

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?

The tool has 0 parameters, so the baseline is 4 per rubric. The description does not need to explain parameters since there are none; it appropriately focuses on the return value, which is more relevant. Schema coverage is 100% by vacancy, so no additional parameter semantics are required.

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 uses a specific verb+resource: 'Get full SassyMCP configuration and system info.' It clearly defines the scope and lists the exact categories of returned data (config settings, OS, Python, memory, disk, uptime, loaded modules, tool usage stats), making it unmistakable what the tool does and distinguishing it from other getters like state_get or env_get.

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: 'Get full SassyMCP configuration and system info' clearly suggests using this when you need configuration and system details. However, it does not explicitly mention alternatives or when not to use it, nor does it contrast with siblings like sassy_observability_metrics or sassy_set_config. The 'DC get_config equivalent' line hints at compatibility but does not provide actionable guidance.

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

sassy_ghq_getC

Get file contents + SHA from a repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
pathYes
repoYes
ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the return value (file contents + SHA), implying a read operation, but does not disclose authentication needs, network behavior, failure modes, or effects. It adds limited context beyond the tool name.

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 a single clear sentence with no filler, front-loading the action and result. Every word earns its place, and it is easy to scan.

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

Completeness2/5

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

Although the tool is relatively simple and has an output schema, the description lacks important context: it does not explain the role of each parameter, how to handle errors, or why a user would choose this over sibling read tools. The 0% parameter coverage and missing usage guidance leave the description incomplete for reliable invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no explanation of the parameters (owner, repo, path, ref). It does not clarify what 'ref' means, whether it is optional, or how path should be formatted. The description fails to compensate for the schema's lack of documentation.

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

Purpose4/5

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

The description 'Get file contents + SHA from a repo' clearly states the verb (Get), resource (file contents + SHA), and source (a repo). It is specific enough to distinguish from many sibling tools, though it does not explicitly compare to sassy_read_file or sassy_read_multiple.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives, no examples, and no mention of when to choose sassy_ghq_get over sassy_read_file or other repository-related tools. It simply states what it does.

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

sassy_ghq_issueC

Create an issue. labels: comma-separated.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
repoYes
ownerYes
titleYes
labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but only states the primary action and label format. It does not disclose authentication needs, side effects, permissions, or response behavior, leaving a significant gap for a mutating tool.

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 extremely brief and front-loaded, with the label format note earning its place. While minimal, it avoids redundancy and is appropriately sized for the tool's apparent simplicity.

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

Completeness2/5

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

For a 5-parameter create operation with no annotations, the description lacks important context like required owner/repo semantics, authentication, and relationship to sibling issue tools. Even though an output schema exists, the operation's preconditions and side effects are unexplained.

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?

Schema description coverage is 0%, so the description should compensate; it only specifies that labels are comma-separated. Parameters like owner, repo, title, and body have no additional guidance beyond their names, leaving required inputs partially underspecified.

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

Purpose4/5

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

The description uses a specific verb ('Create') and resource ('an issue'), clearly identifying the operation. It doesn't explicitly contrast with sibling tools like sassy_ghq_issues, but the singular/plural naming and action verb make the purpose apparent.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as sassy_ghq_issues for listing. It merely states the action without prerequisites, exclusions, or context.

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

sassy_ghq_issuesC

List issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
repoYes
ownerYes
stateNoopen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'List issues' only implies a read operation but does not disclose pagination behavior, default state, or what the response contains. It adds minimal transparency beyond the name.

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

Conciseness2/5

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

The description is extremely short ('List issues.'), which is under-specification rather than concise. It omits critical details and does not earn its place as sufficient guidance.

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

Completeness1/5

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

Given the 4 parameters and lack of annotations, this description is severely incomplete. It does not explain return format, default behavior, or how to filter issues, making it inadequate for correct tool invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides zero meaning for the 4 parameters (owner, repo, state, page). The description does not compensate for the lack of parameter documentation, leaving the agent to infer meaning solely from parameter names.

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

Purpose3/5

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

The description 'List issues' states a specific verb and resource, but it is vague and does not distinguish itself from sibling tools like 'sassy_ghq_issue' (singular) or clarify the scope (e.g., which repository). It lacks context about being GitHub issues or any filtering parameters.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of whether this is for queried issues, specific states, or how it relates to other issue/PR tools.

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

sassy_ghq_prC

Create a pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYes
bodyNo
headYes
repoYes
ownerYes
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly indicates a mutating action ('Create') but does not disclose potential side effects, required permissions, branch handling, or what happens on duplicate PRs. The description is not misleading, but it is minimal.

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 a single, front-loaded sentence with no filler, which is structurally efficient. However, its brevity sacrifices essential operational detail, so it is concise but not as useful as it could be.

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

Completeness2/5

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

Although an output schema exists (so return values don't need explaining), the description omits all contextual guidance: branch semantics, when to use the tool vs siblings, and parameter meaning. Given the six-parameter schema and absence of annotations, this is insufficient for reliable tool selection and invocation.

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?

The input schema has six parameters with 0% schema description coverage, and the tool description mentions none of them. While names like 'owner', 'repo', and 'title' are self-explanatory, 'head' and 'base' are Git-specific and remain unexplained, leaving the agent to infer their roles.

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

Purpose4/5

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

The description states 'Create a pull request.', which is a specific verb+resource pairing. It clearly identifies the core action and differentiates from sibling tools like sassy_ghq_issue, sassy_ghq_push, and sassy_ghq_protect by naming the PR operation, though it offers no additional nuance about the scope or type of pull request.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not mention when to use this tool versus alternatives such as sassy_ghq_issue, sassy_ghq_get, or sassy_ghq_push, and it lacks any prerequisites, exclusions, or context about the PR creation workflow.

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

sassy_ghq_protectB

Protect a branch (no force push, no delete, enforce on admins).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
branchNomain

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the core protective actions ('no force push, no delete, enforce on admins') but omits important behavioral context such as required permissions, whether it modifies existing protections, idempotency, or side effects. The description is too brief to fully inform the agent of the tool's impact.

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 a single, compact sentence that immediately conveys the core action and its key constraints. There is no redundant phrasing or unnecessary detail; every word contributes to understanding the tool's function.

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

Completeness2/5

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

Given the tool's simplicity and the presence of an output schema, the description is adequate for basic identification but lacks essential contextual details. It fails to mention that owner and repo are required, branch defaults to main, or any prerequisites like admin access. Though complexity is low, the description leaves the agent without enough guidance for correct invocation.

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?

Schema description coverage is 0%, so the description must compensate, but it provides no parameter explanations. The parameter names (owner, repo, branch) are self-explanatory, and the branch default is in the schema, but the description adds no semantic value beyond what the schema already shows.

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 clearly states the tool's purpose with a specific verb ('Protect') and resource ('a branch'), and the parenthetical details (no force push, no delete, enforce on admins) concretely define the protection rules. This distinguishes it from sibling tools like sassy_ghq_push or sassy_ghq_pr, which handle different GitHub operations.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. While the purpose implies usage for protecting branches, there is no mention of when not to use it or how it relates to other repository management tools.

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

sassy_ghq_pushA

Push files atomically (create or update). THE daily-driver tool.

files: JSON array of {"path": "...", "content": "..."} objects. Uses Git Data API — no SHA bugs, no ETag nonsense.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
filesYes
ownerYes
branchYes
messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of transparency. It discloses atomicity ('atomically') and the create/update semantics, and it mentions using the Git Data API to avoid SHA and ETag issues. However, it does not mention potential failure modes, prerequisites, or response behavior, leaving some gaps for a mutation tool.

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 brief and front-loaded with the core purpose. The 'THE daily-driver tool' and 'no SHA bugs, no ETag nonsense' add personality and context but flirt with business jargon. Overall, every sentence contributes to understanding, and the structure is easy to scan.

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?

Given the tool's simplicity and the presence of an output schema, the description covers the essential behavior and parameter format. It lacks explicit caveats about error handling or branch conflicts, but for a straightforward atomic push, it is largely complete. The absence of annotation details is offset by the description's explicit focus.

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 coverage is 0%, so the description must compensate. It provides crucial detail for the 'files' parameter, specifying the exact JSON array format with path and content objects. While other parameters (owner, repo, branch, message) are not explicitly described, their names are self-explanatory, and the description addresses the one non-obvious parameter.

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 the action with a specific verb and resource: 'Push files atomically (create or update).' The scope is clear (files to a repository), and the tool name 'ghq_push' reinforces its function. It distinguishes itself from sibling tools like sassy_ghq_pr and sassy_ghq_get by clearly indicating a file push operation.

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 phrase 'THE daily-driver tool' implies this is the primary tool for pushing files, providing some usage context. However, it does not explicitly state when to avoid it or mention alternatives (e.g., 'for pull requests, use sassy_ghq_pr instead'). The guidance is more implied than explicit.

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

sassy_hooks_activateA

Activate an operational hook. Returns the full expert playbook.

The playbook contains step-by-step instructions for HOW to approach the task — which tools to use, in what order, what to look for, and what NOT to do. Follow it.

Use sassy_hooks_list to see available hooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the primary behavior—'Returns the full expert playbook'—and describes the playbook's content. However, it does not mention potential side effects of activation (e.g., whether the hook remains active, if changes are persistent, or if there are permissions required). This is a moderate gap.

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 concise and front-loaded. The first sentence immediately states the action and return value. Subsequent sentences add necessary context about the playbook and the list tool without redundancy. Every sentence contributes to understanding, making it highly efficient.

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 simple tool with one parameter and an output schema present, the description covers the essential information: what it does, what it returns, and how to determine valid input values. It is largely complete, though a brief mention of the effect of 'activation' on hook state would make it fully comprehensive.

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 coverage is 0% for the single 'hook_name' parameter, so the description must compensate. It adds value by instructing 'Use sassy_hooks_list to see available hooks', which informs how to populate the parameter. However, it does not provide examples, formats, or constraints beyond this, leaving the parameter's semantics partially underspecified.

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 clearly states the tool's function: 'Activate an operational hook. Returns the full expert playbook.' This uses a specific verb ('activate') and resource ('operational hook'), and it distinguishes the tool from its sibling by referencing 'sassy_hooks_list', implying activation is the complementary operation to listing.

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

Usage Guidelines4/5

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

The description provides clear context for use: 'Use sassy_hooks_list to see available hooks' indicates a prerequisite step and indirectly suggests using this tool after listing. It also explains the playbook's utility in guiding tasks. However, it does not explicitly state when not to use this tool or mention alternatives like deactivate or suggest.

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

sassy_hooks_deactivateA

Deactivate a hook or all hooks.

hook_name: specific hook to deactivate, or empty to clear all.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of disclosing behavioral traits. It states the action but does not mention side effects, reversibility, required permissions, or the impact on currently active hooks. 'Deactivate' implies mutation, but without safety context the agent cannot judge the consequences of invoking this tool, especially when clearing all hooks.

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 extremely concise and front-loaded. The first sentence states the purpose, and the second sentence defines the parameter. There is no redundant wording or filler, making it easy for an agent to parse quickly.

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 tool with a single optional parameter and an output schema, the description covers the essential purpose and parameter usage. The main gaps are the lack of behavioral safety information and explicit usage comparisons with siblings, but the description is sufficient for basic invocation and understanding of the core operation.

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

Parameters5/5

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

The description fully explains the only parameter hook_name with concrete semantics: a specific hook name to disable, or an empty string to disable all hooks. This directly compensates for the 0% schema coverage and leaves no ambiguity about parameter meaning.

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 ('Deactivate') on a specific resource ('hook') with clear scope ('a hook or all hooks'). It immediately distinguishes itself from sibling tools like sassy_hooks_activate and sassy_hooks_list, leaving no ambiguity about the operation.

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

Usage Guidelines4/5

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

Provides clear operational context: the parameter hook_name can be a specific hook or empty to clear all. This tells the agent when to supply a value and the effect of omitting it. However, it does not explicitly contrast with alternative tools (e.g., activate, list) or state conditions to avoid using this tool, so it falls just shy of full guidance.

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

sassy_hooks_listA

List all available operational hooks.

Hooks are expert playbooks that teach the AI HOW to approach a task. When activated, the AI gets pre-loaded domain expertise — the right "lens" for the job. Use sassy_hooks_activate to load one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly indicates a read-only listing operation and explains the purpose of hooks, but it does not mention permissions, auth, or output size. The non-destructive nature is implied by 'list,' but not explicitly stated.

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 exactly three sentences, front-loading the core purpose and then adding context about hooks and the next step. Every sentence earns its place, with no fluff or repetition.

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 zero-parameter list tool with an output schema, the description is complete: it defines the domain (hooks as playbooks), states that all available hooks are listed, and points to the activation tool. The output schema covers return format, so no additional description is needed.

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?

The tool takes zero parameters, so the description adds value by explaining what is listed (operational hooks) and the meaning of hooks. With 100% schema coverage on an empty schema, the baseline for zero parameters is 4; there is no parameter-specific information to add.

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: 'List all available operational hooks.' This clearly states the tool's function and scope, and it is distinct from sibling tools like sassy_hooks_activate, which loads a hook, and sassy_hooks_suggest, which presumably suggests hooks.

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

Usage Guidelines4/5

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

The description explains what hooks are and tells the agent to use sassy_hooks_activate to load one after listing, giving clear context for when listing is useful. However, it does not explicitly contrast with sassy_hooks_suggest or state exclusions, so it stops short of a full when-to-use guide.

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

sassy_hooks_suggestA

Suggest hooks based on what the user is trying to do.

Pass the user's request text. Returns matching hooks ranked by relevance. The AI should call this when it's unsure which hook to use, or proactively when the user's request matches a known domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It states that the tool 'Returns matching hooks ranked by relevance', which implies read-only behavior and gives insight into the output format. It does not mention edge cases or permissions, but for a non-mutating suggestion tool, the key behavioral trait (returning ranked results) is disclosed.

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 three sentences, front-loaded with the main action, and every sentence adds value: purpose, input/output, and usage guidance. There is no redundancy or unnecessary detail.

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 simple single-parameter tool with an output schema, the description covers the essential aspects: what it does, what input to provide, what output to expect (ranked suggestions), and when to invoke it. The existence of an output schema covers return-value details, so the description is sufficiently complete for an agent to use it correctly.

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?

The input schema provides only a parameter name ('user_text') with no description (0% schema coverage). The description compensates by explaining 'Pass the user's request text', giving clear semantic meaning. It does not provide format details or examples, but the single simple string parameter is adequately explained.

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 clearly states the tool's function with a specific verb ('Suggest') and resource ('hooks'), and adds the scope 'based on what the user is trying to do'. It distinguishes itself from sibling hook tools like list/activate/deactivate by emphasizing ranked matching, making its unique purpose unambiguous.

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

Usage Guidelines4/5

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

The description explicitly specifies when to use this tool: 'when it's unsure which hook to use' and proactively when the request matches a known domain. However, it does not name alternative tools (e.g., sassy_hooks_list, sassy_hooks_activate) or state when not to use it, so it falls short of a full 5.

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

sassy_hotkeyB

Press keyboard shortcut. Keys separated by +, e.g. ctrl+c.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states the basic action and key format, without disclosing whether the shortcut is sent to the foreground application, whether it requires special permissions, or any side effects. This is a significant gap for a tool that simulates input.

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 short sentences with no wasted words. The first sentence states the purpose, and the second provides the parameter format. Excellent front-loading and structure.

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 is simple (one parameter, output schema exists), but the description lacks context such as whether it works globally, requires a focused window, or any limitations. While the example and format are useful, the missing behavioral context makes it incomplete for fully informed use.

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?

The input schema provides only a 'keys' string with zero description coverage. The description adds crucial format guidance: 'Keys separated by +, e.g. ctrl+c.' This clarifies the required syntax and provides a concrete example. It does not enumerate valid keys, but the format is sufficient for basic usage.

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

Purpose4/5

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

The description clearly states the action ('Press keyboard shortcut') and the resource ('keyboard shortcut') with an example. It distinguishes from siblings like sassy_click (mouse) and sassy_type_text (typing text) by focusing on key combinations using '+'. However, it doesn't explicitly mention 'simulate' or 'send to active window', which could add precision.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of context (e.g., 'use for global hotkeys' or 'for typing text use sassy_type_text'). The example implies usage for shortcuts, but no explicit when-to-use or exclusions are given.

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

sassy_httpA

Make an HTTP request. Lightweight alternative to web_inspector for quick API calls.

method: GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE headers: JSON object of headers, e.g. {"Authorization": "Bearer xxx"} body: request body (string or JSON) allow_mutating: required True for state-changing verbs (POST, PUT, PATCH, DELETE). The MCP tool surface is reachable by an LLM that may be partially adversarial; gating mutating verbs behind an explicit flag stops an "innocent fetch" prompt from being steered into a DELETE against an internal service.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyNo
methodNoGET
headersNo
allow_mutatingNo
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It transparently explains the safety gating for mutating verbs, including the adversarial LLM rationale and the protection against accidental destructive requests. It also gives concrete format examples for headers and body. It does not detail timeout behavior or error handling, but the key behavioral trait (mutating gate) is well disclosed.

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 front-loaded with the core action, then immediately contrasts with web_inspector. The parameter list is concise and scannable. The allow_mutating explanation is slightly long but directly serves safety and usage understanding. No redundant filler exists.

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 tool with an output schema and no annotations, the description covers purpose, usage guidance, parameter semantics for the key fields, and an important safety behavior. The only omissions are timeout_seconds and explicit return format guidance, but the output schema handles return values and timeout has a default. The description is sufficiently complete for an agent to invoke the tool correctly.

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 compensates by adding meaning to method (listing allowed values), headers (JSON example), body (string or JSON), and allow_mutating (required for state-changing verbs). It omits timeout_seconds and url, but url is self-explanatory and timeout_seconds has a default. Overall, it adds substantial semantic value beyond the schema.

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 clearly states 'Make an HTTP request' as the core verb-resource pair and differentiates itself as a 'lightweight alternative to web_inspector for quick API calls.' This distinguishes it from sibling tools like web_inspector and sassy_http_ping, making the tool's purpose immediately obvious.

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

Usage Guidelines4/5

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

'Lightweight alternative to web_inspector for quick API calls' provides clear usage context. Additionally, the explicit requirement that allow_mutating must be true for state-changing verbs guides when to use the tool (and what flag to set). It lacks explicit exclusions or alternative references beyond web_inspector, but context is strong.

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

sassy_http_pingA

Quick health check on multiple URLs. Returns status code and response time for each.

urls: comma-separated list of URLs to check.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It accurately states the return values, but it does not explicitly confirm the operation is read-only, does not mention network side effects or timeouts, and does not describe error handling. It implies a safe health check but leaves important behavioral details undocumented.

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-loaded with purpose and including a concise parameter explanation. Every word earns its place with no fluff or redundancy.

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?

The tool is simple with one parameter and an output schema present, so the description covers the core purpose and parameter semantics. While it lacks explicit behavioral details and usage guidance, it is adequate for a straightforward health-check tool, especially given the output schema provides return structure.

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?

The input schema only defines 'urls' as a string with no description. The tool description compensates by explaining that 'urls' is a comma-separated list of URLs to check, which provides the essential format and meaning beyond the schema. This is valuable given 0% schema description coverage.

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 clearly states the tool performs a quick health check on multiple URLs and returns status code and response time for each. This is a specific verb (check) with a resource (URLs) and clear outputs, making it distinct from a generic HTTP tool like sassy_http.

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 for health-checking multiple URLs but does not explicitly mention when to use this tool versus alternatives such as sassy_http or sassy_observability_health. There are no exclusions or alternative names provided, so guidance is only implicit.

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

sassy_list_dirA

List directory contents. [FILE]/[DIR] prefixes. depth controls recursion.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
depthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful details: the output includes [FILE]/[DIR] prefixes and depth controls recursion. However, it does not explicitly state that it's a read-only operation, nor does it mention behavior for hidden files, permissions, or error handling. For a simple listing tool, this is adequate but not comprehensive.

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 with no unnecessary words. The primary action is front-loaded, and the secondary sentence adds pertinent parameter behavior. This is highly concise and appropriate for the tool's simplicity.

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 is simple and has an output schema, so return values don't need elaboration. However, the description could be more complete by clarifying the depth semantics (e.g., what depth=0 or depth=2 means) and by stating whether the path must point to a directory. These gaps are not covered by the schema descriptions (which are absent), leaving some ambiguity in usage.

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?

Schema description coverage is 0%, so the description must compensate. It explains 'depth' as controlling recursion, but the explanation is vague (e.g., how depth values translate to recursion levels). It does not provide any additional meaning for the 'path' parameter, which is left as an implicit directory path. The description offers minimal help to an agent trying to correctly set parameters.

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 clearly states the tool lists directory contents, which is a specific verb+resource. It distinguishes itself from siblings like sassy_read_file (reads files) and sassy_search_files (searches for files) by explicitly targeting directory listing. The [FILE]/[DIR] prefixes add further clarity about the expected output.

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 purpose implies when to use it (need to see what's in a directory), but there is no explicit guidance on when not to use it or which alternative to pick. The mention of depth controlling recursion gives some usage context but doesn't clarify edge cases or compare to other file-related tools.

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

sassy_memory_contextA

Load full context for session startup. Returns critical memories, active tasks, blockers, recent milestones, and learned patterns.

Call this at the START of every session. This is how you know what's been happening and what needs to continue.

project: optional filter to focus on a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses what it returns and the optional filter, and implies a read-only load. It doesn't mention potential size/cost or whether state is modified, but the provided information is sufficient for a startup context loader.

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?

Three short, front-loaded paragraphs: purpose and contents, explicit usage directive, and parameter clarification. Every sentence earns its place, no redundancy.

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 low-complexity load tool with an output schema present and one optional parameter, the description is complete. It covers what is returned, when to use it, and the optional filter, leaving no critical gaps.

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 coverage is 0%, and the description adds meaning by describing 'project' as an optional filter to focus on a specific project. It could be more specific about value format, but the core semantic is clear for a single optional parameter.

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 clearly states the tool loads full context for session startup and enumerates the exact contents (critical memories, active tasks, blockers, recent milestones, learned patterns). It distinguishes from memory siblings by focusing on startup context rather than individual recall/search.

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

Usage Guidelines4/5

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

Explicitly instructs to call at the START of every session, with a rationale. However, it doesn't mention when not to use it or contrast with alternatives like sassy_memory_recall or sassy_session_start, leaving a small gap.

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

sassy_memory_forgetA

Delete a memory. Use when information is no longer relevant.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Delete a memory' without mentioning whether the deletion is permanent, reversible, or if there are any side effects. For a destructive tool, this is a significant transparency gap.

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 exceptionally concise and front-loaded: 'Delete a memory.' followed by a single usage guideline. Both sentences earn their place, and there is no redundant or filler content.

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

Completeness2/5

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

Even though the tool is simple and an output schema exists, the description lacks essential context: the meaning of the 'key' parameter, the permanence of deletion, and any prerequisites or side effects. Given that there are no annotations, the description alone is not sufficient for an agent to safely and correctly invoke this destructive 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?

The schema has 0% description coverage for the single required parameter 'key', and the description does not explain how to specify which memory to delete or where to obtain a valid key. The parameter name is self-explanatory to some degree, but the description adds no semantic value beyond the schema.

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 uses a specific verb ('Delete') and resource ('a memory'), clearly distinguishing it from sibling memory tools like sassy_memory_remember, recall, and search. The purpose is immediately obvious and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: 'Use when information is no longer relevant.' This is a useful when-to-use guideline. However, it does not explicitly mention when not to use it or suggest alternative tools, so it stops short of a 5.

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

sassy_memory_handoffA

Write a session handoff — saves state to BOTH memory and crosslink.

The next session calls sassy_memory_context and sassy_crosslink_recv to pick up exactly where you left off.

task: what you were working on status: in-progress | blocked | needs-review | paused | completed completed: comma-separated list of completed items next_steps: comma-separated ordered list of what to do next blockers: comma-separated list of blockers files_touched: comma-separated list of files modified project: project name context_notes: critical context the next session needs

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes
statusNoin-progress
projectNo
blockersNo
completedNo
next_stepsNo
context_notesNo
files_touchedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly states that the tool writes state to both memory and crosslink, which is a helpful mutation disclosure. However, it does not explain whether a previous handoff is overwritten or merged, whether any permissions are needed, or what the response contains, leaving some behavioral ambiguity.

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 front-loaded with the core purpose, then gives the continuation flow in one line, followed by a compact parameter list. Every sentence earns its place; there is no filler or redundant repetition of schema information.

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 write-tool with 8 parameters and no annotations, the description covers the essential context: what the handoff contains, how fields are formatted, and how the next session will consume it. It lacks a concrete example and does not discuss overwrite behavior, but the provided info is sufficient for an agent to invoke the tool correctly in most session-handoff scenarios.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It does exactly that: every one of the 8 parameters is explained with clear semantics, including the allowed values for status ('in-progress | blocked | needs-review | paused | completed') and the expected comma-separated format for list fields. This adds substantial meaning beyond the bare schema property names.

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 clearly states the tool's function with a specific verb and resource: 'Write a session handoff — saves state to BOTH memory and crosslink.' It also distinguishes itself from related memory tools by explaining that the next session calls sassy_memory_context and sassy_crosslink_recv to resume work, which clearly differentiates its role from siblings like sassy_memory_remember or sassy_memory_log.

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

Usage Guidelines4/5

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

The description implies when to use the tool: at the end of a session to hand off context to the next session, and it names the exact retrieval tools for the next session. It does not explicitly say when not to use it or mention alternatives, but the use case is clearly scoped as a session handoff, which is enough to guide selection.

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

sassy_memory_logA

Log a milestone event. Use for significant completions, decisions, or changes.

event: what happened (e.g. "deployed v1.0", "fixed TLS cert chain", "merged PR #42") project: which project tags: comma-separated (e.g. "deployment,milestone")

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
eventYes
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the action ('Log a milestone event') which implies a write/append operation, but gives no details on persistence, permissions, or side effects. The examples are helpful but behavioral nuance is not explored.

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 brief and front-loaded with the purpose, followed by a clear parameter list. Every line adds value, with no wasted words.

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?

The tool has low complexity, an output schema exists, and the description covers the intended usage and parameters. It does not mention retrieval or related tools, but given the sibling context and schema presence, this is not a significant gap.

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?

Although schema description coverage is formally 0%, the description includes inline parameter explanations (event, project, tags) with concrete examples for event and tags. This adds meaning beyond the bare schema property titles and helps the agent understand expected values.

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

Purpose4/5

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

The description clearly states the tool logs milestone events and gives examples of significant completions, decisions, or changes. It is specific about the resource and action, though it does not explicitly differentiate from sibling tools like sassy_memory_milestones or sassy_memory_remember.

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

Usage Guidelines4/5

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

The description explicitly says 'Use for significant completions, decisions, or changes,' providing clear context for when to use the tool. However, it does not mention alternatives or scenarios where it should not be used, which would make it more complete.

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

sassy_memory_milestonesB

View recent milestones, optionally filtered by project.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states a read-like action ('View') and an optional filter, but does not explain ordering, pagination, what 'recent' means, or whether it has side effects. Minimal behavioral context is given beyond the function name.

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 a single, concise sentence with no filler words. It front-loads the primary action and resource, making it instantly understandable.

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?

An output schema exists, so return values need not be described. However, the description is minimal: it does not clarify what 'milestones' are in this context, nor does it define the limit parameter. For a simple view tool, it is adequate but leaves gaps in understanding.

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?

Schema description coverage is 0%, so the description must compensate for missing parameter documentation. It explains 'project' as a filter but does not mention 'limit' at all, leaving one parameter semantically undocumented. The description adds partial value but is incomplete.

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 clearly states the tool's function with a specific verb ('View') and resource ('recent milestones'), and notes an optional filter ('by project'). This distinguishes it from sibling tools like sassy_memory_search or sassy_memory_recall, which focus on other memory operations.

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 when one needs to view recent milestones, but it does not explicitly mention when to use this tool versus alternatives or provide exclusions. There is no reference to sibling tools that might serve similar purposes.

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

sassy_memory_recallC

Recall a specific memory by key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Recall a specific memory by key' and does not mention what happens if the key is missing, whether the memory is returned, or any side effects. This is minimal behavior information.

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 a single, efficient sentence with no wasted words. It is appropriately sized for a simple tool, though it could have included more context without becoming verbose.

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?

For a one-parameter tool with an output schema, the description is adequate but has gaps. It does not place the tool within the brotherhood of memory tools nor explain error behavior or key sources. Given the many memory-related siblings, more context would be valuable.

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?

Schema description coverage is 0%, so the description must compensate. It adds the meaning that the 'key' identifies a specific memory, but gives no details on key format, how to obtain keys, or relationship to other memory tools. This is barely more than the parameter name itself.

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

Purpose4/5

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

The description 'Recall a specific memory by key' clearly states the verb (Recall), resource (memory), and method (by key). It distinguishes from siblings like sassy_memory_search by emphasizing direct key-based access, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus similar memory tools such as sassy_memory_search or sassy_memory_log. The description only states what it does, with no context for selection or exclusions.

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

sassy_memory_rememberA

Store a memory that persists across sessions.

key: unique identifier (use naming convention: task_state, pattern, blocker, decision) value: the memory content (what happened, what was learned, current state) tags: comma-separated (e.g. "task-active,tls,security") priority: critical | high | normal | low project: project name (e.g. "sassymcp", "sassy-browser")

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tagsNo
valueYes
projectNo
priorityNonormal

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It mentions persistence across sessions, which is useful, but omits important behavioral traits such as what happens when an existing key is reused (overwrite vs. error), whether the operation is reversible, or any side effects. This is a significant gap for a write operation.

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 concise and well-structured: a single opening sentence followed by a clear parameter breakdown. Every line provides necessary information, with no filler or repetition.

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?

The description gives a complete picture for a simple memory-store tool: purpose, parameter semantics, and the key behavioral fact of persistence. An output schema is present, so return values need no explanation. It loses a point for not addressing the overwrite/update semantics, which is a common usage concern for persistent stores.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining all five parameters: the key naming convention (task_<concept>_..., pattern_..., etc.), value content, comma-separated tags, priority levels (critical|high|normal|low), and project examples. This goes far beyond what the raw schema provides.

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 'Store a memory that persists across sessions,' using a specific verb ('store') and resource ('memory'). This clearly differentiates from sibling tools like sassy_memory_recall (retrieval) and sassy_memory_forget (deletion).

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 by stating the tool stores persistent memories and then details parameter conventions. However, it does not explicitly state when to use this tool versus alternatives (e.g., recall/search) or mention exclusions, so the guidance is more implicit than explicit.

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

sassy_memory_statsB

Memory system stats: total memories, priorities, projects, milestones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It implies a read-only stats operation but does not explicitly state side-effect freeness, data source, or any limitations. The description only lists content, not behavior.

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 a single concise sentence, front-loaded with the purpose. Every word earns its place, with no fluff or redundancy.

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?

Given the tool's simplicity (no parameters) and the existence of an output schema, the description is reasonably complete. It lists the primary stats fields, and the output schema presumably provides further detail. However, it lacks explicit usage context and does not mention its read-only nature, which would be more complete.

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?

The tool has zero parameters and the schema is empty, so the baseline for parameter semantics is 4. The description adds no parameter-specific meaning because no parameters exist, but it does clarify the tool's output focus, which is sufficient in this context.

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

Purpose4/5

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

The description clearly identifies the tool as providing 'Memory system stats' and enumerates specific data points (total memories, priorities, projects, milestones). It distinguishes from sibling tools like sassy_memory_log or sassy_memory_recall by focusing on statistics rather than operations, though it lacks an explicit verb like 'get' or 'show'.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention exclusions, alternatives, or contexts where this tool is preferred, leaving the agent to infer usage from the name and description alone.

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

sassy_minify_testA

Test the GitHub response minifier on sample JSON.

Paste a GitHub API response and see how much it shrinks. Shows before/after token estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
sample_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It does state that the tool shows before/after token estimates, which is a key behavioral detail. However, it doesn't explicitly mention that the tool is non-destructive, has no side effects, or any limitations (e.g., payload size). This is a moderate gap given there are no annotations to fall back on.

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 very brief, using three short sentences to convey purpose, usage, and output. It is front-loaded with the main purpose and every sentence adds necessary information without redundancy. This is an exemplary concise description.

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's low complexity (one parameter, no nested objects) and the presence of an output schema, the description is complete. It explains what input to provide and what output to expect (before/after token estimates). Since the output schema exists, the description doesn't need to detail return values. This is a complete description for a simple test utility.

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?

The schema only defines sample_json as a string with no description, so the description adds meaningful semantics. It tells the user that the parameter should contain a GitHub API response in JSON format, which goes beyond the bare type information. While it doesn't specify exact formatting (e.g., raw JSON string), it provides enough context for correct usage.

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+resource: 'Test the GitHub response minifier on sample JSON.' This clearly states the tool's purpose and distinguishes it from siblings, none of which are minify-related. The additional context about pasting a GitHub API response and seeing shrinkage reinforces the exact scope.

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

Usage Guidelines4/5

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

The description provides clear usage context: use this tool when you have a GitHub API response to test how much the minifier shrinks it. It does not name alternatives or exclusions, but given the tool's unique purpose among siblings, this is sufficient. The phrase 'Paste a GitHub API response' implies a straightforward testing workflow.

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

sassy_mkdirA

Create a directory (and any missing parents).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The 'missing parents' behavior is disclosed, but there is no mention of error handling, idempotency, or side effects. With no annotations, the description carries the full burden but remains thin.

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?

A single, grammatically correct sentence that is front-loaded with the verb and object. No wasted words.

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 low-complexity tool with an output schema, the description covers the essential purpose and recursive behavior. It could mention idempotency, but the tool is simple enough that this is sufficient.

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?

The schema has 0% description coverage for the 'path' parameter, and the description does not explain path semantics (absolute/relative, existence behavior). The parameter name 'path' is self-explanatory but the description adds no value beyond the schema.

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 clearly states the tool's action: 'Create a directory' and adds an important scoping detail: 'and any missing parents.' This distinguishes it from sibling file operations like read/write/list.

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

Usage Guidelines4/5

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

The description implies this is for ensuring a directory path exists, which is clear enough. However, it does not explicitly compare to alternatives such as using the shell to run mkdir or mention when not to use it.

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

sassy_moveA

Move or rename a file/directory.

Blocks moves from/to protected paths and refuses to overwrite an existing destination without an explicit sassy_safe_delete first.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
destinationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 of disclosing behavior. It explicitly states that moves from/to protected paths are blocked and overwrites are refused unless a prior sassy_safe_delete is performed. These are critical safety traits for a mutating operation, beyond what the schema alone would convey.

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 extremely concise: two sentences, no fluff, with the main purpose front-loaded and safety constraints immediately following. Every word earns its place.

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 two-parameter move tool, the description covers the core operation and the most important behavioral constraints. An output schema exists, so return values need not be explained. It is reasonably complete, though it omits minor details like error conditions or prerequisite checks beyond protected paths.

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?

Schema description coverage is 0%, so the description must compensate. However, it does not explain the meaning of 'source' or 'destination' beyond their names and the general 'move or rename' concept. It does not add detail about path formats, whether destination can be a directory, or how rename vs. move is determined.

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 clearly states 'Move or rename a file/directory,' which is a specific verb and resource. This distinguishes it from other sibling tools like sassy_copy, sassy_read_file, or sassy_write_file.

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

Usage Guidelines4/5

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

The description makes it clear that this tool is for moving or renaming, and it provides important usage constraints (blocks protected paths, refuses overwrite without explicit safe delete). It does not explicitly name alternatives, but the context is clear enough for an agent to infer when to use it.

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

sassy_observability_healthB

Simple health check for monitoring tools and load balancers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must carry all behavioral context, but it only says 'simple health check' without disclosing what it returns, whether it makes network calls, or what failure modes exist. This is minimal transparency.

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 a single concise sentence with no filler or redundancy. It is appropriately sized for a zero-parameter tool.

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?

For a zero-parameter tool with no output schema, the description is minimally sufficient but lacks information about what a 'healthy' result means or what the response structure is. It is adequate but could be more helpful with a brief note on expected output.

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?

The tool has zero parameters, so the baseline is 4. The description adds no parameter details because none are needed, and the schema already confirms the empty parameter set.

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

Purpose4/5

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

The description clearly states the tool performs a health check for monitoring tools and load balancers, giving a specific resource and action. However, it does not explicitly distinguish itself from sibling tools like sassy_self_check or sassy_setup_check_tools, though the target resource is narrower.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of scenarios, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name and siblings.

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

sassy_observability_metricsB

Return real-time server metrics and performance data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool 'returns' data, implying a read operation, but it does not disclose any potential side effects, authentication requirements, or what 'real-time' means. This is minimal transparency, falling short of the expectations for an unannotated tool.

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 a single, clear sentence with no redundancy or filler. It is appropriately sized for a tool with no parameters, earning a 5.

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

Completeness2/5

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

Despite its simplicity, the description is vague about what metrics are included, the return format, and any configuration dependencies. Since there is no output schema, the description should ideally provide more details about the return value, but it only offers a high-level phrase. This leaves it incomplete for practical use.

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?

The tool has zero parameters, so the input schema is empty and there is nothing to explain. Per the rubric, zero parameters warrant a baseline of 4, and the description adds no parameter details because none are needed.

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

Purpose4/5

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

The description uses a specific verb 'Return' and a clear resource ('real-time server metrics and performance data'), which conveys the tool's function accurately. However, it does not explicitly distinguish from sibling observability tools like sassy_observability_health or sassy_observability_tool_stats, so it earns a 4 rather than a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus the many sibling tools, nor does it mention any exclusions or alternatives. There is no context about typical use cases or prerequisites, so it earns a 2.

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

sassy_observability_tool_statsC

Full usage tracker stats + pruning suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It implies the tool produces stats and pruning recommendations, but doesn't state whether it is read-only, what data it accesses, whether it mutates anything, or what the response format looks like. The pruning suggestion hints at decision-support behavior but remains vague.

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 extremely brief and front-loaded, with no unnecessary words. However, the terseness borders on cryptic, sacrificing informational richness for brevity. Still, every word earns its place.

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

Completeness2/5

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

The description is not complete for a tool with no output schema and no annotations. It fails to explain what 'usage tracker' encompasses, what 'pruning suggestions' are based on, or what the caller should expect in return. Sibling tool names provide some context but not enough to make the description self-sufficient.

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?

The tool has zero parameters, so the description does not need to explain parameter meanings. The input schema is empty, and the description doesn't attempt to add parameter-related details, which is appropriate.

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

Purpose3/5

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

The description names the resource ('usage tracker stats') and adds 'pruning suggestions' as an output, but it lacks a clear verb and largely restates the tool name. It doesn't explicitly differentiate from sibling tools like sassy_observability_metrics or sassy_tool_usage, though the pruning hint adds some distinctive meaning.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives such as sassy_observability_metrics, sassy_observability_health, or sassy_tool_usage. No context, prerequisites, or exclusions are provided.

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

sassy_panelA

Control the SassyMCP Control Panel — the loopback web UI for the permission engine, settings, event log, and classifiers.

action: status (default) — running state + URL (with token) if up start — launch the panel and enable it at future startups stop — shut the panel down and disable auto-start url — print the tokenized URL (does not start it)

The panel binds 127.0.0.1 only and requires the per-install token (stored owner-only in ~/.sassymcp/control_panel.token). Open the printed URL in a browser on this machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNostatus

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses important behavioral traits: the panel binds to 127.0.0.1 only, requires a token stored owner-only in a specific path, start enables auto-start, stop disables it, and url does not start the panel. It also notes the panel returns a URL with token, covering side effects and security requirements comprehensively.

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 well-structured and front-loaded: it starts with a clear one-sentence purpose, then a compact action list, followed by security/usage notes. Every sentence adds value, and the formatting aids quick scanning without unnecessary verbosity.

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?

The tool is simple with one parameter, and the description covers all actions, the default, security constraints, and token requirements. An output schema exists, so return format details are not needed. Minor gaps remain (e.g., behavior when start/stop is called on an already-running/stopped panel), but overall it is contextually complete for the tool's low complexity.

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

Parameters5/5

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

The schema provides only a parameter name 'action' with a default, but no descriptions or enums (0% coverage). The description compensates fully by enumerating all valid action values (status, start, stop, url) and explaining their exact behavior, making the parameter self-documenting.

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 clearly states the tool controls the SassyMCP Control Panel, a loopback web UI for the permission engine, settings, event log, and classifiers. It uses a specific verb ('Control') and resource, and the action list further differentiates it from sibling tools that handle other aspects like setup, configuration, and observability.

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

Usage Guidelines4/5

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

The description provides clear usage context by explaining the four actions (status, start, stop, url) and their effects, including prerequisites like the per-install token and local-only binding. It lacks explicit 'when not to use' or alternative tool references, but given the tool's unique purpose, the context is sufficient for an agent to decide when to invoke it.

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

sassy_permissionA

View and control the permission engine (sassymcp.policy).

Single front door for the four-mode safety system that gates the shell and file tools. The future Control Panel UI writes the same config keys this tool does.

action: status (default) show effective mode, how it was derived, the sandbox roots, and the active allow/ask/deny rules. set_mode set permission.mode. mode= one of: strict — block destructive patterns everywhere confirm — destructive patterns need a confirm token sandbox — relaxed gating INSIDE the sandbox roots; anything resolving outside is refused bypass — allow all except protected paths "" — clear the override; derive from the legacy interceptor.destructiveAction setting add_root add path= to permission.sandboxRoots (the jail) remove_root remove path= from permission.sandboxRoots add_rule append rule= (JSON: {"action","tool","path","command"}) to permission.rules; first match wins, evaluated before the mode default clear_rules remove all rules

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
pathNo
ruleNo
actionNostatus

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It details each action (status, set_mode, add_root, remove_root, add_rule, clear_rules), explains how modes work (strict, confirm, sandbox, bypass, and clearing override), and describes rule evaluation semantics ('first match wins'). It also mentions how the mode is derived and what status displays, offering comprehensive insight into the tool's behavior.

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 well-structured, starting with a concise purpose statement and then breaking down actions in a list. While it is lengthy due to the number of actions and parameters, each section contributes essential information and is logically organized, making it easy to scan. Slight trimming could improve conciseness, but no irrelevant content exists.

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's complexity (multiple actions, four modes, rule system, and no schema descriptions or annotations), the description covers all necessary aspects: what each action does, parameter usage, mode semantics, and rule priority. An output schema exists, so omitting exact return formats is acceptable. The description is sufficiently complete for an agent to correctly select and invoke the tool.

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

Parameters5/5

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

The input schema has zero description coverage, so the description fully compensates by explaining each parameter in the context of each action. For example, it defines 'mode' with specific valid values, 'path' for adding/removing sandbox roots, and 'rule' as JSON with structure. Even the 'action' parameter is described with its default. This adds substantial meaning beyond the bare schema.

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 clearly states the tool's function: 'View and control the permission engine' and identifies it as the 'single front door for the four-mode safety system that gates the shell and file tools.' This specific verb-resource pairing and scope distinguishes it from sibling tools that handle shell, files, and other operations.

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

Usage Guidelines4/5

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

The description establishes clear context for use: it is the central interface for configuring the four-mode safety system, and it notes that the future Control Panel UI writes the same config keys. It implicitly indicates when to use this tool (for permission viewing/management) but does not explicitly state when not to use it or mention alternative tools for similar purposes, leaving room for a bit more specificity.

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

sassy_persona_capabilitiesA

Get the SassyMCP capabilities guide. How to use dynamic vision, phone interaction, pause/resume, sensitive context detection, and setup wizard. This is the instruction manual for SassyMCP's advanced features.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly indicates this is a read operation ('Get the guide') and discloses what the guide contains. It doesn't describe output format or potential side effects, but for a simple informational tool, the description is honest and sufficient.

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 three sentences, front-loaded with the main action. The first sentence states the purpose, the second lists contents, and the third reinforces the nature. Each sentence adds value without unnecessary redundancy. Well-structured and appropriately sized.

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's simplicity (no parameters, no nested objects) and the presence of an output schema, the description fully covers what the agent needs to know: what the tool does and what it returns. No further context is required.

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?

The tool has zero parameters, so the baseline is 4 per guidelines. The description correctly implies no inputs are needed by describing the tool as a direct retrieval of a guide. No parameter explanation required beyond what the schema already shows.

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 clearly states the tool's purpose: 'Get the SassyMCP capabilities guide.' It identifies the specific resource (capabilities guide) and distinguishes it from sibling persona tools (style, decisions, practices) by focusing on the instruction manual for advanced features.

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

Usage Guidelines4/5

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

The description implies usage context by stating 'This is the instruction manual for SassyMCP's advanced features' and listing the covered topics (dynamic vision, phone interaction, etc.). It does not explicitly name alternatives or exclusions, but the purpose is unique enough among siblings. Clear context without explicit when-not-to-use.

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

sassy_persona_contextA

Get current user context from ~/.sassymcp/persona.md. Returns user's role, systems, projects, and preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It clearly indicates the tool reads from a specific file and returns user context fields, implying a read-only operation. However, it does not mention error cases (e.g., missing file) or explicitly confirm no side effects.

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 compact and front-loaded, using two short sentences to convey source and output. Every word earns its place with no unnecessary detail.

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 simple, no-parameter read tool with an output schema, the description sufficiently covers the source file and returned fields. It falls slightly short of complete by not describing behavior when the persona file is absent or unreadable.

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?

The tool has zero parameters, so the baseline is 4. The description does not need to add parameter semantics, and the empty schema leaves no ambiguity.

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 uses a specific verb ('Get') plus a specific resource path (~/.sassymcp/persona.md) and lists the return contents (role, systems, projects, preferences). This makes the tool's function immediately clear and distinguishes it from sibling persona_* tools that focus on specific facets.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as sassy_persona_full or sassy_persona_style. It only states what the tool does, not when it is the appropriate choice.

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

sassy_persona_decisionsA

Get the decision framework. Defines when to execute immediately vs state approach vs confirm vs hard-stop.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Get' clearly indicates a read-only, non-mutating operation, and the description discloses what the tool returns (the decision framework). It does not mention side effects or prerequisites, but for a simple informational getter this is adequate.

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 long, front-loaded with the core action 'Get the decision framework', and then expands with the specific decision categories. Every word earns its place, with no fluff or repetition.

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 zero-parameter tool with an output schema, the description is complete enough: it states what the tool does and what content it returns. It could optionally mention how this fits into the broader persona toolset, but that is not necessary for a simple informational getter.

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?

The tool has zero parameters, so the description does not need to add parameter-level detail. The baseline of 4 is appropriate because there is nothing to explain; the description correctly focuses on the tool's purpose without needing to touch on inputs.

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 uses a specific verb 'Get' with a clear resource 'decision framework' and immediately explains what it contains: when to execute immediately vs state approach vs confirm vs hard-stop. This distinguishes it from sibling persona tools like sassy_persona_style and sassy_persona_practices, which serve different purposes.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: whenever an agent needs to know the decision rules for whether to execute, state approach, confirm, or hard-stop. It does not explicitly mention alternatives or exclusions, but the context is sufficiently clear for an agent to select this tool over its siblings.

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

sassy_persona_fullA

Load the complete operating bundle: style + decisions + practices + observability + capabilities + user context. Call this on first connection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses what is loaded (style, decisions, practices, observability, capabilities, user context) and the intended timing, but does not mention idempotency, side effects, or whether repeated calls reset state.

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 concise sentences: one states the action and contents, the other gives the usage instruction. Every word contributes, and the structure front-loads the purpose.

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 zero-parameter tool with an output schema, the description fully covers what the tool does, what it includes, and when to call it. The presence of an output schema means return-value details are not required in the description.

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?

The tool has zero parameters, so the baseline is 4. There is no parameter information to add, and the schema confirms no required arguments.

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 uses a specific verb ('Load') and explicitly names the resource: 'complete operating bundle' followed by an enumerated list of components. This clearly distinguishes the aggregate tool from the individual sassy_persona_* siblings.

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

Usage Guidelines4/5

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

It gives an explicit usage trigger: 'Call this on first connection.' It does not explicitly name alternatives or exclusions, but the 'complete bundle' phrasing implies it should be used instead of loading each persona component separately, providing clear contextual guidance.

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

sassy_persona_observabilityA

Get the cross-system observability guide. What introspection tools are available, what they return, and the recommended first-call sequence.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosure. It states that the tool returns a guide (a read-oriented behavior), and notes that the guide includes information about tool outputs and a recommended sequence. However, it does not explicitly state that it has no side effects, does not execute the described tools, or how the guide is generated. This is adequate but not deeply transparent.

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 extremely concise: two sentences, with the primary action front-loaded. The first sentence establishes the tool's purpose, and the second adds essential detail about content and sequence. Every word earns its place with no wasted repetition.

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 zero-parameter tool with an output schema, the description is complete. It explains what the tool returns (a guide), the type of information included (introspection tools, their return values, recommended sequence), and the context of cross-system observability. The output schema presumably defines the guide structure, so the description does not need to list every field. No gaps are evident.

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?

The tool has zero parameters, so per the rubric the baseline is 4. There is no parameter information to add beyond the schema, and the schema correctly has no properties. The description does not need to explain parameters because there are none.

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 clearly states a specific action ('Get') and resource ('cross-system observability guide'), and further defines its scope: listing available introspection tools, what they return, and the recommended first-call sequence. This distinguishes it from sibling observability tools like sassy_observability_metrics or sassy_observability_health, which likely provide actual metrics or health status rather than a guide.

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 for obtaining an orientation guide to observability tools and a recommended sequence, but it does not explicitly state when to use this tool versus alternative observability tools, nor does it mention any exclusions. The 'recommended first-call sequence' hints at a best practice but does not explicitly say to invoke this guide first.

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

sassy_persona_practicesA

Get engineering standards. Security defaults, code quality rules, architecture patterns, platform-specific guidelines, MCP tool patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' clearly indicates a read-only operation with no side effects, and the list of content types gives a sense of scope. However, it does not disclose details like output format, whether the data is static or dynamic, or any performance characteristics. For a simple retrieval tool, this is adequate but minimal.

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 a single sentence that front-loads the action and resource, followed by a compact, comma-separated list of content categories. Every word earns its place; no filler or redundant information is present.

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 zero-parameter read-only tool with an output schema, the description covers the essential purpose and content scope. It does not explain the output structure, but the output schema presumably handles that. It could mention how this relates to other persona tools, but for a simple standards getter, it is reasonably complete.

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?

The tool has zero parameters, so the baseline is 4. The description adds value by enumerating the categories of standards returned, which is helpful given the empty input schema. No further parameter semantics are needed.

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

Purpose4/5

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

The description uses a specific verb 'Get' with a clear resource 'engineering standards' and enumerates the content areas (security defaults, code quality rules, architecture patterns, etc.). This distinguishes it from sibling persona tools focused on style, decisions, or context. However, it does not explicitly name sibling tools or contrast itself against them, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It only states what it returns and does not mention when not to use it or when a sibling tool like sassy_persona_style or sassy_persona_full would be more appropriate. The context is implied but not specified.

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

sassy_persona_styleB

Get expert-mode operating parameters. Directives for execution priority, communication style, autonomy level, and precision standards.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations present, the description carries the full burden for behavioral disclosure. It implies a read-only 'get' operation but does not explicitly state that there are no side effects, nor does it describe the nature of the returned directives or how they should be applied. Minimal disclosure.

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-loaded with the primary action, and wastes no words. It efficiently conveys the core function and the categories of the output.

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 is simple (no parameters) and has an output schema, so the description doesn't need to elaborate on return values. However, it does not fully explain the practical purpose or how the operating parameters should influence the agent's behavior, leaving some ambiguity. It is adequate but not richly informative.

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?

The tool has zero parameters, which warrants a baseline of 4. The description does not need to explain parameter syntax since there are none, and it adds context about what the returned information covers.

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

Purpose4/5

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

The description clearly states the tool retrieves 'expert-mode operating parameters' and enumerates the types of parameters (execution priority, communication style, autonomy level, precision standards). This goes beyond a tautology and gives a concrete sense of the resource, but it doesn't explicitly distinguish itself from sibling persona tools.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like sassy_persona_full or sassy_persona_capabilities. The description only defines what it does, not the context for choosing it.

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

sassy_read_fileA

Read file contents with line-based pagination.

offset >= 0 : start from that line (0-based) offset < 0 : read last N lines (tail) length : max lines to return (ignored when offset < 0)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
lengthNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly explains offset/length semantics, including the tail behavior for negative offset and the fact that length is ignored in that case. It does not mention error cases or permissions, but for a simple read operation, the key behaviors are well-disclosed.

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 extremely concise, front-loading the purpose and then using a compact, readable format for parameter semantics. Every line adds value, with no wasted words.

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?

Given the tool's simplicity, output schema presence, and the well-explained parameters, the description is largely complete. It lacks error handling context and does not address when to use this tool vs alternatives, which slightly detracts. However, for a line-paginated file reader, this covers the essential behavior.

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 must compensate. It does this well for offset and length, explaining the 0-based start, tail mode, and the interaction between length and negative offset. 'path' is left undescribed, but its meaning is obvious from the tool name and schema.

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 'Read file contents with line-based pagination,' which is a specific verb+resource. It distinguishes this tool from siblings like sassy_read_multiple and sassy_file_info by highlighting the pagination feature, making the purpose unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided about when to choose this tool over sibling file-reading tools. The parameter semantics are explained, but there is no mention of exclusions or alternatives, leaving the selection decision entirely to the agent.

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

sassy_read_multipleA

Read multiple files at once. paths = JSON array of file paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the action and parameter format, but does not disclose return structure, error behavior, or any constraints like maximum file count or size limits.

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 consists of two short sentences. The purpose is stated first, followed by a concise parameter explanation. Every word is useful; no filler.

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?

For a simple read tool, the description covers the core purpose and parameter format. An output schema exists, so return values are documented elsewhere. However, it misses edge-case behavior like handling of missing files or partial failures, which an agent would benefit from knowing.

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?

The description explains that the 'paths' parameter is a JSON array of file paths, which adds meaning beyond the schema's bare 'type: string' and compensates for the 0% schema description coverage. However, it lacks details on path syntax (absolute vs relative), whether globs are allowed, or examples.

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 clearly states 'Read multiple files at once', which specifies the action (read) and the resource (multiple files). It naturally distinguishes itself from the sibling tool sassy_read_file, which reads a single file.

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

Usage Guidelines4/5

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

The description conveys a clear use case: use this tool when you want to read multiple files in a single operation. However, it does not explicitly mention alternatives or when not to use it (e.g., no direct contrast with sassy_read_file).

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

sassy_recent_tool_callsA

Get recent tool call history from audit log.

max_results: how many to return (1-1000) tool_name: filter to specific tool (optional) since_minutes: only calls within last N minutes (0=all)

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameNo
max_resultsNo
since_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It indicates a read-only operation ('Get') from the audit log and provides parameter constraints, but it does not mention ordering, pagination, access requirements, or potential side effects. The provided context is helpful but incomplete.

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 four lines with a front-loaded purpose sentence followed by parameter definitions. Every sentence adds value, and there is no redundant or filler content.

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?

Given the tool's low complexity, all three parameters are described, and an output schema exists (so return values need not be explained), the description is nearly complete. It lacks explicit usage exclusions or comparisons to sibling audit tools, which would make it fully self-contained.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining all three parameters: max_results (with range 1-1000), tool_name (optional filter), and since_minutes (with 0=all). Each parameter gains meaning beyond the bare schema, making the tool usable without guessing.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'recent tool call history from audit log', establishing a specific purpose. It distinguishes from sibling audit tools by focusing on 'recent tool calls' rather than the general audit log, but it does not explicitly differentiate itself from alternatives.

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 through its purpose statement (get recent tool call history) and parameter hints (filter by tool name, time window), but it does not explicitly state when to prefer this tool over siblings like sassy_audit_log or sassy_audit_search. No exclusions or alternative tool mentions are provided.

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

sassy_safe_deleteA

Move a file or directory to a DELETE staging folder for review.

Instead of permanent deletion, items are moved to a DELETE folder in the same parent directory. This minimises data loss from AI hallucinations or accidental deletions.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the key behavioral trait: items are moved to a _DELETE_ folder in the same parent directory rather than permanently deleted, explaining the safety mechanism. It does not mention permissions, edge cases, or undo behavior, but the core non-destructive behavior is clearly communicated.

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-loaded with the primary action, then adding a concise rationale. Every sentence earns its place, with no unnecessary repetition or filler.

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 simple one-parameter tool, the description sufficiently explains the core purpose, the safety mechanism, and the staging location. It does not address potential edge cases (e.g., existing _DELETE_ folder), but given the existence of an output schema and the tool's simplicity, it is adequately complete.

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?

Schema coverage is 0% for the single 'path' parameter. The description only implies that path can be a file or directory, adding minimal semantic value. It does not explain path format, absoluteness, or any constraints, leaving the agent to infer from the parameter name alone.

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 clearly states the tool's action: moving a file or directory to a _DELETE_ staging folder. This specific verb+resource distinguishes it from siblings like sassy_move or sassy_copy, emphasizing a safe-deletion workflow rather than generic file operations.

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

Usage Guidelines4/5

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

Provides clear context that this is the safe alternative to permanent deletion, positioning it as the go-to for review-before-delete scenarios. However, it does not explicitly name alternative tools or state when not to use it, missing a small opportunity for stronger guidance.

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

sassy_screen_infoA

Get display configuration: all monitors with resolution, position, DPI scaling, and which is primary. Essential for multi-monitor setups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It clearly signals a read-only operation via 'Get' and enumerates the returned data (resolution, position, DPI scaling, primary), which is sufficient behavioral disclosure for a simple info query. It does not discuss permissions or failure cases, but those are less material here.

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, front-loaded with the core purpose and followed by a practical use case. No filler or redundancy; every sentence earns its place.

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 simple zero-parameter read-only info tool with an output schema present, the description is fully adequate: it names all relevant data categories returned and the intended scenario. It leaves no major gaps in what an agent needs to know to invoke it.

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?

The tool has zero parameters, and the baseline for 0 params is 4. The description adds value by specifying what display attributes are returned, compensating for there being no schema semantics to clarify.

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

Purpose4/5

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

The description opens with a specific verb 'Get' and resource 'display configuration', enumerating exact data returned: monitors with resolution, position, DPI scaling, and primary status. It does not explicitly differentiate from sibling tools like sassy_desktop_state, so it falls just short of a 5.

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

Usage Guidelines4/5

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

'Essential for multi-monitor setups' provides an explicit use case, and the read-only nature implies when to choose it over mutating tools. It does not name alternative display-related tools or state exclusions, so not a 5.

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

sassy_screenshotB

Take screenshot. Optional region as x,y,w,h. monitor=-1 for all, 0 for primary, 1+ for others.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
regionNo
monitorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects and behavior. It does explain monitor and region semantics, but fails to say what happens to the screenshot (e.g., saved to the 'path' parameter), whether it captures the entire screen, or what the output format is. This lack of behavioral disclosure is a significant gap.

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?

Two short sentences, no fluff, and the action is front-loaded ('Take screenshot'). However, the parameter explanation is crammed into the second sentence, making it slightly dense. Still, it is concise and earns its place.

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?

For a relatively simple tool with an output schema, the description covers the core action and two of three parameters. The unexplained 'path' parameter and lack of information about default capture behavior leave gaps. It is adequate but not fully complete.

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?

The schema has zero parameter descriptions (0% coverage), so the description must compensate. It adds value by explaining the region format (x,y,w,h) and monitor values (-1 for all, 0 for primary, 1+ for others), but leaves the 'path' parameter entirely undefined. This partial compensation yields a baseline score of 3.

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 clearly states 'Take screenshot', which is a specific verb+resource. It distinguishes this tool from sibling tools like sassy_click or sassy_screen_info, which have different purposes (clicking, screen info).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as sassy_screen_info or sassy_desktop_state. The description only explains parameters, not the context or exclusions for usage.

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

sassy_search_filesB

Search for files by name or content.

search_type: files | content file_pattern: glob filter e.g. '.py', '.js' context_lines: lines of context around content matches

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
patternYes
ignore_caseNo
max_resultsNo
search_typeNofiles
file_patternNo
context_linesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that search_type can be 'files' or 'content', and that context_lines controls context around matches, but it does not mention recursion behavior, output format, case sensitivity default, or whether hidden files are included. Significant behavioral traits are left undisclosed.

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

Conciseness3/5

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

The description is very brief and front-loaded with its purpose, followed by a compact parameter list. However, its brevity borders on under-specification for a tool with seven parameters, and the structure omits key details that would help the agent. It is not wastefully verbose, but it sacrifices necessary information for brevity.

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

Completeness2/5

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

Given the tool's moderate complexity (7 params) and the existence of an output schema, the description does not adequately explain return values, search scope (e.g., recursive), or how to combine parameters effectively. It misses the required path/pattern context and any notes on result limits, leaving the agent without enough information to invoke the tool correctly.

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?

Schema description coverage is 0%, so the description must compensate for all parameter meanings. It only explains three of the seven parameters (search_type, file_pattern, context_lines) and omits the required 'path' and 'pattern' parameters, as well as 'ignore_case' and 'max_results'. The partial coverage leaves crucial syntax and semantics undefined.

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 clearly states 'Search for files by name or content', which uses a specific verb and resource, and distinguishes this search tool from sibling listing/reading tools like sassy_list_dir and sassy_read_file. The addition of the two search modes (files/content) further clarifies its purpose.

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 from the main statement and enumerates relevant parameters (search_type, file_pattern, context_lines), but it does not explicitly state when to prefer this over alternatives like sassy_list_dir, nor does it provide exclusions or prerequisites. The guidance is implied rather than explicit.

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

sassy_self_checkA

Proprioceptive self-check: reconcile the declared module manifest against the live tool registry and surface any module that FAILED to import — the silent drop _load_modules()'s try/except otherwise hides.

Answers "am I whole?" with a real readout instead of phantom limbs. A tool can be legitimately absent for three reasons, all reported separately so none is mistaken for a regression:

  • dormant — in an on-demand group (always_load=False) not yet toggled on or usage-boosted. Absent BY DESIGN; appears after sassy_tool_group_toggle or a usage boost.

  • pruned — low usage score dropped it from the default load (see _tool_loader.get_pruned_tools).

  • unsupported — module import raises on THIS platform, but it was never in the default load, so the failure is non-fatal.

The one real regression is:

  • BROKEN — an expected-loaded module whose import raises, so its tools never register and the loss is silent.

Every BROKEN module is logged at ERROR (server log / audit substrate) so the amputation is loud, not silent. verdict='whole' == every expected module imports cleanly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains that the tool reconciles the manifest, reports four categories, logs BROKEN modules at ERROR, and defines what 'verdict=whole' means. It also reveals the underlying silent-failure mechanism in _load_modules(), adding valuable context beyond what any schema could convey.

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 detailed and well-structured, using bullet points to delineate categories. It front-loads the core purpose and then expands on necessary nuance. While somewhat verbose, each sentence contributes to understanding the tool's behavior and output interpretation. A minor reduction in length could improve conciseness without losing substance.

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 parameters and an output schema exists, the description is complete for an agent to correctly invoke and interpret the tool. It covers the diagnostic purpose, the categories of absent modules, the meaning of the verdict, and the logging behavior. No critical information is missing.

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?

The tool has zero parameters, so the description correctly includes no parameter details. The schema coverage is trivially 100%, and the baseline for parameterless tools is 4. The description adds value by explaining the output categories, which indirectly helps the agent understand what parameters would be irrelevant here.

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 clearly states the tool's purpose: it reconciles the declared module manifest against the live tool registry to surface any module that failed to import. It uses a specific verb ('reconcile... and surface') and resource, and answers 'am I whole?' with a real readout. This uniquely distinguishes it from sibling tools, which focus on other observability or health metrics.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (to detect modules that failed to import) and explains how to interpret the output categories (dormant, pruned, unsupported, BROKEN). It does not explicitly name alternative tools or state when not to use it, but the context is strong enough to guide the agent.

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

sassy_session_listA

List all active terminal sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'List' clearly implies a read-only, non-destructive operation, and the 'active' qualifier tells the agent which sessions are included. However, it omits any statements about side effects (e.g., that no sessions are modified) or potential authentication/context requirements, though for a listing tool these are largely implicit.

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 a single, direct sentence of six words. It front-loads the main action and resource without any superfluous content, achieving maximum conciseness while remaining clear.

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?

Given the tool's simplicity (no params) and the presence of an output schema, the description adequately covers what the tool does. It could be improved by adding a hint about how it relates to sibling session tools (e.g., 'use before sassy_session_read'), but it does not feel incomplete for its scope.

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?

The tool has zero parameters and the input schema is empty, so there is nothing to document. Per the baseline rule for 0 parameters, this scores 4; the description correctly offers no parameter details because none exist.

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 'List all active terminal sessions' uses a specific verb ('list') and a clearly defined resource ('active terminal sessions'). It distinguishes from sibling tools like sassy_session_start, sassy_session_read, and sassy_session_stop, which all involve other session operations.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention that one might list sessions before starting, reading, or stopping them, nor does it contrast with the session-management siblings. The agent must infer usage solely from the tool name.

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

sassy_session_readA

Read new output from a session without sending input.

Returns only text that arrived since the last read.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: it returns only text that arrived since the last read and does not send input. This adds meaningful behavioral context beyond the basic purpose, though it does not mention potential side effects like whether the output is marked as read.

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-loaded with the primary action, and contains no redundant information. Every word earns its place.

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 simple one-parameter read tool with an output schema, the description provides sufficient behavioral context to invoke the tool correctly. The only gap is the unstated meaning of 'name', but given the tool's simplicity and sibling context, it is largely complete.

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?

The description does not explain the 'name' parameter at all, and schema coverage is 0%. Since the schema provides no description either, the parameter's meaning must be inferred from the tool name and sibling tools. The description fails to compensate for the lack of documentation.

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 clearly states the tool's function: 'Read new output from a session without sending input.' It uses a specific verb ('read') and resource ('session output'), and the phrase 'without sending input' distinguishes it from sibling tools like sassy_session_send.

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

Usage Guidelines4/5

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

The description implies usage for reading output only and clarifies it does not send input, providing clear context. It does not explicitly name alternative tools or state exclusions, but the context is sufficient for most use cases.

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

sassy_session_sendA

Send input to a running session.

Like typing in a terminal. Newline is appended automatically. Input is scanned by the delete interceptor — delete keywords are refused here (use sassy_shell or sassy_safe_delete instead, where targets are safely staged to DELETE/).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
input_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/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. It discloses two important behaviors: automatic newline appending and the delete-interceptor scan that rejects delete keywords. It does not mention error behavior or permissions, but for a simple input-sending tool, these two details add significant operational transparency.

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?

Four concise sentences, front-loaded with purpose. Every sentence adds value: purpose, analogy, key behavior, and safety exclusion. No filler or redundancy.

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?

Given an output schema exists, return-value explanation is unnecessary. The description covers purpose, usage, key behavioral quirks, and alternatives. It lacks explicit error scenarios or prerequisites (e.g., session must exist), but the 'running session' phrasing implies that condition. Overall complete for a low-complexity tool with only two parameters.

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 coverage is 0%, so the description must compensate. It clarifies that input_text is like typing in a terminal and that newline is appended automatically. It implies `name` is the target session identifier via 'running session', though it does not name the parameter explicitly. This is decent compensation for two straightforward parameters.

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 'Send input to a running session' — a specific verb and resource that clearly differentiates from sibling tools like sassy_session_start, sassy_session_read, and sassy_session_stop. The analogy 'Like typing in a terminal' further clarifies the interaction model.

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?

Explicitly states when NOT to use: 'delete keywords are refused here' and names concrete alternatives 'use sassy_shell or sassy_safe_delete instead'. This gives the agent both an exclusion and a redirection, exceeding the basic context requirement.

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

sassy_session_startA

Start a persistent terminal session.

name: unique session identifier (e.g. 'build', 'dev-server') shell: Windows -> powershell/cmd/wsl; macOS/Linux -> bash/zsh/sh. Leave empty for the host's native shell. command: optional initial command to run immediately

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
shellNo
commandNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses key behavioral traits: sessions are persistent, shell selection varies by OS, and the command is optional. However, it does not mention side effects such as creating a background process, the need for cleanup, or how the session is identified later. Given no annotations, this is adequate but not rich.

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 concise, front-loaded with the main purpose, and follows a clean parameter list format. Every sentence adds value without redundancy.

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?

The description is complete for starting a session, covering all parameters and the persistent nature. It would benefit from mentioning related session tools (e.g., sassy_session_send) for lifecycle context, but the existing content is sufficient for the tool's direct purpose.

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

Parameters5/5

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

Schema coverage is 0%, so the description fully compensates by explaining each parameter: name's purpose with examples, shell's platform-specific values and default behavior, and command's optional initial instruction. This adds vital meaning beyond the empty schema descriptions.

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 clearly states 'Start a persistent terminal session' with a specific verb and resource. It distinguishes itself from siblings like sassy_session_send, sassy_session_read, and sassy_session_stop by focusing on the start action.

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 when to use the tool (when starting a persistent terminal session) but does not explicitly reference alternatives or mention when not to use it. The shell parameter guidance provides some usage context but not tool-selection guidance.

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

sassy_session_stopC

Stop and clean up a terminal session.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It mentions 'clean up' which hints at side effects beyond stopping, but does not disclose what cleanup entails, whether the action is reversible, or what happens to running processes. This is a significant gap for a destructive operation.

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 a single concise sentence that is front-loaded with the action. It contains no filler or redundant phrases, earning high marks for efficiency, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

For a tool with no annotations and minimal description, the context is incomplete. The agent lacks information about the session ownership, cleanup side effects, or how to recover if the wrong session is stopped. The presence of an output schema does not mitigate the need for behavioral context in a state-changing 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?

The input schema has one required parameter 'name' with 0% schema description coverage. The description does not explain what 'name' refers to, how to find valid session names, or any format constraints. While the purpose implies it is the session identifier, the description fails to compensate for the missing schema documentation.

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

Purpose4/5

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

The description uses a specific verb ('Stop') and resource ('terminal session'), clearly indicating the action. While it does not explicitly distinguish from sibling 'sassy_session_stop_all', the tool name and singular phrasing imply it stops one session, which is a reasonable differentiator.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'sassy_session_stop_all' or 'sassy_session_list'. There is no mention of prerequisites (e.g., an active session) or exclusions, leaving the agent to infer usage from the name alone.

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

sassy_session_stop_allA

Stop all active terminal sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the action but does not disclose side effects, irreversibility, or the need for confirmation. Stopping all terminal sessions is a destructive action, yet the description offers no warning or behavioral context beyond the simple statement.

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?

A single, clear, front-loaded sentence. Every word earns its place with no ambiguity or excess.

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?

Although the tool is simple with zero parameters and an output schema exists, the description is adequate for understanding the basic operation. However, given the destructive scope ('all active sessions'), a note about irreversibility or confirmation would improve completeness, so it is not a perfect 5.

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?

The tool has zero parameters and the empty schema provides 100% coverage. Per the baseline for zero-parameter tools, a score of 4 is appropriate. The description adds no parameter details because none exist.

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 clearly states the action ('Stop') and the object ('all active terminal sessions'), distinguishing it from sibling tools like sassy_session_stop which likely stops a single session. This is a specific verb+resource pair.

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?

No explicit guidance on when to use this versus sassy_session_stop or sassy_session_list is provided. The 'all' in the name and description implies bulk usage, but no when/when-not or alternatives are mentioned.

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

sassy_set_configB

Set a runtime config value.

Supported keys: defaultShell, fileReadLineLimit, fileWriteLineLimit, allowedDirectories, blockedCommands. value: JSON-encoded value (e.g. '"powershell"', '1000', '[]')

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It states the action and value format but does not mention side effects, persistence, scope, error behavior, or whether changes apply immediately. For a runtime config setter, this is a notable gap.

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 concise and well-structured: a clear one-line purpose, followed by a list of supported keys and a value format explanation. Every sentence adds useful information, and it is appropriately front-loaded.

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?

Given the tool's simple parameter set and presence of an output schema, the description is adequate but incomplete for a mutation tool. It lacks details about persistence, scope, or consequences of changing config values, which are important for an agent to use it safely and effectively.

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 must compensate. It does so by listing the supported keys and explaining that the value must be JSON-encoded with concrete examples. This gives meaning beyond the bare parameter names, though it could be more explicit about allowed value types per key.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Set a runtime config value.' It identifies the resource (runtime config) and provides a list of supported keys. However, it does not explicitly differentiate from sibling tools like sassy_get_config or sassy_env_set, so it stops short of a perfect score.

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 supported keys list gives an implied sense of when to use the tool (e.g., to change defaultShell or file limits), but there is no explicit guidance on when to use this versus alternatives like sassy_env_set or sassy_state_set. No when-not or alternative tools are mentioned, so usage context is only implied.

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

sassy_setup_check_toolsA

Scan for external tools and report availability. Tesseract is required.

Checks: nmap, Tesseract OCR (REQUIRED), adb, scrcpy, plink (PuTTY), Chrome/Chromium. Also checks Python packages: pytesseract, playwright. Use sassy_setup_tools for winget-based auto-install.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description must carry the transparency burden. It discloses the tool's read-only nature implicitly by saying 'report availability' and by contrasting with auto-install. It also reveals the Tesseract dependency. It doesn't explicitly say it makes no system changes, but the contrast with sassy_setup_tools strongly implies it. The list of checked items adds behavioral detail.

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 brief and well-structured. The first sentence states the core action, the second paragraph enumerates the checks, and the final sentence provides the alternative. Every sentence earns its place with no fluff or repetition.

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 tool with no inputs and an output schema (which likely explains the return format), the description is sufficient. It covers the purpose, the specific items checked, the required dependency, and the alternative tool. It doesn't mention side effects, but given it's a check tool and the output schema exists, this is acceptable. A small gap is the absence of any note about whether the scan requires network access, but that's minor.

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?

The tool has zero parameters, so the input schema is trivially 100% covered. The baseline for zero parameters is 4, and the description doesn't need to add parameter details. It adds context about what is checked, but that is scope, not parameter semantics. No deduction needed.

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 clear verb+resource statement: 'Scan for external tools and report availability.' It lists specific tools and packages, which unambiguously defines its scope. It also distinguishes itself from sibling sassy_setup_tools by explicitly directing auto-install elsewhere.

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

Usage Guidelines4/5

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

The description gives a direct alternative: 'Use sassy_setup_tools for winget-based auto-install.' This clarifies that the current tool is for checking, not installing. It also states the prerequisite 'Tesseract is required,' which tells the agent when this check is needed. However, it doesn't explicitly say when NOT to use it (e.g., if you need a full setup), but the alternative reference covers that.

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

sassy_setup_generate_tokenA

Generate a new auth token for MCP client authentication.

Creates a secure token and saves it to ~/.sassymcp/tokens.json. Use this token in SASSYMCP_AUTH_TOKEN env var or in client config.

client_id: identifier for the client (e.g. "claude-desktop", "grok", "cursor") scopes: comma-separated permissions (read, write, admin)

ParametersJSON Schema
NameRequiredDescriptionDefault
scopesNoread,write
client_idNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the tool creates a secure token and saves it to ~/.sassymcp/tokens.json, which is a concrete side effect. It stops short of explaining whether existing tokens are overwritten or if any prerequisites apply, leaving some behavioral ambiguity, but it is more transparent than many tools.

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 compact and front-loaded with the primary purpose, followed by behavior, usage, and parameter explanations. Every sentence contributes meaningful information without redundancy, making it well-structured and concise.

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 simple token generation tool, the description covers the essential aspects: purpose, parameters, file persistence, and usage instructions. It omits details about return values, but an output schema exists, so that's not a gap. A minor omission is the lack of discussion about overwriting or idempotency, but overall it provides sufficient context.

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

Parameters5/5

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

The input schema has no descriptions for either parameter, but the description compensates by clearly explaining both: client_id as an identifier with examples and scopes as comma-separated permissions with valid values. This full compensation for 0% schema coverage merits the highest score.

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 'Generate a new auth token for MCP client authentication,' which uses a specific verb and identifies a unique resource. This clearly distinguishes it from sibling tools like sassy_setup_wizard or sassy_setup_status, which are about setup checks rather than token generation.

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

Usage Guidelines4/5

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

The description explains the intended use of the generated token ('Use this token in SASSYMCP_AUTH_TOKEN env var or in client config'), giving clear context for when this tool would be relevant. It doesn't explicitly discuss when not to use it or name alternatives, but since no sibling tool generates tokens, the usage context is sufficiently clear.

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

sassy_setup_githubB

Guide GitHub token setup. Opens browser, validates, saves.

action: check | open_browser | save_token | skip token: the GitHub PAT to save (only for save_token action)

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo
actionNocheck

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It states it opens a browser, validates, and saves, which are key behaviors, and the action list indicates multiple modes. However, it omits prerequisites, persistence details, and what happens on validation failure.

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?

Three short lines, front-loaded with the main purpose, and the parameter lines are tight. No filler.

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 multiple actions, no annotations, and a sparse schema, so the description is the primary source of context. It names the actions and token condition but leaves details of each action and the workflow implicit. Adequate for basic invocation but not complete guidance.

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 provides no descriptions (0% coverage), but the description enumerates the action values and clarifies that token is only used for save_token. This compensates well for the schema gap, though it doesn't elaborate on each action's effect.

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

Purpose4/5

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

The description uses specific verbs ('Guide', 'Opens browser, validates, saves') and clearly identifies the resource (GitHub token). It does not explicitly distinguish from sibling tools like sassy_setup_generate_token, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

No explicit when-to-use or alternatives are given. The action list implies a multi-step workflow, but there is no guidance on when to choose this tool over sibling setup tools.

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

sassy_setup_licenseA

Manage your SassyMCP supporter license against LemonSqueezy.

All tool groups are unlocked for everyone — no key required. A license is an optional supporter purchase; activating one records your tier label (shown in the banner, control panel, cockpit).

action: status | activate | deactivate | validate key: LemonSqueezy license key (format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), required for activate.

activate: calls LS to register this machine as an instance, then mints a local HMAC payload so offline use works. validate: forces an immediate LS re-check (normally weekly). deactivate: calls LS to free this machine's seat and removes the local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
actionNostatus

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It discloses side effects: activate registers the machine with LS and mints a local HMAC payload, validate forces an immediate re-check (normally weekly), and deactivate frees the seat and removes the local file. It also explains that offline use works via the local payload. Some details like failure modes or error handling are omitted, but the major behavioral traits are covered.

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 well-organized with a front-loaded purpose, a short contextual note, and a bulleted breakdown of actions. It is slightly verbose but every sentence adds value; no filler or repetition. The structure makes it easy for an agent to parse.

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 that an output schema exists (so return values need not be described), the description covers all necessary context: the tool's purpose, the optional nature of the license, each action's behavior, the key format, and offline-use implications. It is complete for an agent to decide when and how to invoke the tool.

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

Parameters5/5

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

The schema provides zero parameter descriptions (0% coverage), so the description must fully compensate. It does so by explaining the 'action' values (status, activate, deactivate, validate) and the 'key' format (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), plus the conditional requirement for activate. This is significantly more informative than the bare schema.

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 clear verb+resource: 'Manage your SassyMCP supporter license against LemonSqueezy.' It further specifies four distinct actions (status, activate, deactivate, validate), making the tool's scope unambiguous and distinguishing it from sibling tools like sassy_setup_status or sassy_setup_wizard.

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

Usage Guidelines4/5

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

The description states that all tool groups are unlocked without a key, so the license is optional, and then gives action-specific guidance (e.g., 'key required for activate', 'validate forces an immediate LS re-check', 'deactivate calls LS to free this machine's seat'). It does not explicitly name alternatives or exclusions, but the actions are clear enough for an agent to choose appropriately.

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

sassy_setup_sshA

Guide SSH/Linux remote setup. Checks plink, saves creds, tests connection.

action: check | save | test | skip host: SSH hostname or IP (for save action) user: SSH username (for save action) password: SSH password (optional; fed via stdin at test time, not on the argv list) key: path to a .ppk private key (preferred over password) session: saved PuTTY session name (carries host+user+key)

Authentication priority at test time: session > key > Pageant > password-via-stdin. Pass at least ONE auth source on save, otherwise the call returns status=incomplete (no false 'saved' on empty creds).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
hostNo
userNo
actionNocheck
sessionNo
passwordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Since no annotations are provided, the description discloses key behavioral traits: password is fed via stdin rather than argv, authentication priority at test time, and that save returns status=incomplete on empty credentials. It does not detail where credentials are stored, but covers the most critical side effects and constraints.

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 compact and well-organized, starting with a summary, then a bulleted parameter list, and ending with authentication priority and an edge-case guarantee. Every sentence adds value without unnecessary fluff.

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's complexity (6 parameters, multiple actions, no annotations) and that an output schema exists, the description fully covers the usage context, parameter semantics, security-relevant behavior, and error semantics. It leaves little ambiguity for an agent.

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

Parameters5/5

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

The input schema provides zero description coverage, but the description compensates fully by explaining each parameter: action values (check|save|test|skip), host/user for save, password via stdin, key as preferred over password, and session carrying host+user+key. It also notes the 'save' action requirement for at least one auth source.

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 clearly states the tool's purpose: 'Guide SSH/Linux remote setup. Checks plink, saves creds, tests connection.' It enumerates the specific actions and parameters, and does not overlap with sibling setup tools like sassy_setup_check_tools or sassy_setup_wizard.

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

Usage Guidelines4/5

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

The description provides clear usage context: it lists the valid actions and explains authentication priority ('session > key > Pageant > password-via-stdin') and the requirement to pass at least one auth source on save. It does not explicitly name alternative tools, but the context is sufficient for an agent to decide when to use this tool.

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

sassy_setup_statusA

Check setup status: is persona configured? Auth tokens? Config state?

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It implies a read-only check via 'Check' and lists what is inspected, but does not explicitly state side effects, required permissions, or that it modifies nothing. This is adequate but not rich.

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 a single, front-loaded sentence that uses a colon and three terse questions to efficiently convey scope. Every word contributes, with no filler or redundancy.

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?

With an output schema present and no parameters, the description is mostly sufficient. It covers the tool's focus areas, though it does not explicitly address edge cases like partially completed setup or what the output includes, but the schema compensates.

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?

The tool has zero parameters, so the schema provides complete coverage. The description adds no parameter detail because none exist. The baseline for 0 parameters is 4, and the description does not detract from it.

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 clearly states the tool's purpose: 'Check setup status' and enumerates specific checks (persona, auth tokens, config state). This distinguishes it from siblings like sassy_setup_wizard or sassy_setup_github, which perform actions rather than report status.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. While the purpose is implied, there are many setup-related sibling tools (e.g., sassy_setup_check_tools, sassy_setup_license) without any differentiation or exclusions, leaving the agent to infer usage context.

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

sassy_setup_toolsA

Manage external tool dependencies (tesseract, adb, nmap, plink, scrcpy, cloudflared).

action: check | install | install_required | add_to_path tool_name: which tool to install (only for action=install)

check -- report all tools: found, path, required flag install -- winget-install a specific tool by name install_required -- winget-install any missing required tools (always: tesseract) add_to_path -- re-run PATH bootstrap (after placing tools in tools/ dir)

tesseract is always required -- OCR/vision tools need it unconditionally. adb + scrcpy are needed for Android tools. plink for SSH/Linux tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNocheck
tool_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that install uses 'winget-install' and that add_to_path 're-run PATH bootstrap', which gives insight into the tool's side effects. However, it does not mention potential system modifications, administrative requirements, or failure modes, leaving some behavioral ambiguity.

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 longer than the ideal but structured with line breaks and a clear layout. Every line adds value: the first line states the purpose, the second block defines parameters, and the final block gives dependency context. No filler or redundancy.

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 tool with only two parameters and an output schema present, the description covers all essential aspects: actions, parameter constraints, tool list, and dependency rationale. It could be more complete by addressing error scenarios or post-install verification, but it is adequate for the tool's complexity.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It fully explains the 'action' parameter by listing and defining all four valid values, and clarifies that 'tool_name' is only used for action=install while also listing the valid tool names. This adds rich meaning beyond the bare schema.

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 starts with a specific verb-object phrase 'Manage external tool dependencies' and enumerates the exact tools (tesseract, adb, nmap, plink, scrcpy, cloudflared). It lists four distinct actions with clear semantics, making the tool's purpose unmistakable, even in the presence of similar sibling tools like sassy_setup_check_tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use each action (check, install, install_required, add_to_path) and explains dependency relationships (e.g., 'tesseract is always required', 'adb + scrcpy are needed for Android tools'). It does not explicitly name alternative tools or state when not to use this tool, but the action-level guidance is strong.

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

sassy_setup_wizardA

First-run setup wizard. Generates ~/.sassymcp/persona.md from your answers.

Call with your profile to personalize SassyMCP. All fields optional.

role: developer | sysadmin | security | devops | data | designer | manager | other expertise_level: junior | mid | senior | principal | staff specializations: Comma-separated areas (e.g. "web security, cloud infra, mobile") languages: Comma-separated (e.g. "Python, Rust, TypeScript, Go") frameworks: Comma-separated (e.g. "React, FastAPI, Cloudflare Workers") systems: Newline-separated "hostname — OS — role" entries projects: Newline-separated "name — status — description" entries communication_style: terse | balanced | verbose security_posture: standard | hardened | paranoid mcp_clients: Which AI tools connect (e.g. "Claude Desktop, Cursor, Grok Desktop") has_android: True if the user has an Android phone to control (installs adb + scrcpy) has_linux: True if the user works with a Linux server or WSL (installs plink) notes: Anything else the AI should know about how you work

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNodeveloper
notesNo
systemsNo
projectsNo
has_linuxNo
languagesNo
frameworksNo
has_androidNo
mcp_clientsNo
expertise_levelNosenior
specializationsNo
security_postureNostandard
communication_styleNoterse

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses key side effects: writes to ~/.sassymcp/persona.md, installs adb + scrcpy when has_android is true, and installs plink when has_linux is true. It does not mention overwrite behavior or permission requirements, but the disclosed side effects are substantial.

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 front-loaded with the core purpose, followed by a one-line usage instruction and a compact parameter list. Every line adds necessary detail; there is no filler or repetition of schema titles.

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 complex 13-parameter setup tool with no annotations, the description covers purpose, usage, parameter semantics, and side effects. An output schema exists, so return-value details are not necessary, and none of the parameters are left unexplained.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates excellently. It enumerates allowed values for role, expertise_level, communication_style, and security_posture; specifies comma-separated formats; defines the newline-separated structure for systems and projects; and explains the boolean flags' install side effects.

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 clearly states the tool is a 'First-run setup wizard' that 'Generates ~/.sassymcp/persona.md from your answers.' This gives a specific verb, resource, and output, and distinguishes it from sibling setup-related tools by naming the exact file it produces.

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

Usage Guidelines4/5

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

It provides clear context: 'Call with your profile to personalize SassyMCP. All fields optional.' This tells the agent when to use the tool. It does not explicitly list when not to use it or name alternatives, but the first-run framing and optional-field guidance are sufficient.

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

sassy_shellA

Execute a shell command in the host's native shell.

shell: Windows -> powershell (default), cmd, wsl. macOS/Linux -> zsh/bash (default is the login shell), sh. Leave empty to use the host default. Automatically normalizes syntax (e.g. && to ; for PowerShell); POSIX shells run the command verbatim.

timeout_seconds > 120: auto-promoted to a background session and returns a JSON handle ({"auto_detached": true, "session_name": ...}). Poll with sassy_session_read; stop with sassy_session_stop. This is because synchronous waits past the MCP client's ~240s response wall wedge the connection. For known long-running work, prefer calling sassy_session_start directly with a memorable name.

allow_pattern: opt-in escape hatch for power users. When set to a specific pattern label (e.g. 'truncate-by-redirect') OR to '*', a regex-pattern match with that label is allowed to execute instead of being blocked. The bypass is recorded as a 'pattern_bypass' audit entry. Keyword matches (rm/del/remove-item) are NEVER affected by this flag — only regex patterns can be opted out, and only one pattern at a time.

Tiered destructive-action handling: when interceptor.destructiveAction = "confirm" (config), MEDIUM- and HIGH-tier pattern matches return a confirmation_required JSON payload with a single-use token instead of hard-blocking. Call sassy_shell_confirm(token) (HIGH tier also requires a typed phrase) to actually run the command. LOW-tier matches always run after a log entry. The default action remains "block".

ParametersJSON Schema
NameRequiredDescriptionDefault
shellNo
commandYes
allow_patternNo
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden—and it excels. It discloses shell selection logic, syntax normalization, timeout auto-detachment, the allow_pattern escape hatch with audit logging, and the tiered destructive-action handling with confirmation tokens. No contradictions with any structured fields.

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 lengthy but each paragraph targets a distinct behavioral aspect (shell selection, timeouts, allow_pattern, destructive actions). It is front-loaded with the core purpose. Slightly dense, but every sentence adds value; no filler or redundancy.

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's complexity (shell execution, background sessions, safety mechanisms) and the presence of an output schema, the description covers all critical operational details: return formats (JSON handle, confirmation payload), interaction with session tools, audit behavior, and tiered blocking rules. It leaves little to guesswork.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate—and it does thoroughly. It explains 'shell' with platform-specific defaults, 'timeout_seconds' with the >120 behavior, 'allow_pattern' with pattern label semantics, and 'command' implicitly by context. Every parameter receives meaningful, non-obvious context beyond the schema.

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: 'Execute a shell command in the host's native shell.' It clearly distinguishes itself from sibling tools by explaining how it relates to session tools (sassy_session_read/stop/start) and the confirm tool (sassy_shell_confirm), making its unique role evident.

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 provides explicit guidance on when to use this tool versus alternatives: 'For known long-running work, prefer calling sassy_session_start directly with a memorable name.' It also explains the auto-detach behavior and when synchronous waits are inappropriate, giving the agent clear decision criteria.

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

sassy_shell_confirmA

Execute a sassy_shell command previously returned as confirmation_required.

Tokens are single-use, expire after 60s, and are bound to the exact command + shell + cwd that produced them. HIGH-tier tokens also require confirm_phrase to match the phrase shown in the original confirmation_required response — replays against a different command are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes
confirm_phraseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It specifies that tokens are single-use, expire after 60s, are bound to command+shell+cwd, that HIGH-tier tokens require confirm_phrase matching, and that replays against different commands are rejected. This adds significant context beyond the schema.

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 concise and well-structured: a one-sentence purpose followed by a compact paragraph on token behavior. It is front-loaded with the primary action and contains no fluff or redundant information.

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's simplicity (2 params, output schema present), the description is complete. It covers purpose, token lifecycle, confirmation requirement, and security constraints. Return values are presumably covered by the output schema, so no additional detail is needed.

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 compensates well. It explains the token's properties (single-use, expiry, binding) and the confirm_phrase requirement (only for HIGH-tier tokens, must match original phrase). It does not explicitly map these to parameter names, but the meaning is clear and helpful.

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 starts with 'Execute a sassy_shell command previously returned as confirmation_required,' which clearly states the action (execute), the resource (a sassy_shell command), and the prerequisite context (previously returned as confirmation_required). This distinguishes it from the sibling sassy_shell tool and leaves no ambiguity about when to use it.

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

Usage Guidelines4/5

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

The description implicitly signals usage after receiving a confirmation_required response, and details token binding and confirmation requirements. However, it does not explicitly name alternatives or state when not to use the tool, though the purpose is clear enough to infer correct usage.

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

sassy_state_clearB

Clear state for a specific tool or all tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not explain what 'state' means, whether the action is destructive or reversible, what side effects may occur, or whether any permissions are needed. For a clearing operation, this is a significant gap.

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 a single, front-loaded sentence with no unnecessary words or repetition. It is concise and to the point.

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

Completeness2/5

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

While simple, the tool lacks critical context. The description omits what 'state' includes, the impact of clearing all tools, and any behavioral consequences. Even though an output schema exists, the description does not address the ambiguity of the operation itself, making it incomplete for safe invocation.

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?

The schema has one parameter (tool_name) with 0% description coverage. The description's phrase 'a specific tool or all tools' hints at the parameter's role but does not specify how to represent 'all' (e.g., empty string or omitted) or list valid values. The description only partially compensates for the lack of schema details.

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 clearly states the verb 'Clear' and the resource 'state', with an explicit scope ('for a specific tool or all tools'). It is distinct from sibling tools like sassy_state_set and sassy_state_get, which set or retrieve state rather than clearing it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusions. It simply defines what it does, not the context in which it should be invoked.

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

sassy_state_getC

Retrieve persistent state for a tool. Returns JSON-encoded value.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tool_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It states that the tool 'Returns JSON-encoded value,' which is useful, and implies a read-only operation via 'retrieve.' However, it does not explain what happens if the key is missing, or how state is namespaced, leaving gaps.

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 a single, front-loaded sentence with no filler words. It is appropriately sized for a simple getter tool, though it omits useful details.

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

Completeness2/5

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

Given that the tool has two required parameters, no annotations, and no parameter descriptions, the description is too sparse. It does not explain how to specify tool_name or key, nor what 'persistent state' means in context. The output schema exists but is not shown, so the agent may still be uncertain about return values.

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?

Schema coverage is 0%, so the description must clarify the two parameters. It only hints that tool_name refers to a tool, but does not define the key parameter or explain the relationship between tool_name and key. The description adds minimal value beyond the raw schema.

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

Purpose4/5

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

The description uses the specific verb 'Retrieve' and identifies the resource as 'persistent state for a tool,' making its function clear. While it doesn't explicitly distinguish from sassy_state_set/clear, the verb 'retrieve' clearly positions it as the getter in the state trio.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus sassy_state_set or sassy_state_clear, nor any context about retrieving state that was previously stored. The description offers no usage scenarios or exclusions.

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

sassy_state_setB

Persist any value for any tool across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
tool_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly states that values persist across sessions, which is the primary behavior. However, it does not disclose whether values overwrite existing ones, any size/type restrictions, permissions needed, or failure modes. The phrase 'any value' is also misleading because the schema restricts 'value' to a string.

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 a single, front-loaded sentence that captures the core function without extraneous words. Every word contributes meaning, making it highly concise and easy to parse.

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?

For a simple setter tool, the description gives the essential purpose, and the existence of an output schema covers return values. However, it lacks context about how the state is namespaced (by tool), overwrite behavior, and how it relates to sassy_state_get and sassy_state_clear. This would be helpful for agents to understand the state lifecycle without requiring extra investigation.

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?

Schema coverage is 0%, so the description must clarify the parameters. It implies tool_name and value but does not explicitly explain 'key' as the identifier for retrieval. The claim of persisting 'any value' contradicts the schema's string type for 'value', potentially confusing agents. The description adds minimal value over the schemas intrinsic names.

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 uses a specific verb 'persist' and identifies the resource as 'any value for any tool', clearly indicating the tool sets persistent state across sessions. It naturally distinguishes from sibling tools like sassy_state_get and sassy_state_clear, which retrieve and clear state respectively.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as sassy_state_get, sassy_state_clear, or memory-related tools. It merely states what the tool does without mentioning use cases or exclusions.

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

sassy_tarC

Create a tar archive. compress: gz, bz2, xz, or none.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNo
sourceYes
compressNogz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only states the action and compress options, but does not disclose side effects (e.g., file overwriting), expected source format, output behavior when empty, or any permissions/return value details.

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 exceptionally brief and front-loaded with the primary purpose. The compression formats are listed efficiently. While not overlong, it may be too terse to provide full context, but for a simple tool it earns its place.

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

Completeness2/5

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

Despite an output schema existing, the description lacks essential context about parameter semantics, especially 'source' and 'output'. The tool has three parameters and no annotations, so more explanatory detail is needed for an agent to invoke it correctly.

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?

Schema description coverage is 0%, so the description must compensate. It only clarifies the 'compress' parameter with allowed values (gz, bz2, xz, none), but fails to explain 'source' and 'output' parameters, which are essential for tool invocation.

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 clearly states 'Create a tar archive', which is a specific verb+resource. It distinguishes itself from sibling tools like sassy_untar (extract) and sassy_zip (zip archive) by explicitly naming the archive type.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention sibling tools or any conditions for use, leaving the agent to infer usage solely from the purpose statement.

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

sassy_toastA

Show a desktop notification. duration: short or long.

Useful for alerting when a long-running task completes. Routed at the head: Windows toast (BurntToast -> .NET -> msg.exe), macOS osascript notification, Linux notify-send.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
messageYes
durationNoshort

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses behavioral details like platform-specific routing (Windows toast, macOS osascript, Linux notify-send), which gives the agent useful context. However, it doesn't mention potential side effects, permission requirements, or edge cases (e.g., what happens if notify-send is missing). Since the tool is non-destructive and simple, this is acceptable but not exhaustive.

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: the first states the main action, the second provides use case and routing details. No fluff or repetition; every sentence earns its place. Front-loaded with the core purpose.

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 low-complexity tool with an output schema, the description covers purpose, use case, and platform behavior. It doesn't explain return values, but that's likely covered by the output schema. It's complete enough for an agent to decide when and how to invoke this tool, though some edge-case behavior (e.g., duration validation) isn't specified.

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 0%, so the description must add meaning. It mentions 'duration: short or long', aligning with the schema's default and adding a hint about valid values. The 'title' and 'message' parameters are self-explanatory from their names, but the description doesn't clarify any formatting or constraints (e.g., max length). The added value is minimal, hence a score of 3.

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 'Show a desktop notification' – a specific verb and resource that clearly states the tool's function. It distinguishes itself from siblings like sassy_screenshot or sassy_desktop_state by focusing on notifications, and the platform routing details further clarify its scope.

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

Usage Guidelines4/5

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

It explicitly states a use case: 'Useful for alerting when a long-running task completes.' This gives clear context for when to employ the tool. It doesn't mention alternatives or exclusions, but for a simple notification tool, this is sufficient guidance.

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

sassy_tool_catalogA

Catalog every registered tool: name, one-line purpose, group.

Client-agnostic capability map for ANY MCP wrapper — enumerate what this server can actually do without loading each tool's schema. Derived live from the registry, so it never drifts from reality the way hand-written capability prose does (the drift that makes absent lazy-loaded tools look like missing ones).

group: filter to one tool group (see sassy_tool_groups). Empty = all. query: case-insensitive substring match on tool name or purpose.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description takes full responsibility. It discloses that the catalog is 'Derived live from the registry' to avoid drift, and specifies exact filter behavior ('case-insensitive substring match', 'Empty = all'). This is transparent beyond the bare minimum.

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 split into three tight paragraphs: first the core function, then the rationale for live derivation, and finally parameter specifications. It is slightly verbose with phrases like 'the drift that makes absent lazy-loaded tools look like missing ones,' but every sentence adds value.

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?

An output schema exists, so return details are handled. The description fully specifies the purpose, parameters, and behavioral guarantees, while also addressing broader context like client-agnostic usage and drift avoidance. Nothing essential is missing.

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

Parameters5/5

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

Schema coverage is 0% with no parameter descriptions, but the description fully explains both: 'group: filter to one tool group (see sassy_tool_groups). Empty = all.' and 'query: case-insensitive substring match on tool name or purpose.' This completely compensates for the schema omission.

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 clearly states 'Catalog every registered tool: name, one-line purpose, group.' This is a specific verb with a defined resource and output. It distinguishes itself from sibling tools like sassy_tool_groups by focusing on the tool list rather than just groups.

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

Usage Guidelines4/5

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

The description provides strong context: 'Client-agnostic capability map for ANY MCP wrapper — enumerate what this server can actually do without loading each tool's schema.' It also references sassy_tool_groups for filtering. However, it does not explicitly name when not to use this tool or list direct alternatives beyond that reference.

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

sassy_tool_groupsA

List available tool groups and their load status.

Shows which groups are loaded, their tool counts, and descriptions. Use sassy_tool_group_toggle to enable/disable groups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It discloses what the tool returns (loaded groups, tool counts, descriptions) and implies a read-only operation by saying 'List' and 'Shows.' While it does not explicitly state 'no side effects,' the read-only nature is strongly implied. This is sufficient for a simple listing tool, and the output schema further clarifies the response format.

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 three sentences, each earning its place. The first states the core purpose, the second adds useful details about the output, and the third directs to the relevant sibling for modifications. There is no fluff or repetition.

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?

The description, combined with the output schema, provides a complete picture. It explains what information the tool presents (groups, load status, counts, descriptions) and gives a clear alternative for toggling. There are no missing prerequisites or edge cases to mention for such a simple read-only tool.

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?

The tool has zero parameters, so there is nothing for the description to add beyond what the schema already provides (an empty properties object). Baseline for no parameters is 4, and the description does not introduce any irrelevant parameter information.

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 clearly states the tool's function: 'List available tool groups and their load status.' It uses a specific verb ('List') and resource ('tool groups'), and the additional detail about tool counts and descriptions distinguishes it from siblings like sassy_tool_catalog or sassy_setup_status. There is no ambiguity.

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 provides an alternative: 'Use sassy_tool_group_toggle to enable/disable groups.' This tells the agent when to use this tool (viewing) versus when to use a different tool (modifying). It also implies this tool is for read-only inspection, which is clear guidance.

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

sassy_tool_group_toggleA

Enable or disable a tool group. Emits tools/list_changed notification.

NOTE: clients vary. MCP clients that handle tools/list_changed (Claude Code, Cursor, etc.) refresh automatically; clients that don't (Claude Desktop today) require a manual server restart.

group: core, android, system, github_quick, github_full, v020, persona enable: True to load, False to unload

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYes
enableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses the side effect (emits tools/list_changed) and the critical client behavior caveat (some require restart). It also clarifies the meaning of enable (load) and disable (unload), going beyond the bare schema.

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 concise and well-structured: a clear purpose sentence, a side-effect note, a client caveat, and a compact parameter list. Every sentence adds value, and it is front-loaded with the primary action.

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?

The tool is simple, and the description covers the purpose, side effects, client impact, and parameters. The presence of an output schema means return values need not be described. The description is complete for effective use.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate fully. It does so by listing the acceptable values for 'group' and explaining the boolean 'enable' as 'True to load, False to unload'. This adds significant meaning beyond the schema's bare type definitions.

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 clearly states the action ('Enable or disable a tool group') with a specific verb and resource, and it explicitly lists the valid groups. This distinguishes it from siblings like 'sassy_tool_groups' and other setup tools, which serve different purposes.

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

Usage Guidelines4/5

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

The description provides clear context on usage, including the fact that it emits a tools/list_changed notification and how different clients handle it. However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of a 5.

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

sassy_tool_usageA

Show tool usage analytics: invocation counts, trends, top tools.

Tracks which tools you actually use to inform smart loading. Data persists across sessions in ~/.sassymcp/tool_usage.json.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the transparency burden. It discloses the persistence path (~/.sassymcp/tool_usage.json) and that data persists across sessions, but it does not clarify whether the tool is purely read-only or also writes to the file. The side effect profile is incomplete.

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 three short, front-loaded sentences. The first sentence states the core function, the second gives purpose, and the third adds persistence context. Every sentence earns its place with no redundancy.

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 zero-parameter tool with an output schema, the description sufficiently covers functionality, purpose, and data persistence. The presence of an output schema means return values need not be explained, and the description is complete for its simplicity.

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?

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter details, and the empty input schema provides no additional burden.

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

Purpose4/5

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

The description uses a specific verb ('Show') and clearly identifies the resource ('tool usage analytics'), listing concrete outputs (invocation counts, trends, top tools). However, it does not explicitly distinguish this from sibling tools like sassy_observability_tool_stats, so it lacks differentiation.

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 a use case ('to inform smart loading') but does not provide explicit when-to-use guidance or exclusions. It also does not mention alternative tools, leaving the agent to infer when this is the right choice among similar analytics tools.

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

sassy_type_textA

Type text into a field. Always clears field first with ctrl-a + backspace. If target_x/target_y provided, clicks the field first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
intervalNo
target_xNo
target_yNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It transparently reveals that the tool always clears the field via ctrl-a+backspace and clicks the field first if target coordinates are supplied. These are significant side effects that an agent must know. It could reasonably mention more about error handling or return values, but the output schema covers return values.

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 extremely concise: two sentences, front-loaded with the primary purpose, and every sentence adds meaningful information. There is no filler or redundancy, making it highly efficient.

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 simple 4-parameter tool with an output schema, the description covers the core purpose, key behavioral preconditions, and the function of two parameters. The unexplained 'interval' parameter and lack of explicit alternatives are minor gaps, but overall the description is sufficiently complete for safe 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?

The schema has 0% description coverage, so the description must compensate. It explains target_x/target_y by stating they trigger a click, and text is self-evident from the tool's name. However, the 'interval' parameter is not mentioned at all, leaving a gap for the agent. This partial compensation merits a mid-range score.

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 'Type text into a field' with a specific verb and resource, clearly identifying the tool's primary function. It distinguishes itself from sibling tools like sassy_click and sassy_shell by focusing on text entry into a field, and the additional details about clearing and clicking further clarify its scope.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: for typing text into a field, with a precondition that it always clears the field first and optionally clicks if coordinates are given. It does not explicitly name alternatives or say when not to use it, which prevents a perfect score.

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

sassy_untarC

Extract a tar/tar.gz/tar.bz2/tar.xz archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
destinationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Extract' without detailing side effects like overwriting behavior, the role of the destination parameter, permission requirements, or error handling. This is insufficient for a tool that writes to the filesystem.

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 a single sentence with no filler, front-loading the core action immediately. It is extremely concise and every word earns its place, though this brevity comes at the cost of detail.

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

Completeness2/5

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

For a tool with two parameters, no annotations, and no output schema details provided, the description is incomplete. It fails to explain the destination's behavior, return values, error conditions, or any constraints. This falls short of a minimum viable definition for an extraction tool.

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

Parameters1/5

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

The input schema has 0% description coverage for its two parameters, and the description adds no semantic meaning. It does not explain what 'archive' or 'destination' mean, their expected formats, or how they interact. The agent gets no useful parameter guidance beyond the raw parameter names.

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 clearly states the tool's function with the specific verb 'Extract' and a precise scope of supported archive formats ('tar/tar.gz/tar.bz2/tar.xz'). This distinguishes it from sibling tools like sassy_unzip (which handles zip) and sassy_tar (likely for creating archives), making the purpose unambiguous.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not mention when to use this tool over sassy_unzip or other extraction tools, nor does it state prerequisites, exclusions, or typical scenarios. It simply declares the action without context.

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

sassy_unzipA

Extract a zip archive.

archive: path to .zip file destination: extract to this directory (defaults to archive parent) password: for encrypted zips

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
passwordNo
destinationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the burden of disclosing side effects. It states the basic action ('extract') but fails to mention important behaviors such as whether existing files are overwritten, whether directories are created, how password errors are handled, or whether the operation is reversible. This is minimal behavioral detail for a file-modifying operation.

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 extremely concise: one short phrase followed by a simple bullet-like parameter list. Every sentence and fragment serves a purpose, with no filler or redundant information.

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 simple 3-parameter tool, the description covers purpose and all parameter semantics. The output schema exists, so explaining return values is not required. The main gap is the lack of behavioral details (e.g., overwrite behavior, error handling), which prevents it from being fully complete, though the core extraction functionality is well documented.

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

Parameters5/5

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

The input schema has zero description coverage, providing only parameter names and defaults. The description adds crucial meaning: 'archive: path to .zip file', 'destination: extract to this directory (defaults to archive parent)', and 'password: for encrypted zips'. Every parameter is fully explained, going well beyond the schema.

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 'Extract a zip archive', which is a specific verb and resource. The name 'sassy_unzip' and sibling tools like sassy_zip, sassy_tar, and sassy_untar make the purpose unambiguous and distinctly different from its siblings.

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

Usage Guidelines4/5

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

The description clearly conveys when to use this tool: whenever a zip archive needs extraction. It distinguishes from sassy_zip (which creates zips) and sassy_untar (which extracts tar files), though it does not explicitly say 'use untar for tar files' or provide exclusions. The context is clear, but explicit alternative references are missing.

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

sassy_update_applyA

Download an asset to staging. Returns the path + a run command.

Does NOT execute the installer — the user runs the returned command when ready. Disabled in packaged/frozen builds so marketplace installs remain a fixed graded version; upgrade by installing a new release artifact instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
dest_dirNo
asset_nameYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations available, the description carries the full transparency burden. It discloses the non-execution behavior, the return values, and the build-specific restriction. However, it does not mention potential side effects like overwriting existing staging files or requiring network access, so it is not fully comprehensive.

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 three sentences: the first states the core purpose, the second clarifies a critical non-behavior, and the third gives a conditional context. Each sentence contributes valuable information with no repetition.

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?

Given the tool's moderate complexity (three parameters, no output schema), the description provides essential information about the tool's purpose, return value, and limitations. The main gap is parameter documentation, but the tool's behavior is simple enough that the description gives adequate context for an agent to decide whether to use it.

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?

The input schema provides three parameters with no descriptions (0% schema coverage), and the description does not mention any parameter names or their roles. The parameter names like asset_name and dest_dir are somewhat self-explanatory, but the description does not clarify how they map to the 'staging' behavior or what 'tag' means in this context.

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 action: 'Download an asset to staging' and immediately states the return value ('path + a run command'). It distinguishes itself from sibling update tools by explicitly noting it does NOT execute the installer, which is critical for the 'apply' naming.

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 clearly states when to use this tool: to stage an update for manual execution. It also provides an exclusion: 'Disabled in packaged/frozen builds' and an alternative: 'upgrade by installing a new release artifact instead.' This gives the agent actionable guidance for choosing this tool vs. alternatives.

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

sassy_update_changelogA

Return the release notes body for a tag (defaults to latest).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only states that it returns release notes, implying a read operation, but does not disclose potential side effects, network dependencies, authentication requirements, or error behavior. This minimal transparency is insufficient for a tool with no annotation support.

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 a single, front-loaded sentence that conveys the core purpose and the key parameter default without any wasted words. It is appropriately sized for the tool's simplicity.

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 tool with one optional parameter and no output schema, the description covers the essential context: what it does (returns release notes body) and the parameter behavior (defaults to latest). It does not detail output format or error handling, but these are less critical for this simple retrieval tool. Overall, it is adequately complete for the agent to select and invoke it correctly.

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?

The schema has one parameter 'tag' with no description (0% coverage). The description compensates by explaining that the tag refers to the release tag and defaults to the latest version. This adds meaning beyond the raw schema, giving the agent the necessary context to use the parameter 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 clearly states the tool's function: 'Return the release notes body for a tag (defaults to latest).' It specifies both the action and resource, and the mention of 'defaults to latest' adds useful scope. This distinguishes it from sibling update-related tools like sassy_update_check and sassy_update_apply.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool vs alternatives. It does not mention related tools or conditions that would warrant its use, nor does it exclude any scenarios. The only context is the default-to-latest behavior, which is a parameter detail rather than usage guidance.

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

sassy_update_checkA

Check for a newer SassyMCP release (apt-update equivalent).

Caches the result for 5 minutes; pass force=True to bypass the cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly mentions caching behavior ('Caches the result for 5 minutes') and how to bypass it via force=True, providing useful operational detail. It does not, however, describe return format or potential network side effects, but for a check tool this is reasonably transparent.

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, front-loaded with purpose, followed by a specific behavioral note. No fluff or redundancy; every word earns its place.

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?

For a simple one-parameter check tool, the description covers purpose, caching, and parameter semantics. However, it does not specify what the tool returns (e.g., boolean, version string), which is a notable gap given there is no output schema. This leaves the agent guessing about the result format.

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

Parameters5/5

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

The schema has zero description coverage, and the description fully explains the only parameter: 'pass force=True to bypass the cache.' This gives clear meaning beyond the schema's bare boolean type and default value.

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 clearly states the tool's action: 'Check for a newer SassyMCP release' and uses the apt-update metaphor for added clarity. It is distinct from sibling tools like sassy_update_list and sassy_update_apply, which handle listing and applying updates respectively.

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 (when you need to check for a newer release) but does not explicitly contrast with sibling tools or state when not to use it. It lacks explicit alternatives or exclusions, though the apt-update equivalent gives some contextual hint.

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

sassy_update_listB

List downloadable assets for a release (apt-list-upgradable equivalent).

tag defaults to the latest release.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It implies a read-only listing operation but does not disclose what the return value looks like, whether network access is involved, or any side effects. The only behavioral note is the tag default, which is minimal.

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 short sentences, front-loaded with the core purpose. The parenthetical adds minor noise but does not bloat the text. Every part earns its place.

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?

With no output schema, the description should explain what 'downloadable assets' means in terms of return structure, but it does not. It also lacks context about the source of releases or how tag relates to sibling tools. Still, for a one-parameter read-only tool, it achieves a minimum viable level.

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?

The schema provides only the tag parameter with no description. The text adds that 'tag defaults to the latest release' and implies tag is a release identifier, which is useful but still lacks format, allowed values, or examples. For a one-parameter tool, this is adequate but not rich.

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

Purpose4/5

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

The description clearly states the verb and resource: 'List downloadable assets for a release.' It also adds scoping via the tag parameter. However, the parenthetical 'apt-list-upgradable equivalent' is potentially misleading because apt-list-upgradable lists upgradable packages, not release assets, and it doesn't distinguish this tool from siblings like sassy_update_check.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as sassy_update_check or sassy_update_changelog. Only the default behavior for the tag parameter is mentioned, which is not enough to orient an agent on selection.

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

sassy_write_fileA

Write or append to a file. mode: rewrite | append.

encoding: any Python codec name (utf-8, utf-16, ascii, latin-1, ...). line_endings: 'preserve' (default — write content verbatim), 'lf' (normalize all CRLF/CR to LF before writing), 'crlf' (normalize all to CRLF — useful for Windows .bat / .ps1 files generated from a model that emits LF).

Rewrite mode on an existing file first snapshots the prior contents into the adjacent DELETE/ staging folder so destructive overwrites can always be undone. Protected paths (SassyMCP source tree, ~/.sassymcp) are refused.

Bypasses the shell-keyword interceptor entirely — content with words like 'format' or 'rm -rf' as data inside scripts is fine. Path validation runs _check_write_path (allowedDirectories + sensitive-read denylist + protected roots) so an LLM cannot write into ~/.ssh, ~/.aws, the SassyMCP source tree, etc. even when allowedDirectories is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNorewrite
pathYes
contentYes
encodingNoutf-8
line_endingsNopreserve

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full disclosure burden and does so thoroughly: it explains the destructive-overwrite snapshot to _DELETE_/, protected-path refusals, the shell-keyword bypass, and the path validation chain (`_check_write_path` with allowedDirectories/denylist/roots). These are substantive behavioral traits beyond the schema.

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 front-loaded with the primary action and then organized into focused blocks (modes, encoding/line endings, safety snapshot, interceptor bypass, validation). Every sentence adds operational value; there is no fluff or repetition.

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 that an output schema exists (so return values are covered elsewhere) and no annotations are present, the description thoroughly covers inputs, modes, safety behavior, encoding, and path validation. It is complete enough for an agent to invoke the tool correctly, with only minor details like file-creation behavior left to the runtime.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain parameters, and it does: mode ('rewrite | append'), encoding (any Python codec name), and line_endings ('preserve', 'lf', 'crlf' with explicit normalization behavior) are all detailed. Path validation semantics are also disclosed, adding meaning to the path parameter.

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 'Write or append to a file' and explicitly lists modes ('rewrite | append'), making the tool's purpose unmistakable. It clearly distinguishes from file-reading and editing siblings by focusing on whole-file write/append operations.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: writing or appending files with encoding/line-ending control, especially when content may contain shell keywords (since it bypasses the interceptor). However, it does not explicitly mention alternatives or exclusions (e.g., 'use sassy_edit_block for partial edits'), so it stops short of a full 5.

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

sassy_zipA

Create a zip archive from a file or directory.

source: path to file or directory to zip output: output zip path (defaults to source + .zip) compression: deflated (default), stored (no compression), bzip2, lzma

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNo
sourceYes
compressionNodeflated

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the transparency burden. It discloses useful behavior like default output path and compression modes, but lacks important details such as whether existing files are overwritten, whether directories are processed recursively, or any side effects besides file creation.

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 compact and front-loaded: a single purposeful first sentence followed by a structured parameter list. No filler or redundant content exists—every line conveys essential information.

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 simple utility with an output schema present, the description covers the core purpose and all parameters. Minor gaps exist: no mention of overwrite behavior or directory recursion, and no guidance on using it versus tar/unzip tools. Still, it is sufficient for a straightforward zip creation task.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate for all parameters. It clearly explains source as the path to zip, output as the destination with a default, and compression with the specific allowed values. This fully covers the parameter semantics beyond the bare schema fields.

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 starts with the specific action 'Create a zip archive from a file or directory', clearly identifying the tool's function and resource. It distinguishes itself from sibling tools like sassy_unzip and sassy_tar by naming the zip format explicitly.

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 when to use the tool (when creating a zip archive), but gives no explicit guidance about when not to use it or alternatives such as sassy_tar or sassy_unzip. With many compression-related siblings, an explicit comparison would strengthen this dimension.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 97 tool updatesv0.1.0
    • First observedsassy_audit_clear
    • First observedsassy_audit_false_positives
    • First observedsassy_audit_log
    • First observedsassy_audit_search
    • First observedsassy_click
    • First observedsassy_context_estimate
    • First observedsassy_copy
    • First observedsassy_desktop_state
    • First observedsassy_diff
    • First observedsassy_edit_block
    • First observedsassy_edit_multi
    • First observedsassy_env_get
    • First observedsassy_env_list
    • First observedsassy_env_set
    • First observedsassy_file_info
    • First observedsassy_get_config
    • First observedsassy_ghq_get
    • First observedsassy_ghq_issue
    • First observedsassy_ghq_issues
    • First observedsassy_ghq_pr
    • First observedsassy_ghq_protect
    • First observedsassy_ghq_push
    • First observedsassy_hooks_activate
    • First observedsassy_hooks_deactivate
    • First observedsassy_hooks_list
    • First observedsassy_hooks_suggest
    • First observedsassy_hotkey
    • First observedsassy_http
    • First observedsassy_http_ping
    • First observedsassy_list_dir
    • First observedsassy_memory_context
    • First observedsassy_memory_forget
    • First observedsassy_memory_handoff
    • First observedsassy_memory_log
    • First observedsassy_memory_milestones
    • First observedsassy_memory_recall
    • First observedsassy_memory_remember
    • First observedsassy_memory_search
    • First observedsassy_memory_stats
    • First observedsassy_minify_test
    • First observedsassy_mkdir
    • First observedsassy_move
    • First observedsassy_observability_health
    • First observedsassy_observability_metrics
    • First observedsassy_observability_tool_stats
    • First observedsassy_panel
    • First observedsassy_permission
    • First observedsassy_persona_capabilities
    • First observedsassy_persona_context
    • First observedsassy_persona_decisions
    • First observedsassy_persona_full
    • First observedsassy_persona_observability
    • First observedsassy_persona_practices
    • First observedsassy_persona_style
    • First observedsassy_read_file
    • First observedsassy_read_multiple
    • First observedsassy_recent_tool_calls
    • First observedsassy_safe_delete
    • First observedsassy_screen_info
    • First observedsassy_screenshot
    • First observedsassy_search_files
    • First observedsassy_self_check
    • First observedsassy_session_list
    • First observedsassy_session_read
    • First observedsassy_session_send
    • First observedsassy_session_start
    • First observedsassy_session_stop
    • First observedsassy_session_stop_all
    • First observedsassy_set_config
    • First observedsassy_setup_check_tools
    • First observedsassy_setup_generate_token
    • First observedsassy_setup_github
    • First observedsassy_setup_license
    • First observedsassy_setup_ssh
    • First observedsassy_setup_status
    • First observedsassy_setup_tools
    • First observedsassy_setup_wizard
    • First observedsassy_shell
    • First observedsassy_shell_confirm
    • First observedsassy_state_clear
    • First observedsassy_state_get
    • First observedsassy_state_set
    • First observedsassy_tar
    • First observedsassy_toast
    • First observedsassy_tool_catalog
    • First observedsassy_tool_group_toggle
    • First observedsassy_tool_groups
    • First observedsassy_tool_usage
    • First observedsassy_type_text
    • First observedsassy_untar
    • First observedsassy_unzip
    • First observedsassy_update_apply
    • First observedsassy_update_changelog
    • First observedsassy_update_check
    • First observedsassy_update_list
    • First observedsassy_write_file
    • First observedsassy_zip

TDQS

C2.9/5.0

Scored across 97 tools

Disambiguation2/5

Many tools overlap significantly, e.g., sassy_observability_metrics, sassy_observability_health, sassy_observability_tool_stats, sassy_tool_usage, and sassy_recent_tool_calls all provide usage/observability data. Memory tools like sassy_memory_log and sassy_memory_remember also have fuzzy boundaries, making selection error-prone.

Naming Consistency3/5

All tools share the sassy_ prefix and snake_case, but the verb-noun pattern is inconsistent. Some use verb-first (sassy_read_file, sassy_list_dir), some noun-first (sassy_ghq_pr, sassy_update_check), and several omit verbs entirely (sassy_persona_style, sassy_tool_catalog). The naming is readable but not predictable.

Tool Count1/5

With 97 tools, the surface is massively over-scoped for a personal assistant/server. Many tools could be consolidated (e.g., 6+ memory tools, 5+ observability tools, 6+ setup tools). This creates context bloat and selection difficulty, far beyond what an agent needs.

Completeness4/5

The tool set covers file operations, shell, memory, observability, setup, and GitHub workflows with good depth. However, gaps exist in the GitHub domain: there is no update issue, get/merge pull request, or issue search. Memory and file operations are largely complete, so overall coverage is strong with minor missing lifecycle operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A feature-rich Model Context Protocol server built with FastMCP that provides various tools including basic utilities, network services, file operations, encryption tools, and system information functions.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight Windows-native MCP server providing a consolidated suite of 14 tools for shell execution, file operations, and interactive process management. It optimizes efficiency through batch file operations and smart process handling to minimize context window overhead.
    4 npm
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A powerful filesystem MCP server for AI agents with extensive system access, including filesystem operations, shell execution, Windows tools, reverse engineering, code intelligence, and agent orchestration.
    1
    -