{"openapi":"3.1.0","info":{"title":"Chord API","version":"0.1.0","description":"Music theory: chords, scales, keys, progressions, transposition, intervals, guitar fretboard shapes, note/frequency conversion, circle of fifths — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://chord.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/chord/docs"},"termsOfService":"https://connectorbay.com/chord/terms"},"servers":[{"url":"https://chord.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/chord/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/chord_notes":{"post":{"operationId":"chord_notes","summary":"Notes, intervals and formula of a chord symbol, with slash-chord bass support. Use for \"what notes are in","description":"Notes, intervals and formula of a chord symbol, with slash-chord bass support. Use for \"what notes are in\n    Cmaj7\", \"what's a G7#9\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chord":{"description":"Chord symbol.","examples":["Cmaj7","F#m7b5","G7#9","Asus4/E","Dm"],"title":"Chord","type":"string"}},"required":["chord"],"title":"chord_notesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/chord_identify":{"post":{"operationId":"chord_identify","summary":"Identify which chord(s) a set of notes could be. Use for \"what chord is A C# E G\".","description":"Identify which chord(s) a set of notes could be. Use for \"what chord is A C# E G\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"notes":{"description":"Note names, e.g. ['A','C#','E','G'].","items":{"type":"string"},"title":"Notes","type":"array"},"bass":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Lowest-sounding note, to prefer that inversion.","title":"Bass"}},"required":["notes"],"title":"chord_identifyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/scale_notes":{"post":{"operationId":"scale_notes","summary":"Notes of a scale or mode in any key. Use for \"notes of D dorian\", \"A minor pentatonic scale\".","description":"Notes of a scale or mode in any key. Use for \"notes of D dorian\", \"A minor pentatonic scale\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"root":{"description":"Root note.","examples":["C","F#","Bb"],"title":"Root","type":"string"},"scale":{"default":"major","description":"Scale/mode name: major, natural_minor, harmonic_minor, melodic_minor, dorian, phrygian, lydian, mixolydian, locrian, major_pentatonic, minor_pentatonic, blues, whole_tone, chromatic.","title":"Scale","type":"string"}},"required":["root"],"title":"scale_notesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/key_info":{"post":{"operationId":"key_info","summary":"Key signature (sharps/flats), relative and parallel key, and the full diatonic chord set with roman numerals.","description":"Key signature (sharps/flats), relative and parallel key, and the full diatonic chord set with roman numerals.\n    Use for \"key signature of E minor\", \"diatonic chords in G major\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key":{"description":"Key, e.g. 'G major' or 'E minor' (major assumed if omitted).","examples":["G major","E minor","Bb"],"title":"Key","type":"string"}},"required":["key"],"title":"key_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/progression_build":{"post":{"operationId":"progression_build","summary":"Turn roman numerals into real chords in a key, and name the progression if it's a well-known one (I-V-vi-IV,","description":"Turn roman numerals into real chords in a key, and name the progression if it's a well-known one (I-V-vi-IV,\n    ii-V-I, 12-bar blues, etc). Use for \"turn I-V-vi-IV into chords in G\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key":{"description":"Key, e.g. 'G major' or 'A minor'.","title":"Key","type":"string"},"roman_numerals":{"description":"Roman numerals in that key.","examples":[["I","V","vi","IV"],["ii","V","I"]],"items":{"type":"string"},"title":"Roman Numerals","type":"array"}},"required":["key","roman_numerals"],"title":"progression_buildArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/transpose":{"post":{"operationId":"transpose","summary":"Transpose a list of chords or notes by semitones, or from one key to another. Use for \"transpose this","description":"Transpose a list of chords or notes by semitones, or from one key to another. Use for \"transpose this\n    progression up a whole step\", \"transpose from G to Bb\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"items":{"description":"Chord symbols or note names to transpose.","items":{"type":"string"},"title":"Items","type":"array"},"semitones":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Semitones to shift (can be negative).","title":"Semitones"},"from_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Original key, if using from/to instead of semitones.","title":"From Key"},"to_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Target key, if using from/to instead of semitones.","title":"To Key"}},"required":["items"],"title":"transposeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/interval_between":{"post":{"operationId":"interval_between","summary":"The named interval and consonance between two notes. Use for \"interval between C and G\".","description":"The named interval and consonance between two notes. Use for \"interval between C and G\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"note1":{"description":"First note.","title":"Note1","type":"string"},"note2":{"description":"Second note.","title":"Note2","type":"string"}},"required":["note1","note2"],"title":"interval_betweenArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/guitar_chord_shapes":{"post":{"operationId":"guitar_chord_shapes","summary":"Genuinely computed playable fretboard shapes for any chord (a real fretboard search, not a fixed lookup","description":"Genuinely computed playable fretboard shapes for any chord (a real fretboard search, not a fixed lookup\n    table), ranked by playability, in standard or alternate tunings. Use for \"guitar shapes for Bm7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chord":{"description":"Chord symbol.","examples":["Bm7","Cmaj7","F","D/F#"],"title":"Chord","type":"string"},"tuning":{"default":"standard","description":"standard | drop_d | open_g | open_d | dadgad | half_step_down | ukulele | bass_standard","title":"Tuning","type":"string"},"max_fret":{"default":5,"maximum":12,"minimum":0,"title":"Max Fret","type":"integer"},"limit":{"default":5,"maximum":20,"minimum":1,"title":"Limit","type":"integer"}},"required":["chord"],"title":"guitar_chord_shapesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/note_frequency":{"post":{"operationId":"note_frequency","summary":"Convert a note+octave to its frequency in Hz, or a frequency to the nearest note and cents off (a tuner).","description":"Convert a note+octave to its frequency in Hz, or a frequency to the nearest note and cents off (a tuner).\n    Give exactly one of note or frequency_hz. Use for \"frequency of A4\", \"what note is 220 Hz\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Note with octave, e.g. A4 or C#3.","title":"Note"},"frequency_hz":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"A frequency in Hz to convert to the nearest note (tuner mode).","title":"Frequency Hz"},"a4_hz":{"default":440.0,"maximum":480,"minimum":400,"title":"A4 Hz","type":"number"}},"title":"note_frequencyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/circle_of_fifths":{"post":{"operationId":"circle_of_fifths","summary":"The circle of fifths: all 12 major keys with relative minors and key signatures. Use for \"circle of fifths\",","description":"The circle of fifths: all 12 major keys with relative minors and key signatures. Use for \"circle of fifths\",\n    \"what's next to D on the circle of fifths\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"highlight":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A major key to highlight in the circle, e.g. 'D'.","title":"Highlight"}},"title":"circle_of_fifthsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}