Skip to main content
Glama

Server Details

Anonymous public tools for Zachary Roth Music. See the published agent boundary before use.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

10 tools
analyze_cyclic_scaleAnalyze Cyclic ScaleA
Read-only
Inspect

Use this when an agent needs to analyze one bounded cyclic interval word, including its pitch path, rotations, reversal partners, reflection class, and limited-transposition status. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
modulusYes
intervalWordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable constraints: the analysis is scoped to a single bounded cyclic interval word and explicitly warns against inferring ownership/licensing. This aligns with openWorldHint=false and adds context beyond annotations.

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?

Two sentences, no filler. The first sentence front-loads the purpose and expected outputs; the second clearly states a boundary. Every word earns its place.

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

Completeness4/5

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

With an output schema present and annotations covering safety, the description covers the essential behavioral scope and boundary. The only notable gap is parameter semantics, which is somewhat mitigated by the schema's clear constraints, so it is not severely incomplete.

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?

Schema description coverage is 0%, so the description must compensate, but it does not explain what 'modulus' means or how 'intervalWord' relates to the cyclic interval word beyond naming it. The description mentions the resource type but leaves parameter semantics largely to the schema, which is insufficient given zero 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?

Description uses specific verb 'analyze' with a well-defined resource ('one bounded cyclic interval word') and enumerates the exact outputs (pitch path, rotations, reversal partners, reflection class, limited-transposition status). This clearly distinguishes it from siblings like generate_cyclic_scales or export_cyclic_scale_musicxml.

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?

Description opens with 'Use this when an agent needs to analyze...' providing a clear invocation context. It also adds an exclusion boundary ('Do not infer ownership, licensing, or unpublished availability'), which helps prevent misuse. However, it does not explicitly mention when not to use it or name an alternative tool.

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

calculate_equal_division_frequencyCalculate Equal Division FrequencyA
Read-only
Inspect

Use this when an agent needs to calculate one deterministic frequency in an equal division of the octave with an optional concert-root transposition. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionYes
baseFrequencyNo
rootSemitonesNo
divisionsPerCycleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already state readOnlyHint=true and destructiveHint=false, so the tool is known to be safe. The description adds useful context by emphasizing that the result is deterministic and warns against inferring ownership, licensing, or unpublished availability, which goes beyond the annotations to constrain agent behavior after the call.

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 tightly written, front-loading the core purpose and then adding a brief cautionary sentence. Every sentence serves a clear function, and it is appropriately sized for the simplicity of the tool.

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?

With an output schema present, return-value documentation is not needed. However, because the input schema has zero documentation and the description does not clarify parameter meanings or the frequency formula, the tool is not fully self-contained. The mapping between 'division' and 'divisionsPerCycle' is especially ambiguous, which could lead to incorrect invocation.

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?

No parameter descriptions exist in the schema, so the description must compensate. While 'equal division of the octave' and 'concert-root transposition' hint at divisionsPerCycle, division, baseFrequency, and rootSemitones, none of the four parameters is explicitly defined or mapped to these concepts. An agent is left guessing what 'division' means (e.g., index vs. count) and how baseFrequency relates to the other inputs.

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 a specific action: 'calculate one deterministic frequency in an equal division of the octave with an optional concert-root transposition.' This distinguishes it from sibling tools by focusing on a single computed frequency rather than scale generation or retrieval, though it does not name alternatives explicitly.

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?

The opening 'Use this when an agent needs to calculate...' gives a clear condition for appropriate use. No exclusions or alternatives are provided, but the context shown is enough to understand when this tool should apply.

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

export_cyclic_scale_musicxmlExport Cyclic Scale MusicxmlB
Read-only
Inspect

Use this when an agent needs to create a bounded, two-measure MusicXML representation of a 12-division cyclic scale for local import. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNo
modulusYes
intervalWordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the description doesn't need to restate safety. The description adds a useful scope constraint ('bounded, two-measure', 'for local import') and a warning about not inferring ownership/licensing, which provides context beyond annotations but doesn't dive into side effects or permission requirements.

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 concise, two sentences, with the key usage scenario front-loaded. The second sentence about ownership/licensing is a useful caveat but could be seen as tangential. Overall, it's efficient and well-structured.

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 output schema exists, return format details aren't needed. However, the input schema has no parameter descriptions, and the tool description does nothing to compensate. An agent given the schema and description alone would struggle to understand what values to pass, especially for 'intervalWord'. The presence of sibling tools and annotations helps, but the parameter gap makes this 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?

Schema description coverage is 0%, meaning the input schema has no descriptions for 'root', 'modulus', or 'intervalWord'. The description does not explain any of these parameters, nor does it define what 'intervalWord' means or how root relates to the scale. The only clue is '12-division', hinting at modulus=12, but this is insufficient for an agent to correctly construct the intervalWord array.

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 a specific verb + resource: 'create a bounded, two-measure MusicXML representation of a 12-division cyclic scale.' This distinguishes it from sibling tools like analyze_cyclic_scale or generate_cyclic_scales, 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 Guidelines4/5

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

It explicitly provides a use case: 'when an agent needs to create a bounded, two-measure MusicXML representation ... for local import.' However, it doesn't explicitly contrast with alternatives or state when not to use it, though sibling names imply distinction.

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

generate_cyclic_scalesGenerate Cyclic ScalesA
Read-only
Inspect

Use this when an agent needs to generate at most 24 canonical cyclic interval words under bounded equal-division, cardinality, interval, reflection, and transpositional-symmetry constraints. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYes
maxStepYes
modulusYes
reflectionNoany
limitedTranspositionNoany

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already set readOnlyHint=true and destructiveHint=false, so the description adds further behavioral detail: it caps output at 24 items and warns against inferring ownership/licensing. This exceeds what annotations provide and does not contradict them.

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 two sentences with no redundancy. The core purpose is front-loaded, and the additional warning is brief and relevant. Every word earns its place.

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 the presence of an output schema and annotations, some context is already covered. However, with 5 parameters including enums, the description lacks explicit parameter semantics, which could lead to incorrect invocation. The warning about ownership/licenses adds tangential context but does not fill the parameter gap.

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?

Schema description coverage is 0%, so the description must compensate. It mentions constraint categories like equal-division, cardinality, interval, reflection, and transpositional symmetry, which hint at the parameters' roles, but it does not explicitly define each parameter's meaning or range. This is partial compensation.

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 states a specific verb ('generate') and resource ('canonical cyclic interval words'), and notes the bounded constraints and maximum count of 24. This clearly differentiates it from sibling analysis tools like analyze_cyclic_scale.

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?

The opening 'Use this when an agent needs to generate...' provides an explicit context for when the tool is appropriate. It does not explicitly mention when not to use it or alternative tools, but the usage condition is clear.

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

get_compositionGet CompositionB
Read-only
Inspect

Use this when an agent needs to get public recordings matching a composition title. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful context by specifying that only 'public recordings' are returned and warns against inferring ownership, licensing, or unpublished availability. This goes beyond what annotations provide without contradicting them.

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?

Two sentences with no filler. The primary use case is front-loaded, and the caution follows succinctly. Every sentence 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 ambiguity around the 'id' parameter and the mismatch with 'composition title', the description is incomplete for safe invocation. An agent cannot confidently determine what identifier to provide. The existence of an output schema does not mitigate this input-side gap.

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, 'id', with no description (0% schema coverage), so the description must explain it. It does not; further, the description mentions 'composition title' but the parameter is 'id', creating confusion about what to pass. No guidance is given on what the id represents or how to obtain it.

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

Purpose3/5

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

The description states a specific verb and resource ('get public recordings matching a composition title'), but the tool name is 'get_composition' and the input schema takes a single 'id', not a title. This mismatch makes it unclear whether the tool retrieves compositions or recordings, and how the id relates to the described behavior. It does not strongly differentiate from sibling tools like get_release or get_track.

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?

The description opens with an explicit 'Use this when...' trigger, giving clear context for when the tool is appropriate. The additional instruction 'Do not infer ownership, licensing, or unpublished availability' provides a useful boundary. However, it does not mention alternative siblings or conditions for choosing another tool.

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

get_releaseGet ReleaseA
Read-only
Inspect

Use this when an agent needs to get one public release by slug. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and destructiveHint, so the tool is known to be safe. The description adds a caution about not inferring ownership, licensing, or unpublished availability, which clarifies what the response does not include. This is useful but not a deep behavioral disclosure.

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?

Two concise sentences with no filler. The usage condition is front-loaded, and the clarification about what not to infer is succinct.

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 covers the main action and adds an important constraint, but it does not mention how to obtain a valid slug (e.g., using list_releases) or discuss edge cases such as nonexistent or non-public slugs. Since the tool is simple and an output schema exists, these are minor but prevent a higher score.

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 description coverage is 0%, leaving the description to explain the id parameter. The phrase 'get one public release by slug' indicates that the id parameter expects a slug value, adding crucial semantics beyond the bare 'id' string.

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?

Description states the tool retrieves a single public release identified by slug, which clearly identifies the action and resource. It does not explicitly name sibling differentiation but the verb+resource is clear.

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?

Description starts with 'Use this when an agent needs to get one public release by slug,' providing an explicit condition for use. No alternative tools are mentioned, but the condition itself gives clear guidance.

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

get_sheet_musicGet Sheet MusicA
Read-only
Inspect

Use this when an agent needs to check for an explicitly published sheet-music resource. Never infers rights or availability. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Given annotations already declare readOnlyHint=true and destructiveHint=false, the description adds valuable behavioral context: the tool only recognizes explicitly published resources and must not be used to infer rights, ownership, licensing, or unpublished availability. This goes beyond the annotations and prevents misuse.

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?

Two sentences, no fluff. The first sentence states the use case; the second sentence provides necessary negative constraints. Every word earns its place.

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

Completeness4/5

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

The tool is simple (one parameter) and has an output schema, so the description doesn't need to explain return values. It covers the key behavioral constraint. Minor gap: it doesn't clarify what happens if no matching resource exists, but that is not essential for selecting/invoking 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 input schema has one parameter 'id' with 0% description coverage, and the description adds no explanation about what 'id' refers to or how to format it. Although the parameter name is self-explanatory, the description provides no semantic value beyond the schema itself.

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 states a specific action (check for) and resource type (explicitly published sheet-music resource), with explicit constraints. It clearly differentiates from sibling tools like get_track or get_composition by focusing on sheet music and explicit publication.

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?

It explicitly says when to use ('when an agent needs to check for an explicitly published sheet-music resource') and provides strong 'when-not' guidance ('Never infers rights or availability. Do not infer ownership, licensing, or unpublished availability.'). It does not name specific alternative tools, but the usage boundary is clear.

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

get_trackGet TrackA
Read-only
Inspect

Use this when an agent needs to get one public track by blob identifier or title. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral nuance by restricting the tool to public tracks and specifying lookup keys, but it does not detail response behavior or error cases. Given that annotations carry the safety burden, the description's added context merits a 3, not lower.

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?

Two tight sentences with no filler. The primary use case is front-loaded, and the cautionary note is appended without bloat. Every word contributes to the agent's understanding.

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?

With only one parameter, a clear purpose, an output schema for return value structure, and annotations covering safety, the description is sufficient. The agent has everything needed to select and invoke the tool correctly. No critical gaps remain.

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 description coverage is 0%, so the description must compensate. It does by clarifying that the single required 'id' parameter can be either a blob identifier or a title. This directly adds meaning beyond the raw schema field. The guidance is a bit ambiguous about whether both types are accepted interchangeably, but it still provides essential semantic context.

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 uses a specific verb ('get'), identifies the resource ('one public track'), and specifies the lookup methods ('by blob identifier or title'). It clearly distinguishes this tool from sibling tools like get_composition or get_release by emphasizing 'public track' — an agent can tell what it does without needing to inspect the schema.

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?

The description states when to use the tool ('Use this when an agent needs to get one public track...') and provides an important exclusion ('Do not infer ownership, licensing, or unpublished availability'). It does not explicitly name an alternative tool, but the boundary condition ('public') implies when not to use it, leaving little ambiguity.

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

list_releasesList ReleasesA
Read-only
Inspect

Use this when an agent needs to list public album and release records. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds meaningful context beyond the annotations by emphasizing that only public records are returned and warning against inferring ownership, licensing, or unpublished availability. There is no contradiction with the annotation hints.

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 two short sentences with no filler. It front-loads the core purpose and then adds a single caution that clarifies the tool's scope, making every word count.

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?

With no parameters and a declared output schema, the description gives enough guidance for correct invocation. The added caution about whether ownership or licensing can be inferred is especially useful for an agent relying on returned data. No important invocation detail 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?

The input schema has zero parameters, so no parameter documentation is needed. According to the baseline for zero-parameter tools, the description earns a 4, and the description does not need to compensate for any schema gaps.

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 states a clear verb and resource: 'list public album and release records.' It also defines the scope as public-only and warns against inferring unpublished availability. However, it does not explicitly distinguish this tool from sibling tools like get_release or search_music, so it falls 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 Guidelines4/5

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

The description opens with 'Use this when an agent needs to list public album and release records,' providing an explicit trigger condition for use. It does not mention when not to use it or point to alternatives, but for a listing operation this is clear context without exclusions.

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

search_musicSearch MusicA
Read-only
Inspect

Use this when an agent needs to search the public music catalog. Do not infer ownership, licensing, or unpublished availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, non-destructive operation. The description goes further by scoping results to the 'public music catalog' and warning not to infer ownership, licensing, or unpublished availability. This adds meaningful behavioral context about the tool's limitations that the annotations do not carry.

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 just two sentences. The first sentence front-loads the purpose and usage condition; the second adds a concise and valuable caution. No words are wasted.

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

Completeness4/5

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

For a simple one-parameter search tool with read-only annotations and an output schema, the description provides the essential context: what catalog is searched and what the results do not indicate. The only noticeable gap is the lack of explicit query parameter semantics, which is already reflected in the parameter_semantics score.

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 schema has zero description coverage for the query parameter, and the description does not explain what the query should represent (e.g., keyword, song title, artist). It only states the overall action of searching the catalog, leaving the description to infer the parameter's meaning from the tool name. This fails to compensate for the absent schema descriptions.

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 states a clear verb and resource: 'search the public music catalog'. This function is obviously distinct from sibling getters (get_track, get_release) and list_releases, as it is the only search operation. The wording is specific and not a tautology of the title.

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?

The sentence 'Use this when an agent needs to search the public music catalog' gives an explicit trigger condition for invocation, which is clear context. However, it doesn't explicitly name exclusions or alternative tools for when a specific known item is needed, so it doesn't earn a 5.

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. Dates show when Glama detected each change.

  1. 10 tool updates
    • Changedanalyze_cyclic_scale8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / intervalWord
        Added value: +{
        +  "items": {
        +    "maximum": 16,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "maxItems": 10,
        +  "minItems": 2,
        +  "type": "array"
        +}
      • addedInput schema / properties / modulus
        Added value: +{
        +  "maximum": 16,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / required
        Added value: +[
        +  "modulus",
        +  "intervalWord"
        +]
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedcalculate_equal_division_frequency10 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / baseFrequency
        Added value: +{
        +  "default": 261.63,
        +  "maximum": 20000,
        +  "minimum": 20,
        +  "type": "number"
        +}
      • addedInput schema / properties / division
        Added value: +{
        +  "maximum": 16,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / divisionsPerCycle
        Added value: +{
        +  "maximum": 16,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / properties / rootSemitones
        Added value: +{
        +  "default": 0,
        +  "maximum": 11,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / required
        Added value: +[
        +  "divisionsPerCycle",
        +  "division"
        +]
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedexport_cyclic_scale_musicxml9 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / intervalWord
        Added value: +{
        +  "items": {
        +    "maximum": 16,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "maxItems": 10,
        +  "minItems": 2,
        +  "type": "array"
        +}
      • addedInput schema / properties / modulus
        Added value: +{
        +  "const": 12,
        +  "type": "number"
        +}
      • addedInput schema / properties / root
        Added value: +{
        +  "default": 0,
        +  "maximum": 11,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / required
        Added value: +[
        +  "modulus",
        +  "intervalWord"
        +]
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedgenerate_cyclic_scales11 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limitedTransposition
        Added value: +{
        +  "default": "any",
        +  "enum": [
        +    "any",
        +    "yes",
        +    "no"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / maxStep
        Added value: +{
        +  "maximum": 8,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / modulus
        Added value: +{
        +  "maximum": 16,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / properties / notes
        Added value: +{
        +  "maximum": 10,
        +  "minimum": 2,
        +  "type": "integer"
        +}
      • addedInput schema / properties / reflection
        Added value: +{
        +  "default": "any",
        +  "enum": [
        +    "any",
        +    "mixed",
        +    "self",
        +    "paired",
        +    "external"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "modulus",
        +  "notes",
        +  "maxStep"
        +]
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedget_composition3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedget_release3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedget_sheet_music3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedget_track3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedlist_releases3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
    • Changedsearch_music3 fields changed
      • addedOutput schema / additionalProperties / $ref
        Added value: +"#/definitions/__schema0"
      • removedOutput schema / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "items": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/additionalProperties"
        -    },
        -    "type": "object"
        -  }
        -]
      • addedOutput schema / definitions
        Added value: +{
        +  "__schema0": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/definitions/__schema0"
        +        },
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    ]
        +  }
        +}
  2. 10 tool updates
    • First observedanalyze_cyclic_scale
    • First observedcalculate_equal_division_frequency
    • First observedexport_cyclic_scale_musicxml
    • First observedgenerate_cyclic_scales
    • First observedget_composition
    • First observedget_release
    • First observedget_sheet_music
    • First observedget_track
    • First observedlist_releases
    • First observedsearch_music

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation5/5

Every tool targets a distinct resource or action: theory tools cover analyze/generate/calculate/export, catalog tools are split by resource type (composition, release, track, sheet music) and are clearly named. The only potential overlap is search_music vs list_releases, but one is query-based search and the other is a full listing, so ambiguity is minimal.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern. Verbs change appropriately by operation (get, list, search, generate, analyze, calculate, export), and noun phrases are descriptive and parallel across resources. There are no mixed conventions or vague verbs.

Tool Count5/5

With 10 tools, the server balances two clear purpose clusters—music theory utilities and a read-only catalog—without feeling bloated. Each tool serves a specific need, and the count is within the ideal range for a specialized MCP server.

Completeness4/5

The catalog side provides list, get, and search for major resources, but there is no list_tracks or list_compositions; agents may need to rely on search_music or get_release to enumerate those. The theory side covers generation, analysis, calculation, and export, though one could imagine additional transformations (e.g., transposition helpers), so the overall surface is nearly complete but has minor workaround gaps.

Resources