Skip to main content
Glama

fill_genres

Fills missing Spotify artist genres using MusicBrainz in the background, saving results as they arrive so other tools can use them. Call it again to check progress.

Instructions

Fill in the genres Spotify leaves empty, using MusicBrainz (free, about 1 request per second).

Runs in the background and returns at once; call it again to see progress (it never starts a second run). Only primary artists with no Spotify genres are looked up, the most-used first; results are saved as they arrive, so every other tool uses them right away and a stopped run resumes where it left off. Takes a few minutes per hundred artists. Start it only if the user agrees.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.0.1

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations present, the description carries the full load and does so: async background execution with immediate return, idempotency ('never starts a second run'), rate-limit expectations (about 1 request per second), resumability after being stopped, incremental persistence, and a duration estimate of minutes per hundred artists. It also states the selection rule (only primary artists lacking Spotify genres, most-used first).

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?

Purpose is front-loaded in the first clause, and every sentence adds operational detail. The density is high – several facts are packed into long clauses with parentheticals – which slightly hurts scannability but does not waste words.

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 formatting is covered elsewhere, and the description supplies everything else an agent needs: consent prerequisites, expected latency, concurrency behavior, resumption semantics, and downstream effects on other tools. Complete for a zero-parameter background job.

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 tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly tells the agent that progress is observed by re-invoking rather than by passing arguments.

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 names a specific verb and resource ('fill in the genres Spotify leaves empty') and states the external source (MusicBrainz). It is instantly distinguishable from siblings like find_tracks or collection_stats, since no other tool performs genre enrichment.

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 gives explicit when-to-use guidance ('Start it only if the user agrees'), explains how to check progress ('call it again'), and warns against expecting a second concurrent run. Nothing about initiating or monitoring the operation 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.