Analyze Progression
Tool name: analyze-progression
Analyzes a chord progression: returns the key, Roman numerals per chord, and detected cadences.
Annotations
Section titled “Annotations”| Hint | Value |
|---|---|
| readOnlyHint | ✓ |
| idempotentHint | ✓ |
| destructiveHint | — |
| openWorldHint | — |
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "chords": { "minItems": 1, "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Chord symbols in order, e.g. [\"Dm7\",\"G7\",\"Cmaj7\"]." }, "keyHint": { "description": "Optional key hint like \"C major\" or \"A minor\". When omitted, the key is inferred.", "type": "string", "minLength": 1 } }, "required": [ "chords" ], "additionalProperties": false}Output
Section titled “Output”Returned as structuredContent. The text rendering is a short human-readable summary.
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "key": { "type": "string", "description": "Detected (or hinted) key, e.g. \"C major\"." }, "romanNumerals": { "type": "array", "items": { "type": "string" }, "description": "Roman numeral label per chord, in order." }, "cadences": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "authentic", "perfect-authentic", "plagal", "half", "deceptive", "phrygian" ] }, "index": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991, "description": "Index of the resolving (second) chord." }, "chords": { "type": "array", "prefixItems": [ { "type": "string" }, { "type": "string" } ] }, "romans": { "type": "array", "prefixItems": [ { "type": "string" }, { "type": "string" } ] } }, "required": [ "type", "index", "chords", "romans" ], "additionalProperties": false }, "description": "Detected cadences, each at the index of the resolving chord." }, "modulations": { "type": "array", "items": { "type": "object", "properties": { "fromIndex": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "toIndex": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "fromKey": { "type": "string" }, "toKey": { "type": "string" }, "pivot": { "type": "string" } }, "required": [ "fromIndex", "toIndex", "fromKey", "toKey" ], "additionalProperties": false }, "description": "Detected key changes (empty in v1; reserved for a later phase)." } }, "required": [ "key", "romanNumerals", "cadences", "modulations" ], "additionalProperties": false}