Audius Music Platform MCP Server — Code Mode with Effect-TS. Access the Audius music platform through a small set of tools: discover endpoints via search, execute JavaScript code against the Audius API in a sandbox, resolve tracks to URLs, and authenticate with the Audius platform.
Strong execution tool with comprehensive sandbox documentation; search and login tools are well-described; play tool is clear. Schemas are complete with proper types and descriptions. Tool names are action-verb based and appropriate. Error handling includes recovery guidance in execute tool description. Main gaps: (1) Output schemas are not formally documented in responses, only input schemas are specified; (2) play tool lacks enum validation for preferBrowser parameter; (3) Missing pagination/limit documentation in search tool despite returning 'ranked rows'; (4) Some parameter descriptions could be more prescriptive about constraints (e.g., 'code' param in execute lacks timeout/memory limits beyond timeout itself).
Execute JavaScript code against the Audius API in an isolated sandbox. An authenticated `audius` client is available with `audius.request(method, path, options?)` and `audius.sleep(ms)` (max 30s per call). A read-only `protocol` client — `protocol.request(path, body?)` — calls the Open Audio Protocol ConnectRPC JSON API (chain status, blocks, on-chain transactions, validators, staking registry), e.g. `protocol.request('/core.v1.CoreService/GetStatus')`. Use `console.log()` to output intermediate results. The return value of the last expression is captured. Use the search tool first to discover available endpoints. Failed API calls do NOT throw — they resolve to `{ error: "..." }`, so check `res.error` before reading `res.data`. Gated reads (fan club feed, private history) that 403 with `authedWallet=` need `{ auth: 'signed' }` in options — the server signs the request and the user's grant authorizes it. POST/PUT/DELETE perform REAL mutations when a user is authenticated (MCP OAuth or login tool). Writes are TWO-PHASE: a 200 with { block_number, transaction_hash } is a receipt, NOT proof of effect — the change only exists once indexed (~seconds). Verify with a follow-up read after `await audius.sleep(3000)`. DELETE additionally requires `{ confirm: true }` in options. Integer amounts larger than 15 digits (wei-scale balances, tips) arrive as strings to preserve precision.
Authenticate the user with their Audius account for this session. `action: "start"` returns a consent URL — show it to the user and ask them to open it and approve access. Then call `action: "status"` with the returned `login_id` to confirm; once authenticated, all sandbox `audius.request` calls carry the user's identity (including write scope: favorites, reposts, playlists). `action: "logout"` revokes and clears the session login.
Resolve a track (by track ID or search query) to its Audius URLs. If the server is running on the user's local machine it will also try to open the track in the Audius desktop app or default browser; the result's `opened` field reports whether that worked. On remote/headless deployments it simply returns the URLs — share them with the user. Never assume audio is playing: this tool resolves and (at best) issues an open command.
Output schemas not formally documented for any of 4 tools. While input schemas are complete (JSON Schema with types and descriptions), return value structures are only implied by description text and code logic. LLMs need explicit output schemas to plan downstream calls and extract fields correctly.
play tool lacks clarity on parameter precedence and mutual exclusivity. Both trackId (search by ID) and query (search by name) are optional; description does not state which takes precedence if both provided, or whether exactly one is required. Forces LLMs to guess.
search tool description mentions returning 'compact ranked rows (method, path, summary, tags)' and 'bounded' but does not explicitly state default or max limit in param descriptions. Limit param has no minimum/maximum bounds declared.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | 2025-06-18+ | v1 |
Find Audius API endpoints. Returns compact ranked rows (method, path, summary, tags) — bounded and safe to read. Filter by tag (e.g. 'tracks', 'users', 'playlists'), path pattern, HTTP method, or free-text query; call with no filter to list all tags. Use this before writing code with execute().
execute tool description is comprehensive but lacks explicit documentation of sandbox resource limits (memory, CPU, file access). timeout covers execution time but not sandbox constraints.
login tool description does not explain what happens if the user denies consent, or provide guidance on error recovery or polling interval for status checks.