Skip to main content
Glama
JSungMin

vs-token-safer

by JSungMin

document_symbols

Outline code files by listing classes, functions, and types with line numbers. Use directory scope to generate a signatures-only skeleton of every file, saving tokens while revealing structure.

Instructions

Outline a file — classes/functions/types as a capped kind name :line list. Cheaper than reading the whole file for its structure. scope="directory" builds a signatures-only skeleton of every code file under path.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoFile to outline (or, with scope=directory, the subtree; default = root).
scopeNo`file` (default) | `directory` (skeleton of every file under it).
backendNo
maxResultsNo
projectPathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.37.3
    • removedInput schema / properties / backend / description
      Removed value: -"Backend override; auto-detected."
    • removedInput schema / properties / maxResults / description
      Removed value: -"Result cap (60)."
    • changedInput schema / properties / path / description
      Previous value: -"File to outline (or, with scope=directory, the subdirectory to skeletonize; default = project root)."New value: +"File to outline (or, with scope=directory, the subtree; default = root)."
    • removedInput schema / properties / projectPath / description
      Removed value: -"Project root (cwd)."
    • changedInput schema / properties / scope / description
      Previous value: -"`file` (default) outlines one `path`; `directory` builds a signatures-only skeleton of every code file under it."New value: +"`file` (default) | `directory` (skeleton of every file under it)."
  2. Changed6 schema fields changedv0.29.2
    • changedInput schema / properties / backend / description
      Previous value: -"clangd|roslyn|typescript|pyright (auto)."New value: +"Backend override; auto-detected."
    • changedInput schema / properties / maxResults / description
      Previous value: -"Result cap (default 60)."New value: +"Result cap (60)."
    • changedInput schema / properties / path / description
      Previous value: -"File to outline."New value: +"File to outline (or, with scope=directory, the subdirectory to skeletonize; default = project root)."
    • changedInput schema / properties / projectPath / description
      Previous value: -"Project root (default cwd)."New value: +"Project root (cwd)."
    • addedInput schema / properties / scope
      Added value: +{
      +  "description": "`file` (default) outlines one `path`; `directory` builds a signatures-only skeleton of every code file under it.",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "path"
      -]
  3. Changed3 schema fields changedv1.0.3
    • addedInput schema / properties / backend / description
      Added value: +"clangd|roslyn|typescript|pyright (auto)."
    • addedInput schema / properties / maxResults / description
      Added value: +"Result cap (default 60)."
    • addedInput schema / properties / projectPath / description
      Added value: +"Project root (default cwd)."
  4. First observed

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so description fills gap. Discloses output is a capped list, cost advantage, and scope behavior. Does not mention error conditions or parameter effects beyond path/scope.

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 efficient sentences. First sentence defines core purpose and output format; second adds usage tip and scope option. No fluff, front-loaded.

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 5 parameters (0 required) and no output schema, description covers core behavior and directory scope. Missing documentation for three less critical parameters, but overall sufficient for typical use.

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

Parameters3/5

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

Schema coverage is 40% (only path and scope have descriptions). Description adds meaning for path and scope (e.g., subtree behavior) but ignores projectPath, backend, and maxResults. Partially compensates but 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?

Description explicitly states it outlines a file listing classes/functions/types in a capped 'kind name :line' format. It distinguishes itself from siblings like 'read_symbol' by highlighting it's cheaper for structure overview.

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?

Clearly states when to use (cheaper than reading full file) and explains scope='directory' behavior. Lacks explicit exclusions or alternatives but provides clear context.

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