Skip to main content
Glama

Run custom report

run_report
Read-onlyIdempotent

[Reports] Run a saved custom report and return each block's rows (aggregated numbers, at most 500 rows per block). Optional filters JSON overrides the period / positions / interviews for this run only. Report numbers are decision-support material for a human reviewer.

Runs every block of a saved report and returns its rows. Filters start from the report's defaults, then your own saved filters, then filters if you pass it. Each block runs on its own: a block that fails returns ok=false with an error while the others still return data. Numbers are aggregated; no block returns more than 500 rows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesReport id (from list_reports).
draftNoRun the unpublished draft instead (only if you can edit the report).false
filtersNoOptional JSON ReportFilters to apply on top, e.g. {"period":{"preset":"last_month"}}.
block_idNoRun only this block.
merchant_idNoOptional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.
conversation_idNoPass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNo
blocksYes
filtersYesThe filters the blocks ran with (report defaults, then your saved filters, then the ones you passed).
versionNo
report_idNo
_mcp_instructionsNoServer-issued metadata for this conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context: per-block failure isolation (ok=false with error while other blocks still return data), a 500-row-per-block cap, and the filter precedence chain (report defaults → saved filters → `filters`). The 'decision-support material for a human reviewer' caveat is a useful framing signal about how much weight to put on the numbers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition repeats itself: the opening line and the second paragraph both say 'run a saved report and return its rows,' and the 500-row limit is stated twice. Front-loading the verb and resource is good, but roughly a third of the text is restatement rather than new information.

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 an output schema present and every parameter documented, the description only needs to cover execution semantics, and it does: partial failure, row caps, filter precedence. Nothing essential for a correct invocation is missing, though the lack of sibling routing is the one remaining hole.

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%, so baseline is 3; the description earns above that by documenting filter merge order and the per-run-only scope of `filters`, which the schema does not state. It does not add anything for `conversation_id` or `merchant_id` beyond what the schema already says.

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?

States a specific verb and resource: run a saved custom report and return each block's rows, with the aggregation level and 500-row cap made explicit. It is distinguishable from get_report/preview_report/create_report by the 'run and return rows' framing, though it never names those siblings to draw the boundary explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than prescribed: `draft` hints at editing permission, `block_id` at partial runs, and `filters` at per-run overrides. There is no explicit guidance on when to use run_report versus preview_report, get_report, or generate_interview_report, so an agent must infer the routing from names alone.

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.