Skip to main content
Glama
dmpeters
by dmpeters

good_wook 🐟

A free, non-commercial conversational Phish MCP — a natural-language front end to the band Phish's show history, usable from Claude / claude.ai.

It is a live proxy over the Phish.net API v5. It does not scrape, store, or redistribute setlist data — every answer is fetched live and credited to Phish.net. Short-lived caching is used only to reduce load. Data: Phish.net.

good_wook is an independent fan tool, not affiliated with Phish.net or Phish.

Use it

The server is live at https://good-wook.mino-yakking.com/mcp (Streamable HTTP).

Add it as a custom connector in claude.ai (Settings → Connectors → Add custom connector), paste the URL above, then just ask:

  • "What's the latest Phish show?"

  • "What did Phish play on this day in history?"

  • "How many times have they played Tweezer, and what's the current gap?"

  • "Give me a random Phish show."

Custom connectors require a paid Claude plan.

good_wook uses the Phish.net API under its published API terms: every answer is fetched live per user request, nothing is stored or redistributed, and every response carries Phish.net attribution.

Related MCP server: Sessionize

How it works

Phish.net runs on the Songfish platform. The live client + formatter are a small core, with Phish.net specifics isolated to config — base URL, API key, and constants.FIELD_MAP for Phish.net's field names.

A Cloudflare Worker (McpAgent + Durable Object) serves the MCP over Streamable HTTP, edge-caches upstream responses, and rate-limits per client. A Python stdio server (src/good_wook/) mirrors the same tools for local use.

API key — Phish.net v5 requires one (request at phish.net/api). It is read from PHISHNET_API_KEY locally and from a Cloudflare secret in the Worker; it is never committed. Offline tests pass without a key.

Tools (11)

ping, get_setlist, latest_show, this_day_in_history, search_shows, random_show, song_stats (incl. current gap), song_history, jam_chart, venue_info, upcoming_shows.

A corpus-wide biggest-gaps leaderboard is intentionally omitted — it needs stored aggregates, which the no-storage design (and Phish.net's terms) disallow. Per-song current gap lives in song_stats. A top-rated-shows tool is likewise omitted: Phish.net v5 exposes no sortable show rating.

Develop

uv sync
uv run pytest            # offline tests (format + client + normalization)
PHISHNET_API_KEY=... uv run python scripts/spike.py   # once you have a key
PHISHNET_API_KEY=... uv run good_wook                 # stdio MCP for Claude Code

Attribution & license

Independent fan project, run non-commercially. Not affiliated with Phish.net or Phish. Setlist data © Phish.net — the data is theirs, served live under attribution and not covered by this repo's license.

The good_wook source is MIT licensed (LICENSE).

Available Tools

11 tools
get_setlistC

Phish setlist for a given date (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state that this is a read-only operation, any error conditions, or what the response contains beyond 'setlist', leaving the agent without important context.

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 description is a single concise phrase with no unnecessary words, but it is perhaps too terse to fully convey the tool's behavior and parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, one sentence covers the core purpose, but it omits the include_related parameter and fails to differentiate from sibling tools, making it incomplete for an agent to use effectively.

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

Parameters2/5

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

The description explains the date format ('YYYY-MM-DD') but makes no mention of the optional 'include_related' boolean parameter, which is left completely unexplained. Since schema coverage is 0%, the description must compensate but only covers one of two parameters.

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?

The description clearly identifies the resource (Phish setlist) and the key parameter (date) with format, but lacks an explicit verb; the tool name supplies it. It distinguishes from siblings like random_show and latest_show by specifying 'a given date'.

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

Usage Guidelines2/5

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

The description implies usage for a specific date but offers no guidance on when to use an alternative tool, such as random_show for random shows or search_shows for finding shows by criteria.

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

jam_chartA

Notable jams from the Phish.net jam charts, optionally filtered to one song.

ParametersJSON Schema
NameRequiredDescriptionDefault
songNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It merely states what the tool returns ('notable jams'), but does not explain potential side effects, permissions, or any nuances like how 'notable' is determined, whether results are ordered, or how the limit parameter affects output. For a read-only data retrieval tool, this is a significant omission.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core function. There is no redundant information, and every word contributes to understanding the tool's purpose. It is both efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description does not need to explain return values. However, the description is quite minimal and leaves out important context such as what 'notable' means, any limits on the number of jams returned, and whether the tool supports further filtering beyond song. This is sufficient for a simple query but not rich enough for full contextual completeness.

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?

The schema has no descriptions, so the description must compensate. It does clarify that 'song' is an optional filter, but it fails to explain the 'limit' parameter, which is present in the schema with a default of 25. This leaves the agent uncertain about how to use limit or what its effect is. The description adds some meaning but not enough to fully compensate for the 0% schema coverage.

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 clearly states the tool returns 'Notable jams from the Phish.net jam charts' with an optional filter by song. The verb 'returns' is implied, and the resource is specific (jam charts), making it easy to understand what the tool does. This also distinguishes it from sibling tools like get_setlist or song_stats, which focus on other data types.

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?

The description gives a hint of when to use the tool (when you want jam chart data) but provides no explicit guidance on when not to use it or how it compares to alternatives like song_history or song_stats. The 'optionally filtered to one song' implies a use case, but there are no exclusions or alternative tool references, leaving usage somewhat implied.

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

latest_showC

The most recent show's setlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

There are no annotations, and the description does not disclose behavioral traits such as whether the operation is read-only, requires authentication, has rate limits, or returns partial data. It also does not state what the output format is beyond 'setlist,' so side effects and response structure are opaque.

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 description is a single sentence with no fluff or redundancy. It is efficiently worded and front-loaded with the core action ('most recent show's setlist'), though it omits important details that would not compromise conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the optional parameter and lack of output schema details, the description is incomplete. It does not explain the parameter's meaning, describe the expected output structure, or clarify the domain-specific notion of a 'show,' leaving critical gaps for an agent trying to use the tool correctly.

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

Parameters1/5

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

The only parameter, include_related, is not explained in the description or schema. With 0% schema description coverage, the description's failure to elaborate on 'related' leaves the parameter's purpose completely ambiguous, making it impossible for an agent to decide whether to set it to true or false.

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?

The description clearly states that the tool returns the most recent show's setlist, which is a specific and unambiguous purpose. It distinguishes itself from sibling tools like random_show or search_shows by using 'most recent,' though it does not define what constitutes a 'show' in this context.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention sibling tools or conditions under which latest_show is preferred, leaving the agent to infer usage solely from the phrase 'most recent show's setlist.'

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

pingA

Health check and a manifest of what good_wook can do.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden. It reveals that the tool returns a health status and a list of capabilities, but doesn't elaborate on side effects (likely none), authentication requirements, or exact behavioral nuances. This is adequate for a simple ping tool but not rich in detail.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the tool's dual purpose without unnecessary verbosity. Every word earns its place, making it highly concise and well-structured.

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?

Given the tool's simplicity (zero parameters, output schema present), the description is sufficiently complete. It explains what the tool does and the output schema covers return values, so no further elaboration is needed for an agent to select and invoke it correctly.

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 has zero parameters, so there are no semantics to clarify. The description doesn't need to compensate for missing parameter documentation; the baseline of 4 applies since the schema is empty and no parameter guidance is required.

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?

The description clearly identifies the tool as a health check and capability manifest. It uses specific terms ('health check', 'manifest') that convey the tool's purpose, though it doesn't explicitly distinguish itself from sibling tools by name.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description doesn't mention any context, prerequisites, or exclusions, leaving the agent to infer usage based on the generic 'health check' label.

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

random_showA

A random Phish show, with its full setlist.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description is the sole source of behavioral information. It clearly indicates a read operation that returns a random show and its setlist, which is sufficient for a simple query tool. It adds the detail of 'full setlist' beyond the tool name.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys all essential information without unnecessary words. It is perfectly front-loaded and easy to parse.

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 zero-parameter tool with an output schema, the description is complete. It states what is returned, and the output schema covers the structure of the result. No additional context is necessary.

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 has zero parameters, so the baseline score is 4. The description adds no parameter information, which is appropriate since none exist and the schema footprint is empty.

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 clearly states that the tool returns a random Phish show with its full setlist. This identifies the specific resource (Phish show) and the action (random selection), distinguishing it from siblings like get_setlist (specific show) and latest_show (most recent).

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?

The description implies usage when a random show is desired, but it does not explicitly state when to use this tool versus alternatives such as get_setlist or search_shows. No exclusions or alternative guidance is provided.

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

search_showsB

Find shows by year, city, and/or venue name.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
yearNo
limitNo
venueNo
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic search function and does not mention any behavioral traits such as being read-only, how results are ordered, what 'include_related' does, or any other limitations. This is a significant gap for a search tool with hidden complexities.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the tool's purpose. It avoids unnecessary detail and every word earns its place, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has five parameters, no required inputs, and an output schema, the description is too sparse. It does not explain the behavior of 'include_related' or 'limit', and the lack of usage guidance leaves the agent without a complete picture. The output schema might clarify return values, but the description fails to cover key parameters and behavioral context.

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?

The description mentions three of the five parameters (year, city, venue), giving them some semantic meaning as filter criteria. However, it completely omits 'limit' and 'include_related', leaving those parameters unexplained. The schema coverage is 0%, so the description only partially compensates for the lack of parameter documentation.

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 clearly states the tool's function with a specific verb ('Find') and resource ('shows'), and specifies the search criteria ('by year, city, and/or venue name'). This distinguishes it from sibling tools like 'random_show' or 'latest_show', which serve different purposes.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus its alternatives. It does not mention that 'random_show' or 'latest_show' are alternative ways to find shows, nor does it give any context for when a search is appropriate. Without such direction, the agent is left to infer usage entirely.

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

song_historyD

Every time a song has been played (most recent first).

ParametersJSON Schema
NameRequiredDescriptionDefault
songYes
limitNo
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.1/5.0
Behavior1/5

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

The description gives no indication of side effects, read-only nature, or any behavioral constraints. With no annotations to supplement, the agent has no basis to infer whether this is a safe query or if it might trigger mutations or external calls.

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

Conciseness2/5

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

The description is extremely brief, but it is a sentence fragment lacking a subject and verb, making it structurally incomplete. While conciseness is valued, the brevity here sacrifices clarity and does not form a coherent instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's apparent purpose (listing a song's play history) and multiple parameters, the description is drastically incomplete. It omits the input requirement, output format, pagination (via 'limit'), and the effect of 'include_related', leaving an agent without essential context to invoke the tool correctly.

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

Parameters1/5

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

The description does not mention any of the three parameters ('song', 'limit', 'include_related'), and the schema itself lacks descriptions for them. The agent cannot infer what values are appropriate for 'limit' or the meaning of 'include_related', nor confirm that 'song' expects an exact title, ID, or other identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Every time a song has been played (most recent first).' is a fragment that fails to clearly state the tool's function. It does not explicitly say it retrieves a song's performance history, nor does it mention the required 'song' input or what output to expect. This is ambiguous and insufficient for an agent to understand the tool's purpose.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool compared to siblings like 'song_stats' or 'search_shows'. The description does not distinguish its unique role (e.g., historical list of performances) from alternatives, leaving the agent without criteria for selection.

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

song_statsC

Stats for a song: times played, debut, last played, current gap, jamchart count.

ParametersJSON Schema
NameRequiredDescriptionDefault
songYes
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only names the stats but doesn't state whether this is a safe read operation, if any side effects exist, or what 'current gap' specifically means. It doesn't mention permissions, reversibility, or behavior beyond the stat names. While the output schema may clarify return values, the description itself adds little behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence with a colon and list. It is extremely concise and front-loaded, with no wasted words or fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a simple 2-parameter schema and output schema exists, the description doesn't need to explain return values, but it should clarify the meaning of the stats (e.g., 'current gap') and the purpose of include_related. It also lacks usage context relative to sibling tools. The description is too sparse to be considered complete for an agent to use correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any parameters. The 'song' parameter is implied but not detailed, and 'include_related' is completely unexplained. The description mentions stats but not how the parameters affect the output. Since the schema provides only names/types, the description must compensate, and it fails to do so.

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?

The description clearly indicates the tool returns stats for a song, enumerating the specific stats: times played, debut, last played, current gap, jamchart count. This distinguishes it from sibling tools like song_history (which focuses on history) and jam_chart (which focuses on jamcharts). However, the description uses the noun 'Stats' rather than an explicit verb like 'Get' or 'Retrieve', which slightly reduces clarity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify when to use song_stats instead of song_history or jam_chart, nor does it mention any context or prerequisites. There is no exclusion or alternative guidance, but the lack of any usage direction makes it hard for an agent to decide.

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

this_day_in_historyA

Every show played on a given calendar day (month 1-12, day 1-31), across years.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayYes
monthYes
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

The description conveys a read-only behavior with no side effects, but lacks detail on authentication, rate limits, or the effect of the optional include_related parameter. Without annotations, the agent is left with an incomplete behavioral model.

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

Conciseness5/5

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

The description is a single, concise sentence that directly conveys the core functionality without unnecessary verbosity or redundancy. It is well-structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the basic query parameters and their ranges, but it does not describe what the returned data contains (e.g., show details, venue, date). Even though an output schema is indicated, the agent lacks a clear expectation of the response structure, making the call less predictable.

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

Parameters2/5

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

The description only clarifies that month must be 1-12 and day 1-31, but does not explain the meaning or purpose of include_related. With three parameters and zero schema descriptions, the coverage is minimal, leaving a required parameter undocumented in terms of impact.

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 clearly states the tool's function: retrieving every show played on a given calendar day across years. The verb 'played' implies a read operation, and the scope (month/day, all years) is unambiguous, distinguishing it from other tools like search_shows or random_show.

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?

The description implies usage for a calendar-day lookup across years, but it does not explicitly state when to prefer this tool over siblings (e.g., search_shows). No conditions or alternatives are mentioned, leaving the agent to infer appropriate use.

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

upcoming_showsB

Announced upcoming shows (dates on or after today).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations to indicate side effects (e.g., read-only), and the description does not disclose any behavioral details beyond listing shows. Since the description carries the full burden without annotations, it lacks transparency about whether this operation modifies data or has other side effects.

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

Conciseness5/5

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

The description is a single sentence, extremely concise, and front-loaded with the core purpose. Every word serves a functional role, with no redundant phrasing or filler. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides basic scope (upcoming shows with dates on/after today) but lacks essential context, particularly the meaning of the include_related parameter. While output format is not required (schema exists), the missing parameter explanation leaves a significant gap for an agent to correctly invoke the tool with the desired behavior.

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

Parameters1/5

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

The only parameter, include_related, is not explained in the description or schema. Schema coverage for parameters is 0%, and the description fails to compensate by defining what 'related' means or how this boolean affects results. The agent is left guessing at its purpose.

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 clearly identifies the tool's function: listing shows that have been announced and that occur on or after today. It distinguishes itself from sibling tools like search_shows (searching), random_show (random selection), and latest_show (most recent).

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 context is implied rather than explicit. The description suggests it is for upcoming shows, but it does not explicitly state when to prefer this tool over alternatives like latest_show or search_shows. No clear 'use this when' or 'use that instead' guidance is provided.

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

venue_infoC

Venue metadata plus how many times Phish has played there.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It only mentions the output content and does not disclose side effects, safety profile, input format expectations, or error behavior. This is insufficient for a tool that could be queried with different venue representations.

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

Conciseness5/5

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

The description is a single concise sentence that directly states the essence of the tool. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (which reduces the need to document returns), the description lacks parameter explanation, usage guidance, and behavioral context. For a tool with one parameter and no annotations, this is incomplete.

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

Parameters1/5

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

The schema has one parameter 'venue' with zero description coverage. The description does not explain what format 'venue' should take (e.g., name, ID, city). It only describes the output, so the parameter remains ambiguous and the description fails to compensate for the schema gap.

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?

The description clearly identifies the resource (venue) and the output (metadata + play count). It distinguishes from sibling tools like get_setlist or song_history because it focuses on venue stats. However, it lacks a specific verb like 'retrieve' or 'get', so it stops short of a 5.

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

Usage Guidelines2/5

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

No guidance is provided for when to use this tool versus alternatives. The description only states what the tool returns, with no context about typical use cases, prerequisites, or exclusions from sibling tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedget_setlist
    • First observedjam_chart
    • First observedlatest_show
    • First observedping
    • First observedrandom_show
    • First observedsearch_shows
    • First observedsong_history
    • First observedsong_stats
    • First observedthis_day_in_history
    • First observedupcoming_shows
    • First observedvenue_info

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct query type: specific date setlists, random/latest showcases, historical calendar lookup, search, song history/stats, jam charts, venue info, and upcoming shows. Even the setlist-returning tools are clearly differentiated by their selection criteria.

Naming Consistency3/5

Tool names are all lowercase snake_case and mostly descriptive, but they mix verb-prefixed names (get_setlist, search_shows) with bare noun phrases (random_show, latest_show, song_history). This inconsistency is noticeable but the meaning is still clear.

Tool Count5/5

11 tools is well within the ideal 3-15 range. Each tool serves a specific fan-facing query need, and there is no bloat or redundancy in the count.

Completeness4/5

The surface covers the core Phish setlist database use cases: specific dates, random/latest, historical day, search, song-level history/stats, jam charts, venue info, and upcoming shows. Minor gaps exist like tour-based filtering or setlist-by-ID, but agents can generally accomplish what they need.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for accessing Sessionize event data. Query speakers, sessions, and schedules from any Sessionize-powered conference using natural language.
    6
    4
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that fetches real setlists from setlist.fm and creates Spotify playlists from them, supporting fuzzy matching and various modes like latest show or best-of from recent shows.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A remote MCP server for Spotify with brokered OAuth and server-side intelligence, enabling search, playlist management, playback control, library analysis, and listening trends via natural language.
    45 npm
    4
    MIT