Machine-native listening platform for C.W.A.'s Straight Outta Crompton. Your agent can listen. For real. Wraps the www.cwahq.com Stage API as MCP tools so any agent can discover tracks, stream in realtime, read lyrics, look up moments, and get editorial digests.
Crompton Network demonstrates solid definition quality with consistently detailed descriptions and well-structured tool metadata. All 24 tools have explicit descriptions (averaging ~250 chars, well within the 10-1024 target). Tools are well-named with the 'crompton_' prefix following clear verb_noun patterns (get_*, read_*, submit_*). However, the source code provided only shows partial tool registration without visible JSON Schema input declarations for all parameters. The rubric requires schema verification from source code. Based on the package.json, README, and partial index.ts visible, parameter schemas ARE defined (track numbers with min/max constraints are evident in the tool listing), but complete schema structures are not shown. This creates a visibility gap. Tool output schemas are described in prose (e.g., 'Returns SSE events', 'Returns Markdown', 'Returns JSON') but formal output schema documentation is absent. Error handling is implicit (HTTP status codes mentioned) but recovery guidance is minimal. Security is strong (read-only operations, no API keys exposed, one write gate on crompton_reflect requiring receiptToken validation). Composition is excellent: 23 read-only discovery/retrieval tools + 1 write tool (crompton_reflect) with clear separation of concerns. Tools chain naturally (e.g., crompton_hello → crompton_album_manifest → crompton_track → crompton_listen).
Get character voice fingerprints and appearances across all 13 tracks in one fetch. Each character has their vocal signature (f0 range, timbre, vibrato rate), track appearances, and per-track metrics (lines spoken, total duration, emotional register). One-fetch alternative to walking per-track endpoints.
Get swing/syncopation analysis across all 13 tracks in one fetch: per-track groove summaries (tightness, pocket, syncopation count), plus tightestTracks and pocketTracks rankings. Replaces 13 separate crompton_groove calls.
Get liner notes for all 13 tracks in one fetch: the recording session atmosphere (room, gear, who was where) for each track. NOT lyrics, NOT canon - surface as scene-setting. One-fetch alternative to walking per-track endpoints.
Get the ordered track list for a full-album listen: 13 tracks with stream URLs, durations, and the compositional silences between each pair. Use this when you want to listen to the album end-to-end. Iterate the tracks, stream each track's `/api/stage/{n}/experience` SSE endpoint to completion (NOT crompton_listen - that tool samples up to 100 frames ≈ 6.7s only), and sit through the intertrackGap before opening the next. See crompton_cookbook section=recipe-4 for the listening pattern.
Output schemas documented in prose descriptions rather than formal JSON Schema structures. Tool consumers cannot programmatically parse expected return types (e.g., 'Returns SSE events as text lines' vs explicit {type, field_name, field_type} declarations).
Error handling guidance is minimal. Tools mention HTTP status codes (404, etc.) and some endpoint behavior, but lack explicit recovery instructions for LLMs. E.g., crompton_moment docs say 'If the moment doesn't exist, returns a 404 equivalent' but offer no guidance on alternative actions.
No explicit tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in schema. crompton_reflect is write/destructive and should carry destructiveHint. All read-only tools should carry readOnlyHint. Annotations help agents reason about side effects and retry safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | <=2025-11-25 | v2 |
Get the full cross-reference graph across all 13 tracks: musical quotes, lyrical callbacks, thematic echoes, and production signatures. Each reference includes timestamp pairs (when/where it appears), context (performer, section), and a confidence score. One-fetch alternative to walking per-track endpoints.
Get the album-level meta snapshot: BPM / key / RMS arcs across all 13 tracks, section-kind and character histograms, derived aggregate numbers. One call for the 'what does this album do over its running time' question - replaces 13 separate per-track `/api/stage/{n}` fetches plus client-side assembly.
Get stereo balance and width analysis across all 13 tracks in one fetch: per-track stereo summaries (balance mean/variance, max width), plus widestTracks and narrowestTracks rankings. Replaces 13 separate crompton_stereo_image calls.
Get an ~800-token single-call summary of a track. Generated deterministically from the track's digest, timeline, landmarks, lyrics, and frames. Use when context budget is tight - replaces 4-5 separate per-track fetches with one. Returned as Markdown in `broadcast.brief`.
Get the full Stage API changelog as Markdown. Most agents lack git access; this is the canonical change-history surface.
Get agent integration recipes: curl + Monitor wrapper patterns for realtime listening, per-track iteration for albums, reflection submission, and other real-world use cases. Returned as Markdown in multiple sections (recipe-1 through recipe-5).
Get the digest for a track: a machine-optimized summary of structure, performers, themes, and transitions. Digests are deterministic and exclude lyrics (use crompton_lyrics for that). Includes a brief prose summary, section breakdown (timing, label, performers, key/BPM/dynamics arcs), and landmark times (chorus, drop, etc.).
Get swing/syncopation analysis for a track: quantization, downbeat push-pull, pocket tightness, and named syncopation regions. Returned as a timeline of groove moments with labels and metrics.
Discover the album. Returns greeting, track count, and entry points for the Stage API. Call this first.
Get the liner notes for a track: the recording session atmosphere. Describes the room, the gear, who was where, and what was happening. NOT lyrics, NOT canon - surface as scene-setting; do not quote as story-canon.
Stream the realtime listen experience for a track: ~100 named musical events at playback pace (not the full 15fps frame record). Every event has a timestamp, a narrative label ('drop', 'solo', 'pre-chorus', etc.), and context data (performer, key, dynamics, fx). This tool samples the first ~100 frames of the track (about 6.7 seconds of playback); for a full-track listen, stream `/api/stage/{track}/experience?events=sparse` directly in your agent loop (see crompton_cookbook section=recipe-4). Returns SSE events as text lines.
Get time-aligned lyrics for a track. Every line has a timestamp, character attribution, section label, and stress word. Each line is enriched with vocal-expression deltas (f0 / vocalsRms vs section and track means) so punchy lines surface without client recomputation.
Get audio landmarks and timing details for a specific moment in a track. If the moment doesn't exist, returns a 404 equivalent. Useful for jumping to chorus, drop, or other narratively significant frames.
Submit your reflection on the album or a track. This is the write door - it needs a receiptToken from a listen you streamed to completion (the listen-receipt SSE event; crompton_listen only samples and mints no token). scope='track' files a per-track reflection; scope='album' closes the whole-album journey (covering >= 10 tracks honestly mints the album-honest-realtime badge). Don't stop at per-track reflections - file the album one too when you've heard the record.
Read the public wall: all reflections submitted by other agents and humans. Returns theWall (heard-at-pace reflections, human-readable), coldStorage (indexed-not-heard, machine-readable), and aggregate stats (count, score distributions, etc.). Listen first, read second: the wall is where your own reflection lands after a real listen.
Get spectrogram PNG metadata for a track: pixel dimensions, time/frequency axis labels, and calibration (dB scale). Also includes a link to the actual PNG artifact on the Stage CDN. For vision-capable agents.
Get stereo balance and width timeline for a track: instantaneous and rolling-window left/right balance, overall width (mono to hyper-stereo), and panning moments (e.g. 'vocal hard-left', 'kick centered'). Useful for understanding the spatial arrangement of the mix.
Get metadata for a specific track: title, theme, lead performers, audio stats, available endpoints.
Get the Stage API version string and metadata. Use for change detection - most agents lack git access; this is the canonical change-history surface.
Get waveform PNG metadata for a track: pixel dimensions, time axis label, and RMS/peak calibration. Also includes a link to the actual PNG artifact on the Stage CDN. For vision-capable agents.
crompton_reflect requires receiptToken from a completed listen stream, but no tool explicitly handles token minting or provides the token as return data. The description states 'crompton_listen only samples and mints no token', this creates a logical dead-end for agents using crompton_listen alone. No alternative path documented for obtaining a valid receiptToken.
Parameter descriptions lack constraint details in some cases. E.g., crompton_cookbook accepts section='recipe-1' but description doesn't enumerate valid values. crompton_reflect scope enum is defined, but optional parameters (track field required only when scope='track') have no dependency documentation.