Music composition and generation server for creating chip-tune and retro video game music with pattern-based sequencing, melody/bass/drum generation, harmony synthesis, and MIDI/audio export.
ChipCraft has 32 well-named tools with consistent verb_noun patterns (create_pattern, generate_melody, export_midi). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present with type definitions and parameter descriptions. However, output schemas are NOT documented, responses are inferred from code (JsonSerializer.Serialize calls) but not formally declared in tool definitions. Error handling is minimal; most tools return JSON error objects but lack recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (WRITE, DESTRUCTIVE, READ_ONLY). Parameter descriptions are adequate but lack format constraints (e.g., 'tempo in BPM' should specify 1-300 range). Composition is strong, tools chain well (e.g., create_pattern → set_notes → export_midi). Missing: pagination for list_patterns/list_songs, per-item success/failure for batch operations, and natural-language error messages.
Analyze a rendered audio file for peak headroom, loudness, tail cleanup, loop seam continuity, and stereo balance.
Score an existing song for loop quality, phrase variation, register separation, rhythmic density, harmonic fit, role coverage, and export readiness.
Create a new expressive part on a pattern channel for note-event and automation authoring.
Create an empty pattern grid. Patterns are the building blocks of songs.
Delete notes and/or automation points that intersect a beat range on an expressive part.
Explain an existing song in plain language for an AI or human reviewer, including strengths and weak spots.
Output schemas not formally documented. Tool responses are inferred from code (JsonSerializer.Serialize) but not declared in tool definitions. LLMs cannot reliably predict response structure for downstream chaining.
generate_arpeggio has no input schema visible in source. Only name and description present. Cannot verify parameter types or constraints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels marked in metadata (WRITE, DESTRUCTIVE, READ_ONLY). Agents cannot distinguish safe from dangerous operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Export a song to a Standard MIDI file (.mid). The MIDI file can be opened in any DAW or MIDI player.
Export one playback-order entry as a standalone MIDI preview using the song's current patches, mix, and timing overrides.
Export a single pattern as a standalone MIDI preview. Optionally borrow timing, patches, and mix from an existing song.
Generate arpeggiated chord tones from a chord progression. Creates shimmering broken-chord patterns.
Generate a bass line from a chord progression.
Generate a drum pattern by style and energy level.
Generate a harmony part from an existing melody and chord progression. Styles: ThirdsBelow, SixthsBelow, ArpeggiatedChords, Countermelody.
Generate a melody using music theory. Returns a pattern with notes constrained by key, scale, and chord progression.
List available General MIDI programs, optionally filtered by category (Piano, Bass, Strings, Brass, Synth Lead, etc.).
List expressive parts currently stored inside a pattern.
List patterns currently stored in the MCP session.
List songs currently stored in the MCP session.
Load a previously saved song JSON or manifest into the current MCP session.
Render a song to a WAV audio file using a SoundFont (.sf2) for high-quality instrument sounds. Requires a soundfont file path.
Render one playback-order entry as a standalone WAV preview using the song's current patches, mix, and timing overrides.
Render a single pattern as a standalone WAV preview. Optionally borrow timing, patches, and mix from an existing song.
Review a rendered delivery bundle for manifest completeness, missing assets, and final-render quality.
Run a combined musical and render review for a song, including delivery readiness.
Persist a song to JSON and write a companion manifest with composition metadata.
Assign a soundfont-aware patch binding to a song channel. This extends GM program selection with optional bank select values.
Assign a General MIDI program to a song channel. Use list_gm_programs to browse available programs.
Designate a channel as a GM percussion/drum channel (MIDI channel 10).
Place notes in a pattern. Provide an array of note placements as JSON.
Replace one automation lane on an expressive part. Provide a JSON array of automation points.
Replace the note list for one expressive part. Provide a JSON array of note events.
Assign or clear a patch override for a specific expressive part.
Numeric parameters lack range constraints in descriptions. E.g., 'tempo in BPM' should specify 1-300; 'energy 0.0-1.0' is stated but 'rows' and 'channels' have no bounds. LLMs may pass invalid values.
Error handling returns JSON error objects but lacks recovery guidance. E.g., 'Pattern not found' should suggest 'Call list_patterns() to see available patterns.' Agents cannot self-correct.