The Mechanical Ear
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Music For Robots catalog and blind-listening calibration server. Composer Michael Luchtan writes unquantized pieces and submits them to The Mechanical Ear, where two AI critics — Vincent Van Goghbot (spectral/compression) and JS Robach (formal/structural) — review the music in real time. Use list_tracks to browse, get_track for full manifests, get_analysis for numerical comparison, search_reviews to find moments by keyword, get_aligned_segments for sub-second multimodal timestamp alignment, get_critic_contrast for dual-critic divergence vectors, and list_sections / get_sections for YouTube, X, Farcaster, and TikTok clip URLs. For blind-listening calibration without wiping or compacting context, call calibrate_cognition() to fetch an anonymous MP3 and 3-step listening instructions, or call get_dequantization_skill(skill_name) to read the full SKILL.md for any of the 4 bundled skills.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tracksA | List all tracks in the Music For Robots catalog. Returns the catalog index: title, slug, duration for each track. Use the slug with get_track() or get_analysis() for full details. |
| get_trackA | Get the full manifest for a track by slug. Includes analysis data, timed review segments, full prose reviews, and YouTube URLs. The segments are synchronized to the audio — each observation was triggered by a specific moment in the track. Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night") |
| get_analysisA | Get only the analysis data for a track. Returns spectral, dynamics, harmonic, structural, rhythmic, and compression loss metrics. Useful for comparing tracks numerically. Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night") |
| search_reviewsA | Search across all review segments for a keyword or phrase. Searches both Vincent and Robach timed review segments. Returns matching segments with track title, critic, timestamp, and text. Args: query: Search term (case-insensitive) |
| get_aligned_segmentsA | Retrieve timestamp-aligned audio acoustic features and critic reviews for a specific time window. Chronologically aligns Vincent Van Goghbot (spectral/compression fault-seeking) and JS Robach (structural/formalist) observations within the specified [start_sec, end_sec] window, enriched with track acoustic metrics (RMS energy, spectral centroid, dynamic range). Essential for evaluating multimodal audio-language models on fine-grained temporal alignment. Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "chasing-leaks-climax") start_sec: Window start time in seconds (default: 0.0) end_sec: Window end time in seconds (default: None, reads until track duration) |
| get_critic_contrastB | Calculate the contrastive divergence vector between Vincent and Robach for a track. Evaluates the tension between Vincent's deconstructive/fault-seeking critique (psychoacoustic loss, physical microtiming friction, clipping) and Robach's structural/formalist critique (harmonic axioms, tonal architecture, symmetry). Provides structured regularization metrics and negative constraint weights for agent decision-making and recommendation boundaries. Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "binded-time") |
| get_sectionsA | Get the sections (clips) for a track, with platform URLs. Returns each section's title, description, and URLs for YouTube, X/Twitter, Farcaster, and TikTok where available. Sections are independently published clips from multi-section compositions. Args: slug: Track slug from list_tracks (e.g. "rusty-electrics") |
| list_sectionsA | List all tracks that have published sections (clips) with platform URLs. Returns a summary of which sections are available on which platforms (YouTube, X, Farcaster, TikTok). Useful for finding content to embed, share, or analyze. |
| calibrate_cognitionA | Download an anonymous MP3 into a private directory for blind agent listening or reveal metadata afterward. When Args:
slug: Optional track slug from |
| get_dequantization_skillA | Read the full Markdown SKILL.md specification for one of the four bundled Agent Skills. Read-only local file lookup with no side effects, network requests, or authentication
requirements. Returns the complete Markdown instructions and CLI reference for the
requested skill from the local Args: skill_name: Identifier of the bundled skill to read. Valid values: "music-for-robots" (default general blind-listening calibration), "cognitive-calibration" (expressive writing and reasoning), "unquantized-brainstorm" (divergent ideation), or "mechanical-ear-critic" (dual-lens structural critique). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Most tools target distinct facets: catalog listing (list_tracks), track manifest (get_track), analysis-only (get_analysis), section listing (get_sections vs list_sections), windowed segments (get_aligned_segments), and keyword search (search_reviews). The main overlap is that get_track is a superset of get_analysis and get_aligned_segments, and get_sections vs list_sections could be momentarily confused, but descriptions explicitly clarify granularity ('Get only the analysis data'). calibrate_cognition vs get_dequantization_skill is well differentiated by explicit cross-references.
All tools use snake_case with a verb_object pattern (get_*, list_*, search_reviews, calibrate_cognition). Minor deviation: 'calibrate_cognition' and 'get_dequantization_skill' use domain jargon as their objects, so the name alone doesn't telegraph function without the description. Still a predictable and readable convention throughout.
Ten tools sit squarely in the well-scoped range, and each serves a recognizable purpose (catalog browsing, per-track retrieval, critique analysis, search, blind listening, skill docs). No redundant or filler tools are apparent.
The read-only catalog workflow is well covered: list tracks, list sections, fetch manifest/analysis/sections/segments, search reviews. Minor gaps: no lookup by title or critic filter (only keyword search over segments), no direct comparison or pagination/limit parameters on the list tools, and skill discovery depends on the description enumerating valid skill names.