Skip to main content
Glama

Describe utility

describe_utility
Read-onlyIdempotent

Retrieves full documentation for one utility, including parameter names, defaults, value types, tags, aliases, and worked examples, so you can call it with exact arguments. Call before running a pipeline step.

Instructions

Full documentation for one utility: its parameters (kind, default, options/bounds, description), the value types it accepts/produces, tags, aliases, worked examples (input, inputEncoding, params and expected output — byte outputs there use the app's display format, while run_utility returns bytes as base64), and which runtime capabilities it needs. Call this before run_utility to learn the exact parameter names and defaults; skip it for a utility you have already described. id must be an exact, case-sensitive utility id: names and aliases are not resolved, so look those up with list_utilities first. An unknown id returns isError ("unknown utility: "). When unavailable is set, run_utility and run_pipeline refuse the utility.

Input Schema

NameRequiredDescriptionDefault
idYesUtility id, as returned by list_utilities (e.g. "base64_encode").

Output Schema

NameRequiredDescriptionDefault
idYes
envYesRuntime capabilities the utility needs (dom, wasm, eval, main).
nameYes
tagsYes
paramsYesParameter name -> spec (kind, label, default, options/bounds, description…).
acceptsYesValue type(s) the utility takes: string, bytes or json.
aliasesYes
categoryYes
examplesYesWorked examples: input, params and expected output.
producesYesValue type(s) the utility returns.
descriptionYes
unavailableNoWhy this server will not run the utility, when it will not.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.8.0

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses error behavior ("An unknown id returns isError (\"unknown utility: <id>\")") and a downstream consequence that annotations cannot express ("When `unavailable` is set, run_utility and run_pipeline refuse the utility"). It also flags a subtle format difference: byte outputs in examples use the app's display format while run_utility returns base64.

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 payload is front-loaded (what the doc contains, then usage order, then the id constraint) and every clause carries information. The dense parenthetical enumerating doc fields and the mid-sentence byte-format aside make it harder to scan than it needs to be, but nothing is padding.

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-value explanation is not required, yet the description still characterizes the documentation shape well enough to set expectations. For a single-parameter lookup tool with full annotation coverage, an agent has everything needed to call it correctly and to interpret failure.

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 100% and the schema already says the id comes from list_utilities, so the baseline is 3; the description earns above that by adding that the id is exact and case-sensitive, that names and aliases are not resolved, and that an unknown id yields isError. That is real disambiguation the schema does not provide, though the example format is slightly redundant.

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

Purpose5/5

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

States a specific verb and resource ("Full documentation for one utility") and immediately enumerates what that documentation contains (parameters, value types, tags, aliases, examples, runtime capabilities). This is clearly distinguishable from list_utilities (browsing) and run_utility (execution) named in the same description.

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?

Gives explicit when-to-use ("Call this before run_utility to learn the exact parameter names and defaults"), explicit when-not ("skip it for a utility you have already described"), and routes to the right alternative ("look those up with list_utilities first") when the id is not known. Little is left to inference.

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