
Tag-per-Track
io.github.Lory97v1.6.3Updated Oct 1, 2026
Audio analysis and A&R scoring for music tracks: tags, lyrics, artist stats, demo triage.
Installation
In SourceWeft
- Open Tag-per-Track in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Tag-per-Track MCP Server
[smithery badge] [npm version] [License: MIT]
This project is a local Model Context Protocol (MCP) server that allows AI agents (like Claude) to analyze audio files via the Tag-per-Track API. It authenticates either with a Studio API key (prepaid credits bought on tag-per-track.cloud, no crypto needed) or with a wallet, in which case it automatically handles the USDC micro-payment using the x402 protocol on the Base network.
π― Vision
Enable an AI to "pay to listen" autonomously. When an AI agent wants to analyze a track, it uses this MCP server, which signs an EIP-3009 (USDC) payment authorization and instantly retrieves the enriched track metadata.
π Features
analyze_audioTool (Canonical): Extracts BPM, Genre, Mood, Key, Instruments, production metrics, optional Lyrics (1 credit or 0.15 USDC standard / 2 credits or 0.25 USDC with lyrics), AI-Generated Music Detection (ai_detection: Suno, Udio, neural vocoders withHUMAN,AI_GENERATED, orUNCERTAINverdicts) and the server-side A&R evaluation (arEvaluation: discovery / signing / beatmaker profiles).analyze_audio_with_lyricsTool (Alias): Extracts complete musical metadata, transcribes full vocal lyrics, and returns AI origin integrity metrics (2 credits or 0.25 USDC).analyze_audio_batchTool (Parallel Processing): Analyzes multiple music tracks concurrently with AI origin detection on every track, dramatically reducing turnaround time for albums and playlists.triage_demo_folderTool (Demo Inbox Triage): Sorts a whole local folder of demos in one call: analysis, artist/title fromArtist - Titlefile names or audio tags, Spotify traction, A&R scoring v2 re-computed with the traction, and a compact ranked report with buckets (priority,listen,pass,ai_flagged,error). Unreliable lyrics (instrumental, no voice, looping hallucination) are flagged instead of quoted.lookup_artist_statsTool (A&R Traction): Fetches public Spotify streaming traction (monthly listeners, followers, popularity score, genres) for hybrid A&R qualification.- Selective Audio Compression: Automatically compresses heavy uncompressed files (
.wav,.aiff,.aif) or audio files larger than 15 MB to 128 kbps AAC (.m4a) before upload (using native macOSafconvertorffmpeg), reducing upload bandwidth and latency by up to 90% while leaving lightweight files (.mp3,.m4a$\le 15$ MB) untouched. - Prices in the Right Unit: tool descriptions, prompts and reports state costs in studio credits when a Studio API key is configured, and in USDC only in wallet (x402) mode, so an A&R paying with credits never sees crypto amounts.
- Dual Authentication: Studio API key (
Authorization: Bearer tpt_live_β¦, prepaid credits) takes priority over the Web3 wallet. - Automated x402 Payment: Manages the x402 challenge-response cycle (HTTP 402), with the platform wallet and USDC contracts pinned client-side.
- Integrated Web3: On-chain signing via
viem(EIP-3009 TransferWithAuthorization on Base). - Client-Side Financial Guard (Spending Cap): Built-in spending limit (default 0.50 USDC max per call) protecting your wallet against abnormal requests.
- Confidential by Default for x402: Wallet-paid analyses are sent with
x-no-persist(not stored server-side); Studio API key analyses are saved to your dashboard history unlessTAG_PER_TRACK_NO_PERSIST=1. - Prompts:
triage_demos(sort a demo folder into a ranked shortlist and sub-folders),qualify_demo_ar(single demo A&R qualification) andbatch_demo_screening(multi-track screening). - Strict File Format Validation: Rejects non-audio files to protect local privacy and prevent arbitrary file exfiltration.
- Deferred Binary Loading & Timeouts: 15s handshake / 120s processing timeouts with memory-efficient streaming and automatic temp file cleanup.
- Compatibility: Designed for use with Claude Desktop, Cursor, Windsurf, or any MCP client.
βοΈ Configuration & Environment Variables
The MCP server supports Dual Authentication:
π¦ Installation & Setup
π€ Option 1: Claude Desktop (Studio SaaS - Zero Crypto, Recommended for A&R)
Add the server to your claude_desktop_config.json (located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):
Note: Generate your Studio API key in 1 click from your Dashboard at https://tag-per-track.cloud.
β‘ Option 2: Claude Desktop (Web3 x402 USDC on Base)
π Option 3: Smithery CLI
π§ MCP Tools
1. analyze_audio
Analyzes an audio file to extract musical metadata tags (BPM, key, scale, moods, genres, instruments), optional lyrics, and AI Origin Integrity (ai_detection). Supports both local binary files and remote URLs.
-
Arguments:
filePath(string, optional): Path to a local audio file on disk (.mp3,.wav,.ogg,.flac,.m4a,.aac,.aiff). The server validates the format, reads the file and streams it securely.fileUrl(string, optional): Direct URL of the audio file. (Note: At least one offilePathorfileUrlmust be provided).extractLyrics(boolean, optional): Set totrueto also extract vocal lyrics (2 credits / 0.25 USDC instead of 1 credit / 0.15 USDC).
-
Output Structure: Returns comprehensive metadata including:
bpm,key,scale,genres,moods,instruments,durationproduction(lufs,peakDb,clippedRatio),danceability,engagement,approachability,voice.ratioai_detection/aiDetection(computed on a 12 s core sample):checked: boolean (truewhen analyzed)isAi: boolean (trueif detected as synthetic/AI)confidence: confidence percentage (0-100)verdict:'HUMAN'|'AI_GENERATED'|'UNCERTAIN'status:'SUCCESS'|'UNAVAILABLE'|'SKIPPED'generator/watermarkDetected(optional): identified generator, e.g. a Suno signature in the file metadata
arEvaluation(A&R scoring v2.2):tier,audioType,suggestedProfile,marketplaceTags,aiGate,subScores(production, listening, traction, loyalty) andprofiles.{discovery,signing,beatmaker}withscore,priorityand arecommendationcode. AI verdicts are graded: β₯ 80 % confidence (or a metadata watermark) blocks the track, 60-79 % flags it, 30-59 % is inconclusive.
2. analyze_audio_with_lyrics
Analyzes an audio file to extract musical metadata, transcribe full vocal lyrics using AI, and evaluate AI Origin Integrity. Supports local audio files and remote URLs.
- Arguments:
filePath(string, optional): Path to a local audio file on disk (.mp3,.wav,.ogg,.flac,.m4a,.aac,.aiff).fileUrl(string, optional): Direct URL of the audio file. (Note: At least one offilePathorfileUrlmust be provided).
3. analyze_audio_batch
Analyzes multiple audio tracks in parallel (batch processing). Vastly reduces total execution time compared to sequential calls, with resilient partial reporting and AI origin detection on every track.
-
Arguments:
filePaths(string[], optional): Convenience array of local file paths to analyze in parallel.fileUrls(string[], optional): Convenience array of public URLs to analyze in parallel.tracks(object[], optional): Array of track objects with granular settings:filePath(string, optional)fileUrl(string, optional)extractLyrics(boolean, optional): Per-track lyrics flag.
extractLyrics(boolean, optional): Global flag to transcribe vocal lyrics for all tracks in this batch (2 credits / 0.25 USDC per track). Default isfalse(1 credit / 0.15 USDC per track).concurrency(number, optional): Maximum simultaneous parallel requests (1 to 5, default is 4 to respect API rate limits).
-
Output Structure: Returns a summary JSON containing:
totalTracks: Total number of tracks submitted.successful: Count of successfully analyzed tracks.failed: Count of failed tracks.results: Detailed array containing status (successorerror), metadata (includingai_detection), or error reason for each track.
4. triage_demo_folder
Sorts a local folder of demo submissions in one call, built for the A&R "demo inbox" workflow. Only compact results are returned, so a 20-track folder fits comfortably in the model context.
Pipeline: list the audio files β artist/title from an Artist - Title file name (preferred: tags on demos are often DAW or account defaults), else from the audio tags β paid analyses (bounded concurrency) β one free Spotify lookup per distinct main artist ("Miimii ft Dj Skycee" β "Miimii") β free server-side re-scoring (POST /api/ar-score) with the traction attached β ranking. MCP progress notifications are sent after each track when the client provides a progressToken.
-
Arguments:
folderPath(string, required): Local folder (absolute or~/...).profile(string, optional):discovery(default, an unknown artist is never penalized),signing(weighs streaming traction),beatmaker, orauto(beatmaker for instrumentals).extractLyrics(boolean, optional): Also transcribe lyrics (2 credits / 0.25 USDC per track).recursive(boolean, optional): Scan sub-folders.maxTracks(number, optional): Default 25, hard limit 50.lookupArtists(boolean, optional): Spotify traction lookup, defaulttrue.dryRun(boolean, optional): List the files, detected artists/titles and the estimated cost without analyzing or charging.concurrency(number, optional): 1 to 5, default 3.
-
Cost: 1 credit (0.15 USDC) per analyzed track, 2 credits (0.25 USDC) with lyrics. Failed analyses are not charged. The report states it in the configured unit only (see
estimatedCostbelow). -
Output Structure (one entry per track, best score first, errors last):
bucket:priority(top/high priority),listen(medium),pass(low),ai_flagged(confirmed or suspected AI-generated),error(unreadable or rejected file),not_analyzed(see below).- Credits exhausted / invalid key: as soon as the API answers "Insufficient studio credits" (HTTP 402) or "Invalid API key" (HTTP 401), the remaining files are not sent. The report then carries
halted: { reason, notAnalyzed }, the affected tracks are in thenot_analyzedbucket, and only the successful analyses are counted inestimatedCost. The same stop rule applies toanalyze_audio_batch(skippedcount andhaltReason). ai.flag:blocked(confirmed AI),suspected(to verify by ear),uncertain,clear,unchecked.lyrics.status:ok,approximate(low-confidence transcription reported by the API, typically a language Whisper does not support such as Creole, transcribed phonetically),instrumental,no_vocals_detectedorsuspect_repetition(a short phrase looping, typical of a Whisper hallucination).lyrics.languageis the language detected by Whisper. Onlyoklyrics should be quoted.- The report header gives
bucketscounts,estimatedCost,scoringVersion,elapsedSecondsandnotes(tracks over the limit, artists not found...). estimatedCostis expressed in the unit the account pays with:{ "label": "8 studio credits", "studioCredits": 8 }with a Studio API key,{ "label": "1.2 USDC", "usdc": 1.2 }with a wallet. Both are given only when no authentication is configured.
5. lookup_artist_stats
Retrieves streaming traction and commercial metrics for an artist (Spotify monthly listeners, followers, popularity score, genres) for A&R qualification. Free (no credit or payment). This service is strictly decoupled from the acoustic analysis pipeline; the API caches results (7 days persistent, 24 hours in memory) with graceful fallback.
-
Arguments:
artist_name(string, required): Stage name of the artist (e.g."Daft Punk","Kaytranada").spotify_id(string, optional): Spotify artist ID oropen.spotify.comartist URL, to target an exact artist when the name is ambiguous.social_links(string[], optional): Optional social media profile links for future enrichment.
-
Output Structure:
π€ Guide & System Prompts for A&R Agents (Hybrid Scoring)
Modern A&R evaluation combines three essential dimensions:
- Intrinsic Acoustic Profile (BPM, musical key & scale, mood, instrumentation, vocal lyrics).
- Origin Integrity & AI Verification (detecting human vs synthetic AI-generated music to mitigate copyright and chain-of-title risks).
- Commercial Momentum & Streaming Traction (Spotify monthly listener volume, follower fan base, popularity index).
π― Orchestration Workflow for Autonomous Agents
- Step 1 β Acoustic & Origin Analysis:
Invoke
analyze_audio(oranalyze_audio_with_lyricswhen vocal lyrics transcription is essential) withfilePathorfileUrl. This consumes Studio credits (API key mode) or triggers the x402 micro-payment (0.15 or 0.25 USDC on Base), and evaluates musical attributes alongside AI origin integrity (ai_detection) and the A&R evaluation (arEvaluation). - Step 2 β Artist Traction Lookup:
Whenever the artist's stage name is identifiable (from submission filename, user prompt, or ID3 tags), invoke
lookup_artist_stats(artist_name: "..."). - Step 3 β Consolidation into the Unified A&R Evaluation Matrix: The agent consolidates findings into a standardized Markdown evaluation matrix with the required 7 columns:
π Ready-to-Use A&R Agent System Prompt
Here is a turnkey system prompt template to configure an autonomous A&R scouting agent (compatible with Claude Desktop, Cursor, Windsurf, or LangChain/AgentKit):
π License
MIT
Source: README.md at commit 7b06e35
Tools
0Version history
1- v1.6.3LatestOct 1, 2026


