Skip to main content
Glama

cull_report

Read-onlyIdempotent

Generate a markdown report combining library scan, EXIF stats, exact duplicates, and blur scores to review a photo shoot before culling. Returns markdown text only.

Instructions

Build a markdown cull report combining scan, EXIF stats, dupes, and blur.

Runs scan_library, library_stats, find_duplicates (exact mode), and blur_scores under the hood, and combines them into one markdown report: library summary, top EXIF stats, exact duplicate groups, and the blurriest 20 jpg files. Returns markdown text only; never writes a file.

Args: params (CullReportInput): Validated input containing: - root (str): Directory to report on, must be inside an allowed --root

Returns: str: Markdown-formatted report, or "Error: " on failure.

Examples: - Use when: "Give me a summary I can read before I start culling this shoot." - Don't use when: you need machine-readable output (use the individual tools instead)

Input Schema

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes further: it discloses the composite execution path (which four tools run under the hood), that the output is markdown text only, that it never writes a file, and that failures surface as 'Error: <message>'. That is exactly the added context the annotation baseline doesn't cover.

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 core purpose and the composed-tool list are front-loaded, and the when/when-not pair is efficient. The Args/Returns sections are mild boilerplate that restate the schema, but they cost little and the failure-mode line earns its place.

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 shape needs no prose, yet the description still names the report sections (library summary, top EXIF stats, duplicate groups, blurriest 20 jpgs) and the error contract. For a single-parameter, side-effect-free aggregation tool, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter, and the description's 'root: Directory to report on, must be inside an allowed --root' largely mirrors the schema's own text ('must resolve inside an allowed --root'). It reinforces the sandbox constraint but adds no syntax, path-format, or resolution detail 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?

States a specific verb and artifact ('build a markdown cull report') and enumerates exactly which inputs it combines (scan, EXIF stats, dupes, blur). It also names the sibling tools it orchestrates, so an agent can immediately tell it apart from scan_library, library_stats, find_duplicates, and blur_scores, which produce the component data.

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 Examples block gives an explicit when-to-use ('summary I can read before I start culling this shoot') and an explicit when-not ('you need machine-readable output — use the individual tools instead'), naming the alternative. Nothing about selection 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.