Skip to main content
Glama

Describe utility

describe_utility
Read-only

Retrieve full documentation for a single string utility, including parameters, defaults, and examples, to learn exact usage before running it.

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

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

Output Schema

TableJSON 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.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds genuinely non-structured behavior: the exact error shape for an unknown id ("isError ('unknown utility: <id>')"), the effect of the `unavailable` flag on run_utility/run_pipeline, and the byte-format discrepancy between describe output (display format) and run_utility (base64). These are operationally important details an agent cannot infer from annotations or schema.

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?

Information is front-loaded (purpose first, then when-to-call, id semantics, and error/availability notes) and every clause carries weight. The first sentence is a long multi-clause construction with nested parentheticals, which slightly hurts scannability, but there is no filler.

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?

Despite the tool's low complexity, the description covers the prerequisite ordering (list_utilities -> describe_utility -> run_utility), parameter strictness, failure mode, and availability semantics. With an output schema already documenting the return shape, nothing an agent needs to call this correctly 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?

Although the single-param schema has 100% description coverage, the description goes beyond it by specifying that `id` is exact and case-sensitive, that names/aliases are NOT resolved, that list_utilities must be consulted first, and what a bad id yields. That materially reduces failed calls in a way the schema line ("Utility id, as returned by list_utilities") does 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 opens with a specific verb+resource ("Full documentation for one utility") and enumerates exactly what that documentation contains (parameters, types, tags, examples, runtime capabilities). It is identifiable against siblings because it names run_utility, run_pipeline, and list_utilities and the distinct role each plays.

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 states the trigger ("Call this before run_utility to learn the exact parameter names and defaults"), the exclusion ("skip it for a utility you have already described"), and routes id discovery to the alternative tool ("look those up with list_utilities first"). This is explicit when/when-not/alternatives guidance.

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