Skip to main content
Glama

describe_schema

Discover the queryable fields, functions, and measures for a data source. Use this before run_sql to learn what's available.

Sources: logs, spans, metrics. Default: logs.

Call with NO arguments to start — you get the list of services (with volumes) plus the field profile for logs. Then optionally pass service= to drill into one service's fields (different services emit different dynamic attributes).

Per field: type, coverage, distinct-value estimate, top values (low-cardinality), and a GROUP BY verdict (safe / with care / filter only). Dynamic attributes are the ACTUAL keys in your data — use them directly in QuerySQL (e.g. SELECT http_method FROM logs). Resource-level attributes (logs and spans only) use a resource. prefix, e.g. resource.service.name.

Always returns the source's measures (fn, label, unit, defaultMode — the mode a new alert rule on this measure should default to) and the available QuerySQL functions with their argument counts.

For source=metrics, the metric list is volume-ranked and bounded to a default page; metricsMatched reports the true total independent of what was returned. Pass prefix= to reach past that default page into the tail, e.g. prefix="http." for HTTP metrics.

Optional filter= restricts discovery to matching rows. The predicate is QuerySQL and uses the same field names as run_sql (e.g. level = 'ERROR', http_method = 'GET'); subqueries are not allowed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoOptional: focus on a single field.
filterNoOptional: QuerySQL predicate restricting discovery, e.g. "level = 'ERROR'". Same field names as run_sql; no subqueries.
prefixNoOptional, source=metrics only: only include metric names starting with this prefix — reaches past the default-bounded list.
sourceNoData source: logs, spans, or metrics. Default: logs.
serviceNoOptional: scope to one service.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden—and it delivers. It discloses the return content (services with volumes, field profile, GROUP BY verdicts, measures, functions), the default data source (logs), the behavior of metrics pagination (metricsMatched shows true total), and restrictions (subqueries not allowed). It also explains the resource. prefix convention and dynamic attribute usage, which are key behavioral 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 longer than average but each sentence provides useful details: purpose, usage sequence, field profile contents, metrics specifics, and filter semantics. It is front-loaded with the core purpose and then layers detail logically. A slight deduction because some details (like dynamic attributes and resource prefix) could be organized more compactly, but there is no 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?

With no output schema, the description must explain return values—and it does thoroughly. It lists what the agent will receive: services with volumes, field profiles, type/coverage/distinct values/top values, GROUP BY verdicts, measures with fn/label/unit/defaultMode, and QuerySQL functions. It also explains the metrics bounding behavior and filter constraints, making the tool fully understandable without needing additional documentation.

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 already describes all 5 parameters with 100% coverage, so the baseline is 3. The description adds contextual meaning for source (defaults to logs), service (drill into one service), prefix (only for metrics, reaches past bounded list), and filter (QuerySQL with same field names as run_sql, no subqueries). However, the 'path' parameter is not explicitly mentioned in the description, although its purpose is somewhat implied by the field-discovery focus. Overall, it adds 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 opens with a clear, specific verb+resource: 'Discover the queryable fields, functions, and measures for a data source.' It also distinguishes itself from the sibling tool run_sql by explicitly stating 'Use this before run_sql to learn what's available.' This makes the tool's purpose immediately understandable and unique.

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 gives explicit guidance on when to use: 'Use this before run_sql.' It also describes a usage flow: call with no arguments to start, then optionally pass service=<name> to drill into one service. It provides conditional guidance for metrics (prefix to reach past the default page) and filter semantics. This leaves no ambiguity about how to invoke it correctly.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation2/5

Several tool pairs are near-duplicates, including three deprecated aliases (add_investigation_alert_channel vs add_alert_channel, list_investigation_alert_channels vs list_alert_channels, remove_investigation_alert_channel vs remove_alert_channel) that muddy the surface. Additionally, suppress_signal and create_ignore_rule both suppress alerting via different mechanisms, which could cause misselection despite detailed descriptions.

Naming Consistency4/5

The vast majority of tools follow a clear verb_noun snake_case pattern (create_api_test, list_issues, set_alert_rule_status). A few bare-noun tools (logs, spans, metrics) and the standalone verb correlate break the pattern slightly, but overall the naming is highly consistent and predictable.

Tool Count1/5

With 52 tools, this is on the extreme end of the calibration scale. Even accounting for the broad scope of an observability platform, the count is excessive and includes several deprecated redundancies that inflate it further.

Completeness5/5

The toolset provides comprehensive CRUD/lifecycle coverage across all major domains: alert rules (create, read, update, delete, status, delivery, preview), API tests (create, read, update, delete, run history, credentials), ignore rules and suppressions, issues with digest config, investigations with claim/read, channels, credentials, and rich query tools (logs, spans, metrics, SQL, traces, correlation). No obvious dead ends or missing core operations.

Resources