Skip to main content
Glama
setlist-mcp

setlist-mcp

by chrischall

setlist_resolve_concerts

Read-onlyIdempotent

Resolve up to 24 concerts to their setlist.fm setlists in one call, returning best-match setlists, stub flags, and same-tour references when songs are missing.

Instructions

Resolve many concerts to their setlists in ONE call (instead of 2+ per show). Given up to 24 {artist, date, city?, venue?}, returns the best-match setlist for each — {setlistId, url, eventDate, artist, venue, city, tour, songCount, hasSongs} — plus a {matched, stubs, tourReferenced, unmatched, pending, errored} summary. For each: searches artist + date (narrowed by your city/venue), and on a miss falls back to a relevance artist lookup (by mbid) and a punctuation-normalized name so format variants still resolve. hasSongs: false flags an empty stub page (no songs logged on setlist.fm). When a show is a stub, if the act toured a repeating set the result also includes a tourReference — a populated setlist from the SAME tour on a different date (with songs + its own url), clearly labeled as a reference, NOT this exact show (set tourFallback: false to skip these extra lookups). Calls are paced to setlist.fm's ~2 req/sec limit; if a big batch can't finish within the time budget the rest come back pending: true (re-call with just those) rather than timing out. A concert whose lookup fails upstream comes back with match: null and an error message (counted in errored) while the rest of the batch still resolves — re-call with just those. A missing or rejected API key (401/403) fails the whole call at once instead, since no concert could resolve. Keep batches ≤24. Results include a setlist.fm url; when you present this data, cite it as a clickable source link to setlist.fm (their API terms require followable attribution — no nofollow). If a result has no url, link to https://www.setlist.fm instead.

Input Schema

NameRequiredDescriptionDefault
concertsYesConcerts to resolve (1–24 per call)
tourFallbackNoFor empty stubs, also fetch a same-tour reference setlist (default true). Set false to skip the extra lookups.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.2
    • addedInput schema / properties / concerts / items / properties / date / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
  2. Changed1 schema field changedv1.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Addedv0.7.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only safety (readOnly/openWorld/idempotent), but the description goes far beyond: ~2 req/sec pacing against setlist.fm, time-budget exhaustion returning `pending: true` instead of timing out, per-item `match: null` errors that don't sink the batch, whole-call 401/403 failure on bad API key, and the `tourReference` semantics (a same-tour setlist from a different date, explicitly NOT this show). This is exactly the behavioral context annotations cannot carry.

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?

Front-loaded with purpose and return shape, then layered failure/edge-case detail in a logical order. Dense but nearly every clause carries operational value. Minor waste: 'Keep batches ≤24' restates the schema's maxItems: 24, and some sentences are overloaded with em-dashes.

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?

No output schema exists, so the description carries the full burden of describing returns — and it does, enumerating per-concert fields (`setlistId, url, eventDate, artist, venue, city, tour, songCount, hasSongs`), the batch summary counters, and the `tourReference` payload. Edge cases (stubs, pending, errored, auth failure) and the attribution/linking requirement are all covered.

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 the baseline is 3, but the description adds real meaning: it explains the resolution strategy (search artist + date narrowed by city/venue, then relevance artist lookup by mbid, then punctuation-normalized name), which tells the agent why city/venue matter. It also clarifies `tourFallback` semantics beyond the schema's one-liner.

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 resource with explicit scope: 'Resolve many concerts to their setlists in ONE call' with a hard limit of up to 24. The batching framing ('instead of 2+ per show') plus the enumerated return shape makes it clearly distinguishable from single-lookup siblings like setlist_get_setlist or setlist_search_setlists.

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

Usage Guidelines4/5

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

Gives clear context for use (batch resolution instead of repeated per-show calls), a hard batch cap ('Keep batches ≤24'), and an opt-out condition ('set tourFallback: false to skip these extra lookups'). It also routes the agent on failure modes (re-call with pending/errored items). It does not name a specific sibling alternative, so it stops short of a 5.

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