Skip to main content
Glama

Generate a printable setlist

generate_setlist
Read-onlyIdempotent

Use this when the user wants a printable setlist for a gig or band (set list, stage setlist, setlist template, "print our set list", "how long is our set") as a PDF and CSV. Pass songs[] in play order with title and, when given, key, bpm, capo, duration ("3:45"), notes, segue and transpose; use sets[] when the sets are decided, or pass the pasted list as text (numbered lists, "Song - Key - BPM - Time", CSV or tab rows, "->" segues, SET 2 / Encore / --- breaks). Options: split_sets or break_after_minutes to split one list, changeover_seconds, transpose_all, band, venue, date, layout (both, stage, band) and paper (letter, a4). Returns set totals and the show total in m:ss; songs without a duration are listed and not estimated. Does not look up keys, tempos or song lengths, and does not make chord charts or lyrics.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "generate_setlist"
  }
}

Input Schema

NameRequiredDescriptionDefault
bandNoBand or act name printed at the top. Example: The Late Shift
dateNoGig date as it should print. Example: Sat 14 Nov 2026
setsNoUse instead of songs when the sets are already decided, e.g. [{"name":"Set 1","songs":[...]},{"name":"Encore","songs":[...]}].
textNoFallback: the setlist as the user pasted it, one song per line, e.g. "1. Brown Eyed Girl (G) 150 bpm 3:05 capo 2\nSET 2\nValerie - Eb - 3:40 ->". Reads numbered lists, CSV or tab rows with a header, "->" segues and SET 2 / Encore / --- breaks.
paperNoletter (default) or a4. Example: a4
songsNoSongs in play order, one object per song, e.g. [{"title":"Valerie","key":"Eb","bpm":116,"duration":"3:40"}]. A plain string such as "SET 2" or "Encore" starts a new set. Up to 80 songs.
venueNoVenue printed at the top. Example: Blue Door Pub
layoutNoboth (default: big-type stage pages plus a band copy table), stage, or band. Example: stage
split_setsNoSplit a single list into this many sets of similar length, keeping the order (2 to 6). Example: 2
transpose_allNoShift every song with a known key by these semitones or to a key name. Example: -2
changeover_secondsNoSeconds between songs counted in the set times (none after a segue). Default 0. Example: 20
break_after_minutesNoStart a new set when a set would run past this many minutes. Example: 45

Output Schema

NameRequiredDescriptionDefault
bandYes
dateYes
setsYes
notesYes
paperYes
songsYes
totalYes
venueYes
layoutYes
downloadsYes
pdf_pagesYes
set_countYes
song_countYes
songs_shownNo
total_secondsYes
changeover_secondsYes
links_expire_hoursYes
songs_without_durationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavior: it returns set totals and a show total in m:ss, and songs without a duration are listed but not estimated. It also discloses the parsing tolerance of the text fallback. Slightly short of 5 because it doesn't mention limits such as the song-count or set-count caps.

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-loads the trigger, then modes, then options, then return behavior — a sensible order with almost no filler. It is dense to the point of being a run-on in the option list, which costs a point but not much comprehension.

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?

For a 12-parameter, zero-required tool with an output schema, the description covers all three input paths, option behavior (split_sets, break_after_minutes, changeover_seconds, transpose_all, layout, paper) and the shape of the result. Nothing an agent needs to pick the right input mode is missing.

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 a 3 is the baseline, but the description goes further by explaining the mutual exclusivity and precedence of songs vs sets vs text and by illustrating duration ("3:45"), segue, and set-break syntax. That overlap resolution is meaning the schema does not convey on its own.

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?

Opens with a specific verb+resource ("printable setlist for a gig or band") and enumerates the phrasings users actually say ("print our set list", "how long is our set"). It also names the two output artifacts (PDF and CSV), so an agent knows exactly what it produces.

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?

Explicitly scopes when to use it via trigger phrases, then routes between the three input modes (songs[] in play order, sets[] when sets are decided, text as a pasted-list fallback). It also states exclusions — no key/tempo/length lookup, no chord charts or lyrics — so the agent knows when to reach for something else.

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.

Resources