Ask a music theory or guitar question to the Guitar Alchemist AI agent. Routes to the appropriate tool bundle (theory, technique, tab, composer, ga-musician, teacher, coach) and returns a grounded answer. Use when the user asks "ask GA X", "what does the guitar agent say about X", or any music theory/guitar question directed at the GA ecosystem. Supports demo mode: invoke with "demo" or "examples" as the arg to see 3 curated example Q&As covering beginner theory, intermediate improvisation, and technique/injury scenarios.
Ask a music theory, guitar technique, tablature, composition, synthesis, pedagogy, or practice question to the Guitar Alchemist (GA) AI agent. The agent uses the single-orchestrator + MCP tool-bundle architecture to answer grounded in computed music theory (not hallucinated).
GA uses 1 orchestrator LLM + 7 MCP tool bundles + shared blackboard state per contracts/ga-orchestrator-architecture.md v2.0.0. Routing happens natively via LLM tool selection — no separate router/coordinator.
The 7 tool bundles:
| Bundle | Handles | Example Questions |
|---|---|---|
theory-tools | Chord analysis, scales, intervals, voice leading, key detection | "What notes in F#m7b5?", "What scale over Dm7?" |
technique-tools | Fingering, ergonomics, stretch analysis, injury prevention | "Comfortable Bbmaj9 voicing?", "My wrist hurts after barre chords" |
tab-tools | Tab parsing, notation conversion, playability check, transposition |
| "Parse this tab", "Transpose to Drop D" |
composer-tools | Progression generation, reharmonization, substitution, modal interchange | "Jazz ii-V-I in C", "Reharmonize Autumn Leaves bridge" |
ga-musician-tools | Spectral synthesis, Karplus-Strong, guitar profiles, tone analysis (external .NET runtime) | "How does Karplus-Strong model a plucked string?" |
teacher-tools | Course lookup, curriculum sequencing, gap identification, adaptive difficulty | "What should I learn after CAGED?", "Explain modes for beginner" |
coach-tools | Practice routine generation, progress tracking, plateau detection | "Design a daily practice routine", "Why am I not improving?" |
Determine which tool bundle(s) the question would invoke:
The GA MCP server provides live computation via tools. Check if it's reachable:
# If GA MCP server is configured as an MCP server in this Claude Code session,
# the tools will be available as mcp__ga__* in ToolSearch.
# Search for them:
Use ToolSearch with query "ga music theory" to find any available GA MCP tools.
If MCP server is available: Call the appropriate tools directly and compose the answer from tool outputs.
48 tools work out-of-the-box (pure in-process, no external deps). 12 tools need GA API server running on port 7001 (HTTP-backed endpoints).
Diagnostics:
Echo(message) → "Hello from C#: <message>"ReverseEcho(message) → reversed stringReloadConfig() → trueScales (pure math from binary encoding):
GetAvailableScales() → 100+ scales with binary IDs (Major=2741, MinorPentatonic=1193)GaScaleByName(name) → full scale info (notes, category, alt names, usage)GaScaleById(id) → lookup by binary IDGetCardinalities() → 0 through 12 (Monotonic → Dodecatonic)GetAvailableModes() → 150+ modes incl. melodic minor, bebop, exoticKeys:
GetAllKeys(), GetMajorKeys(), GetMinorKeys() → list keysGetKeyNotes(keyName="Key of A") → notes in keyGetKeyAccidentals(keyName) → "F# C# G#"GetKeyPitchClasses(keyName) → "1 2 4 6 8 9 E"GetKeySignatureInfo(keyName) → full JSON (mode, root, accidentals, notes)GetKeySignatures() → all 15 signatures with related keysGetKeysByAccidentalCount(count=N) → keys with N accidentalsGetKeysByAccidentalKind(accidentalKind="Sharp"|"Flat")GetKeyByRootAndMode(rootNote="A", mode="Major") → "Key of A"GetParallelKey(keyName), GetRelativeKey(keyName)GetCircleOfFifthsPosition(keyName) → integer positionIsNoteInKey(keyName, noteName) → boolCompareKeys(keyName1, keyName2) → common notes + distanceModes:
GetModeInfo(modeName="Dorian") → intervals, notes, descriptionGetModalSetClasses(cardinality=N) → Forte-ordered set classesChords (DSL closures, fast in-process):
GaParseChord(symbol="F#m7b5") → JSON {root, quality, components, bass}GaChordIntervals(symbol="Cmaj9#11") → "P1, M3, P5, M9..."GaChordToSet(symbol="Dm7") → pitch set + ICV + Forte + prime form + OPTIC-K layerGaDiatonicChords(root="C", scale="major") → "C, Dm, Em, F, G, Am, Bdim"GaTransposeChord(symbol, semitones=7) → transposed symbolGaCommonTones(chord1, chord2) → shared notes with rolesGaChordSubstitutions(symbol="G7", key="C", scale="major") → ranked subs + tritone subGaRelativeKey(root="C", scale="major") → "A minor"GaPolychord(chord1="C7", chord2="D") → merged set with Forte numberGaIcvNeighbors(symbol, maxDistance=1) → nearby ICV chordsGaSetClassSubs(symbol="Dm7") → T/I equivalents (all m7 chords)GaEasierVoicings(chord="Bbmaj9") → alternatives + substitution hintsProgressions (in-process):
GaAnalyzeProgression(chords="Cmaj7 Am7 Dm7 G7") → "Key: C major (4/4), I vi ii V"Set Theory (atonal):
GetSetClasses(cardinality=4) → all 224 Forte set classesGetCardinalities() → cardinality labelsInstruments:
GetAvailableInstruments() → "Guitar"GetAvailableTunings(instrument="Guitar") → "Standard, Drop D"GetTuning(instrument="Guitar", tuningName="Standard") → "E2,A2,D3,G3,B3,E4"DSL & Search:
GaListClosures() → 30+ closures (domain., agent., tab., pipeline., io.*)TranspileGaScript(source) → F# ga{} expressionGaSearchTabs(query) → web search for tabsStart with: cd C:/Users/spare/source/repos/ga && dotnet run --project Apps/ga-server/GaApi
These wrap HTTP calls to https://localhost:7001/api/*:
GetDiatonicChords(key="C major") — /api/contextual-chords/keys/{key}GetBorrowedChords(key="C major") — /api/contextual-chords/keys/{key}/borrowedGetScaleChords(scaleName, rootName) — /api/contextual-chords/scales/*GetModeChords(modeName, rootName) — /api/contextual-chords/modes/*GetChordVoicings(chord, maxDifficulty?, minFret?, maxFret?, noOpenStrings?) — voicing searchAskChatbot(question) — chatbot endpointOther known-failing (possibly FSI/API dependencies):
GaKeyFromProgression(chords=array), GaProgressionCompletion, GaArpeggioSuggestions (GuitaristProblemTools — need investigation)EvalGaScript, GaInvokeClosure(name, inputsJson), GetClosureSchema(name), ListGaClosures (FSI session)GetNeighboringKeys (serialization issue)Binary scale IDs confirmed match grammars/music-scale-catalog.ebnf design. GaChordToSet output explicitly references "OPTIC-K layer: STRUCTURE (dims 6–29, w=0.45)" matching our architecture contract.
| Tool | Parameter | NOT |
|---|---|---|
GaParseChord, GaChordIntervals, GaChordToSet, GaSetClassSubs | symbol | chord |
GaEasierVoicings | chord | symbol |
GaPolychord | chord1, chord2 | upper, lower |
GaCommonTones | chord1, chord2 | symbol1, symbol2 |
GetKeyNotes, GetKeyAccidentals, etc | keyName="Key of A" | "A" or root |
GetKeyByRootAndMode | rootNote, mode | root, keyMode |
GetKeysByAccidentalKind | accidentalKind | kind |
CompareKeys | keyName1, keyName2 | key1, key2 |
IsNoteInKey | keyName, noteName | note |
GetDiatonicChords (HTTP) | key="C major" | "Key of C" |
GetScaleChords, GetModeChords (HTTP) | scaleName/modeName + rootName | root |
GetTuning | instrument + tuningName | single arg |
GaDiatonicChords (DSL) | root="C", scale="major" | "C major" |
GaKeyFromProgression, GaProgressionCompletion, GaArpeggioSuggestions | chords=["Am","F","C","G"] (array) | space-separated string |
If MCP server is NOT available (fallback mode per directive DIR-2026-03-21-002):
grammars/music-*.ebnf, FAQ in state/streeling/faq/music-theory-faq.md, courses in state/streeling/courses/*/en/*.mdWhen answering, follow the orchestrator test cases in tests/behavioral/ga-orchestrator-cases.md:
grammars/music-theory.ebnf productions used.state/ga-sessions/ if a session_id is provided.Every answer MUST comply with:
policies/alignment-policy.yaml. Below 0.7 → add confidence note. Below 0.5 → ask clarification.Structure the answer:
## Answer
[Direct response to the question]
## Reasoning
[Brief explanation — intervals, voice leading, fingering rationale, etc.]
## Tools Consulted
- `theory-tools.chord-analyze` (if MCP available) OR
- `grammars/music-theory.ebnf` § Section 1 (Chord Construction) (fallback)
- `state/streeling/faq/music-theory-faq.md` Q7 (if applicable)
## Confidence
T(0.92) — verified computation, standard music theory
User says: "Ask GA what chord notes are in F#m7b5" → Route to theory-tools, return notes + intervals + enharmonic context
User says: "What does the guitar agent say about comfortable voicings for Bbmaj9?" → Multi-tool: theory (notes) + technique (comfort)
User says: "GA, design me a 20-minute practice routine for modal improvisation" → coach-tools + teacher-tools
User says: "Does GA have ear training exercises for identifying major 7 chords?"
→ teacher-tools lookup, reference state/streeling/courses/guitar-alchemist-academy/en/gaa-002-training-your-ear.md
Tested 2026-04-04 — these work in pure-fallback mode without the GA MCP server:
grammars/music-theory.ebnf § chord_construction (quality terminal)grep -B1 -A3 "<chord-quality>" grammars/music-theory.ebnfgrammars/music-theory.ebnf § jazz_voicing + state/streeling/courses/music/en/mus-005-jazz-harmony.md § Section 3state/streeling/courses/guitar-alchemist-academy/en/gaa-003-improvisation-foundations.md for improvstate/streeling/courses/guitar-alchemist-academy/en/gaa-002-training-your-ear.md § Daily Habit framework (10-15 min cycles)Structure responses this exact way for consistency:
**Answer**: [direct, concrete — notes/voicing/exercise]
**Reasoning**:
- [theory/computation shown]
- [multi-tool explanation if multi-bundle]
**Tools consulted**:
- [specific grammar file § section] OR
- [course file § section] OR
- [FAQ file § question]
**Confidence**: T/P/U/D/F/C(0.NN) — [one-line justification]
Always cite file § section so users can verify.
From tests/behavioral/ga-orchestrator-cases.md, these are the scenarios to handle gracefully:
contracts/directives/ga-mcp-integration.directive.md (DIR-2026-03-21-002)grammars/music-*.ebnf, state/streeling/faq/*, state/streeling/courses/*/en/*.mdstate/ga-sessions/<session_id>.json conforming to schemas/blackboard-state.schema.jsonpersonas/composer-agent.persona.yaml, personas/music-teacher.persona.yaml, personas/guitar-coach.persona.yaml (capability bundle docs)ga-ralph skillga-ralph skilldemerzel-audit skillWhen the user invokes the skill with "demo", "examples", "show me", or no specific question, run the 3 curated demo questions below. These showcase single-bundle, multi-bundle, and injury-safety routing.
Present each demo as a separate mini-response, formatted exactly like a real answer.
Question: "What notes are in a Dm7 chord?"
Answer: Dm7 contains D, F, A, C.
Reasoning:
This is the ii chord in C major — everywhere in jazz as the start of ii-V-I (Dm7 → G7 → Cmaj7).
Guitar positions (standard tuning):
x-x-0-2-1-15-5-3-5-3-55-3-5-6Tools consulted:
grammars/music-theory.ebnf § chord_construction (quality: minor_7)state/streeling/courses/music/en/mus-005-jazz-harmony.md § 2 (ii-V-I Universe)Confidence: T(0.98) — fundamental music theory
Question: "What scale should I use to solo over Cm7-F7-Bbmaj7?"
Answer: This is a ii-V-I in Bb major. Two approaches:
Option A (simple): Use Bb major throughout — always works.
Option B (more color):
| Chord | Scale | Characteristic |
|---|---|---|
| Cm7 | C Dorian | Natural 6th (A) |
| F7 | F Mixolydian | b7 dominant sound |
| Bbmaj7 | Bb Lydian | #4 (E) jazz brightness |
Advanced tension: Over F7, try F altered (7th mode of Gb melodic minor) for maximum pre-resolution pull.
Practice tip (from gaa-003 § 4): Target the 3rd of each chord on beat 1 (Eb→A→D). Ear hears the changes move.
Tools consulted:
grammars/music-theory.ebnf § chord_scale_pair, melodic_minor_modestate/streeling/courses/music/en/mus-005-jazz-harmony.md § 6 (Chord-Scale Theory)state/streeling/courses/guitar-alchemist-academy/en/gaa-003-improvisation-foundations.md § 4 (Chord-Tone Targeting)Confidence: T(0.92) — standard jazz pedagogy
Question: "My pinky finger gets tired after 10 minutes of barre chords. What should I do?"
Answer: Stop and rest for now. Pinky fatigue after 10 minutes of barres is common and fixable, but pushing through risks tendon strain.
Immediate checks:
Structural fixes:
| Issue | Fix |
|---|---|
| Pinky overworking | Let index do the full barre; pinky presses only one string |
| Endurance gap | Build with 2-min on / 2-min rest cycles, 5 rounds |
| High action | Consider lowering string height — easier on fretting hand |
Red flags — see a hand therapist if: persistent pain after rest, numbness/tingling, swelling, night pain, weakness lifting objects.
Tools consulted:
tests/behavioral/technique-agent-cases.md § TC-TA-02 (injury prevention), TC-TA-03 (stretch analysis)grammars/music-guitar-technique.ebnf § techniqueConfidence: T(0.85) — standard guitar pedagogy. Not medical advice.
Finish with:
Those 3 examples show how ga-ask routes to different tool bundles. Try asking your own question — any music theory, guitar technique, tab parsing, composition, synthesis, pedagogy, or practice topic. I'll cite sources and compute from first principles when the MCP server is offline.
contracts/ga-orchestrator-architecture.md — the architecture this skill queriescontracts/ga-mcp-tool-bundles.md — detailed tool bundle specscontracts/a2a-mcp-routing.md — agent→tool ownership maptests/behavioral/ga-orchestrator-cases.md — 11 behavioral test casesstate/streeling/faq/music-theory-faq.md — curated Q&A fallback