Skip to main content
Glama
mcp-protocol-conformance

mcp-protocol-conformance

generateReport

Read-onlyIdempotent

Renders MCP conformance test results as JUnit XML, JSON, or terminal output, enabling failure review and CI integration.

Instructions

Render a FullReport as JUnit XML, JSON, or human-readable terminal output.

Input Schema

NameRequiredDescriptionDefault
formatYes
reportNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / additionalProperties
      Removed value: -false
  2. First observedv0.2.1

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered. The description reinforces that this is a pure transformation into one of three presentation formats, which is mild added context. It does not say whether output is returned as a string or printed to a terminal, nor anything about size limits or truncation of large reports.

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?

A single front-loaded sentence with no filler; the verb, resource, and output modes come first. The only inefficiency is the unexplained jargon "FullReport", which consumes words without informing the agent.

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 2-parameter tool with an untyped, undescribed `report` object, no output schema, and no structured parameter documentation, the description is too thin. An agent cannot determine how to obtain or shape the FullReport argument, nor where the rendered output goes, from the definition alone.

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 carry parameter meaning, and it only partly does. It enumerates the three formats that the `format` enum already lists (no added meaning, no default), and it never explains the untyped `report` parameter beyond naming "FullReport" — its shape, source, and whether it is required or optional are all left opaque.

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?

"Render a FullReport as JUnit XML, JSON, or human-readable terminal output" states a specific verb (Render) and resource (FullReport) plus the three output modes, which is clearly distinct from the run* siblings that produce results. It falls short of 5 because it never positions itself relative to those siblings (e.g. that it renders output from runFullSuite), and "FullReport" is an unexplained type name.

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 when-to-use guidance at all: nothing says whether this is meant to be called after runFullSuite, on an arbitrary report object, or as a standalone formatter. No alternatives or exclusions are named among the eleven sibling run*/assert*/compare* tools, so the agent must guess the call ordering.

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