Skip to main content
Glama

Analyze Harmony

analyze-harmony
Read-onlyIdempotent

Music theory helper: name a chord from notes, guess the key, get a progression, or list what fits a key. Returns both the ABC chord-symbol spelling (for play-sheet-music) and the Strudel form (for play-live-pattern). Tasks: detect-chord (notes -> chord name + what to play next), detect-key (notes or chords -> best key + diatonic chords), suggest-progression (key [+ romanNumerals] -> chord symbols), scale-for-chord (chords -> the scale to improvise over each), key-chords (key -> every diatonic triad, seventh, and chord scale). Use it before writing chord symbols for a style preset, or to check a harmonization.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoKey, e.g. "C", "A minor", "F# major". For suggest-progression/key-chords.
taskYesWhat to work out. detect-chord needs notes; detect-key needs notes or chords; scale-for-chord needs chords; suggest-progression/key-chords need a key.
notesNoNote names, e.g. ["c4","e4","g4","b4"] or ["C","Eb","G"]. For detect-chord/detect-key.
chordsNoChord symbols, e.g. ["Dm7","G7","Cmaj7"]. For detect-key/scale-for-chord.
romanNumeralsNoRoman numerals to render in the key, e.g. ["ii7","V7","Imaj7"] or ["I","V","vi","IV"]. Optional for suggest-progression — omit it to get common progressions instead.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / task / description
      Previous value: -"What to work out. detect-chord/detect-key need notes or chords; suggest-progression/key-chords need a key."New value: +"What to work out. detect-chord needs notes; detect-key needs notes or chords; scale-for-chord needs chords; suggest-progression/key-chords need a key."
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only, side-effect-free nature is covered. The description adds valuable behavioral detail beyond that: it states that the tool returns both ABC chord-symbol spelling (for play-sheet-music) and Strudel form (for play-live-pattern), which tells the agent what outputs to consume. It also notes that omitting romanNumerals yields common progressions, adding a behavioral nuance not in the schema or annotations.

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 dense but well-structured: it leads with a one-line purpose, then lists output forms, then breaks down each task with inputs and outputs. Every sentence adds information—no filler or tautology. It is on the longer side but justified by the breadth of five distinct tasks. The front-loading of purpose and task list helps an agent quickly grasp the tool's function.

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?

There is no output schema, so the description must convey what results look like; it does this by stating each task's output (e.g., 'notes -> chord name + what to play next', 'key -> every diatonic triad, seventh, and chord scale'). It covers all five tasks, their inputs, and the dual output formats. While it doesn't discuss error handling or edge cases, for a read-only analysis tool with full schema coverage this is sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so every parameter is already documented. The description adds useful guidance on parameter usage, such as mapping tasks to required inputs and explicitly noting that romanNumerals is optional and should be omitted for common progressions. This goes beyond the schema's per-field descriptions by clarifying inter-parameter dependencies and the conditional nature of optional parameters.

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 opens with a clear, specific statement of purpose: 'Music theory helper: name a chord from notes, guess the key, get a progression, or list what fits a key.' It enumerates all five tasks explicitly and states that output includes both ABC chord-symbol and Strudel forms. This is a distinct resource (music theory analysis) with no confusion with sibling tools like conversion or playback.

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 provides a concrete use case: 'Use it before writing chord symbols for a style preset, or to check a harmonization.' It also details which input each task requires (e.g., 'detect-chord needs notes'). While it doesn't explicitly say when NOT to use it or name alternative tools, the task enumeration and input requirements make the appropriate usage clear enough for correct selection.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.