LabelGrid MCP Server
OfficialThe LabelGrid MCP Server lets you manage your LabelGrid music distribution account through natural language. It acts as a typed wrapper over the LabelGrid public API, providing 83 tools across 10 toolsets:
Setup
Get guided instructions to configure your LabelGrid API token (available even before a token is set).
Identity & Account
View your authenticated account profile and revoke API tokens.
Reference Data
Look up genres, languages, contributor roles, instruments, distribution outlets, and territories.
Catalog Management
List, view, create, update, and delete labels, artists, writers, and publishers.
Upload label images and artist photos.
List and view releases, tracks, track files, and download audio via signed URLs.
Release & Track Lifecycle
Create, update, and delete draft releases and tracks.
Validate releases for distribution readiness.
Run Preflight QC quality reports and manage smart-link landing pages.
Add notes to review issues.
Review & Quality
View review issues, quality reports, and Stream Radar flags for artificial streaming detection.
Analytics
Retrieve streaming analytics (streams, listeners, saves, skips, completion rates, geographic breakdowns, etc.) filterable by platform, release, ISRC, UPC, or artist.
Accounting & Royalties
List royalty statements, download CSVs and invoice PDFs.
Browse transactions, royalty breakdowns by track/DSP/territory/period, artificial streaming records, and account balance summaries.
Delivery
Monitor distribution queue status per release and outlet.
View smart-link landing page configurations.
Webhooks
List, create, update, delete, and test webhook subscriptions.
View webhook logs, available event types, and rotate signing secrets.
Distribution (requires explicit opt-in)
Upload finalized track audio (WAV/FLAC/Dolby Atmos) and release artwork.
Upload, update, and delete track licenses.
Distribute releases to stores, take down releases, confirm held releases into review, and request Beatport onboarding for a label.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LabelGrid MCP Server List my recent releases"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LabelGrid MCP — workspace
The official LabelGrid tooling for the LabelGrid public API, organised as an npm workspace.
Looking for the MCP server docs? They live in
packages/mcp/README.md — installation for Claude Desktop / Cursor /
any MCP client, the full tool reference, safety gating, and configuration.
Packages
Package | What it is |
The MCP server — 30 consolidated tools over the LabelGrid public API. Published to npm; also ships as the | |
The | |
The shared API client: HTTP transport with structured errors, presigned-URL uploads, content-type allowlists, the catalog-entity registry, and redacting logging. Used by every LabelGrid tool built on the public API. |
Related MCP server: Discogs MCP Server
Command-line tool
Full docs (auth setup, every command group, scripting, safety model) live in
packages/cli/README.md. Quickstart:
npm install -g @labelgrid/cli # Node 20+; installs the `labelgrid` command
export LABELGRID_API_TOKEN=... # or run `labelgrid auth login`
labelgrid auth whoami # verify the token
labelgrid catalog search --type release --json | jq '.data[].id'Agent skill
skills/labelgrid-release/SKILL.md is an agent
skill for the full release lifecycle — draft a release and its tracks, upload audio and
artwork, validate, review, distribute, and track delivery — with the exact MCP tool and
CLI command for each step and guidance on which vehicle fits. Point an agent at the file,
or drop it into your assistant's skills directory, to teach it the end-to-end LabelGrid
release flow.
Layout & build arrangement
The root
package.jsonis a private workspaces manifest; its scripts fan out to the packages (npm run buildbuilds@labelgrid/corefirst, then@labelgrid/mcpand@labelgrid/cli;npm testruns each package's suite). Contributors work from the repo root:packages/coreis the shared client,packages/mcpthe MCP server,packages/clithe command-line tool — the two products are thin adapters over core.Each package has its own
tsconfig.jsonextending the sharedtsconfig.base.json(no TypeScript project references — the explicit root build chain keeps ordering correct and simple).@labelgrid/mcpimports@labelgrid/corethrough the workspace link and compiles against its built declarations.Unit tests run per package via each package's
vitest.config.ts. The MCP package aliases@labelgrid/coreto the sibling package's TypeScript source, so running tests never requires a prior core build.Repo-wide checks live in
scripts/and run from the root:npm run lint,npm run leak-guard,npm run check-coverage,npm run gen-docs,npm run measure-tokens.
Development
npm ci # install the whole workspace
npm run build # build core, then mcp and cli
npm test # unit suites for every package
npm run lint # biome over the repoThe MCP server binary after a build: node packages/mcp/dist/index.js (or npm start).
The CLI binary after a build: node packages/cli/dist/index.js.
License
Available Tools
84 toolsadd_review_issue_noteAdd a note to a review issueA
Add a note to a release review issue — for example to explain a fix or add context for the reviewer. review_issue_id is the id of the issue (from list_review_issues).
Inputs: note (required), review_issue_id (required).
confirm_reviewConfirm a held release into reviewAIdempotent
Confirm a release that Preflight QC placed on hold, moving it into distribution review. Use after you have reviewed the quality report and accept the release as-is. Safe to repeat.
Inputs: release_id (required).
create_artistCreate an artistB
Create a new artist. Pass its attributes in fields.
Inputs: fields (required).
create_labelCreate a labelB
Create a new label. Pass its attributes in fields.
Inputs: fields (required).
create_publisherCreate a publisherB
Create a new publisher. Pass its attributes in fields.
Inputs: fields (required).
create_releaseCreate a release (draft)A
Create a new release in DRAFT state. Pass its metadata in fields. Required: content_type, label_id, artists, titles, cat (catalog number), artwork_ai_usage, primary_genre_id. Pass idempotency_key and reuse the SAME value if you retry a call whose outcome you did not observe — the server deduplicates by it for 24h; without a key each call is a new operation. Add tracks with create_track, then validate_release before distributing.
Inputs: fields (required), idempotency_key.
create_release_short_urlCreate a release short URLAIdempotent
Create (or return the existing) short URL for a release’s smart-link landing page. Safe to repeat.
Inputs: release_id (required).
create_trackCreate a trackA
Create a track on a release. Pass its metadata in fields. Required: release_id, disc, track_num, composition_type, artists, audio_ai_usage, composition_ai_usage, commercial_samples, audio_language, contributors, and recording_country (a required ISO 3166-1 alpha-2 country code, e.g. "US"). Pass idempotency_key and reuse the SAME value if you retry a call whose outcome you did not observe — the server deduplicates by it for 24h; without a key each call is a new operation.
Inputs: fields (required), idempotency_key.
create_webhookCreate a webhookA
Create a webhook subscription. name and url (the HTTPS endpoint that will receive events) are required, along with events selecting which event types to deliver. The API returns a signing secret once on creation — store it to verify incoming payloads.
Inputs: url (required), name (required), events (required).
create_writerCreate a writerA
Create a new songwriter. Pass its attributes in fields.
Inputs: fields (required).
delete_artistDelete an artistADestructive
Delete an artist. The API refuses deletion when the artist is still referenced by releases or tracks.
Inputs: artist_id (required).
delete_labelDelete a labelADestructive
Delete a label. The API refuses to delete a label that still has releases — remove or reassign its releases first.
Inputs: label_id (required).
delete_publisherDelete a publisherADestructive
Delete a publisher. The API refuses deletion when the publisher is still referenced by writers.
Inputs: publisher_id (required).
delete_releaseDelete a releaseADestructive
Delete a release. The API only allows deleting a draft that has never been submitted; it refuses to delete a release that has been submitted or distributed.
Inputs: release_id (required).
delete_release_assetDelete a release animated cover videoADestructive
Delete a release animated cover (motion artwork) video — the square or the tall/portrait cover video. Allowed only while the release is still an editable draft.
Inputs: asset_type (required), release_id (required).
delete_trackDelete a trackADestructive
Delete a track. Allowed while the parent release is an editable draft; the API refuses once the release is submitted or distributed.
Inputs: track_id (required).
delete_track_audioDelete a track audio/lyrics fileADestructive
Delete one of a track’s asset files (stereo, Dolby Atmos, or lyrics). Allowed only while the parent release is still an editable draft; the API refuses once the release is locked or distributed.
Inputs: track_id (required), file_type (required).
delete_track_licenseDelete a track licenseADestructive
Permanently delete a track license and its file. track_license_id is the license id (from list_track_licenses). This cannot be undone.
Inputs: track_id (required), track_license_id (required).
delete_webhookDelete a webhookADestructive
Delete a webhook subscription permanently. It will stop receiving events.
Inputs: webhook_id (required).
delete_writerDelete a writerADestructive
Delete a writer. The API refuses deletion when the writer is still referenced by tracks.
Inputs: writer_id (required).
distribute_releaseDistribute a releaseADestructive
Submit a release for distribution to the stores/outlets — this is the FINAL, consequential action that sends the release out; validate_release should pass first. The server enforces your account’s weekly submission limit and returns a structured error if it is exceeded. Pass idempotency_key and reuse the SAME value if you retry a call whose outcome you did not observe — the server deduplicates by it for 24h; without a key each call is a new submission.
Inputs: release_id (required), idempotency_key.
download_statement_csvDownload statement CSVARead-only
Download statement line items as CSV. Pass invoice_number for a single statement, OR a start_date/end_date range to export across statements. If save_to_path (an absolute path whose parent directory exists) is given, the CSV is written there — an existing file is never overwritten (returns FILE_EXISTS) — and the tool returns the byte count. Otherwise the CSV is returned inline, truncated at 100KB (with truncated: true) — use save_to_path for large exports.
Inputs: end_date, start_date, save_to_path, invoice_number.
download_statement_invoiceDownload statement invoice PDFARead-only
Download the invoice PDF for a statement. save_to_path is REQUIRED (the PDF is binary) and must be an absolute path whose parent directory exists; the PDF is written there — an existing file is never overwritten (returns FILE_EXISTS) — and the tool returns the byte count.
Inputs: save_to_path (required), invoice_number (required).
enable_beatportRequest Beatport onboarding for a labelADestructive
Request Beatport onboarding for a label. This is a one-time action that cannot be un-requested once submitted, so confirm the label is correct first.
Inputs: label_id (required).
get_account_summaryGet account summaryARead-only
Retrieve your accounting summary — current balance and related account-level financial totals.
Inputs: no named parameters.
get_analyticsGet streaming analyticsARead-only
Retrieve a streaming analytics summary for your catalog in a single call. start_date and end_date (both YYYY-MM-DD) are required and the window is capped at 30 days by the server. Optionally narrow the result by platform (SPOTIFY, ITUNES, APPLE_MUSIC), release_id, isrc, upc, or artist_names. By default all 15 metric sections are returned; pass metrics to request only a subset. Available metrics: streams, listeners, saves, skips, shares, completion-rate, lyrics-view-rate, canvas-view-rate, device-split, source-split, saves-by-tier, streams-by-country, streams-by-gender, streams-by-age, shares-by-country. This endpoint is rate-limited (about 60 requests per minute); a 429 response carries retry_after_seconds.
Inputs: end_date (required), start_date (required), upc, isrc, +5 more.
get_artificial_fee_breakdownGet artificial-streaming fee breakdownARead-only
Retrieve the per-release breakdown of an artificial-streaming fee for one billing period. period is the month in YYYY-MM format.
Inputs: period (required).
get_artistGet an artistARead-only
Retrieve one artist by id, including bio, identifiers and platform links.
Inputs: artist_id (required).
get_delivery_queueGet the distribution queueARead-only
List the distribution queue entries for your account, paginated — one entry per (release, outlet) delivery with its current status (e.g. pending review, processing, scheduled, complete, error). Filter by release_id, outlet_id, or status. Use this to see where a release is in the delivery pipeline to each store.
Inputs: page, status, per_page, outlet_id, +1 more.
get_labelGet a labelARead-only
Retrieve one label by id, including its settings and defaults.
Inputs: label_id (required).
get_landing_configGet a release landing-page configARead-only
Retrieve the smart-link landing-page configuration for a release: whether the links page is enabled, its style/mode, custom copy, the action list and any pre-order links. Pair with update_landing_config to change it.
Inputs: release_id (required).
get_meGet my accountARead-only
Return the authenticated LabelGrid account profile, including the release submission limit/quota and terms-acceptance status. Use this to confirm which account your API token belongs to before making other calls.
Inputs: no named parameters.
get_publisherGet a publisherARead-only
Retrieve one publisher by id.
Inputs: publisher_id (required).
get_quality_reportGet a release quality reportARead-only
Retrieve the Preflight QC quality report for a release: the customer-facing issues found by the automated checks so you can review them before confirming the release into distribution. Preflight QC is an optional add-on — if your account does not have it enabled the API returns a 403, which is surfaced verbatim.
Inputs: release_id (required).
get_releaseGet a releaseARead-only
Retrieve one release by id, including its metadata, artwork state and track listing.
Inputs: release_id (required).
get_release_fileGet a release fileARead-only
Retrieve metadata about a release animated cover (motion artwork) video asset — the square or the tall/portrait cover video — including its processing state.
Inputs: asset_type (required), release_id (required).
get_royalties_breakdownGet royalties breakdownARead-only
Get a cursor-paginated royalty breakdown grouped by one or more dimensions. group_by is REQUIRED and is a comma-separated, ordered subset of: track, dsp, release, territory, period (e.g. "release,dsp"). Filter by label_id, release_id, isrc, upc, and a start_date/end_date range.
Inputs: group_by (required), upc, isrc, cursor, +5 more.
get_statementGet a statementARead-only
Retrieve one royalty statement by its invoice number.
Inputs: invoice_number (required).
get_stream_radar_flagGet a Stream Radar flagARead-only
Retrieve one Stream Radar flag by id, with its full detail. Stream Radar is an optional add-on; without it the API returns a 403, surfaced verbatim.
Inputs: flag_id (required).
get_trackGet a trackBRead-only
Retrieve one track by id, including titles, contributors, writers, publishers and royalty splits.
Inputs: track_id (required).
get_track_audio_download_urlGet a track audio download URLARead-only
Return a time-limited, signed URL to download one of a track’s audio assets. asset_type selects the asset: audio_16, audio_24, and audio_32 are the WAV master at that bit depth; audio_preview_full and audio_preview_clip are the generated MP3 preview (full-length / clip). Returns { download_url, expires_in }; the URL expires roughly 10 minutes after it is issued, so request a fresh one when it lapses. Fetch the URL directly — do not send your API token to it.
Inputs: track_id (required), asset_type (required).
get_track_fileGet a track fileARead-only
Retrieve metadata about one of a track’s asset files (its stereo audio, Dolby Atmos audio, or lyrics file), including its processing state. This returns file information, not the bytes — use get_track_audio_download_url for a downloadable link.
Inputs: track_id (required), file_type (required).
get_track_licenseGet a track licenseARead-only
Retrieve one license attached to a track by its license id.
Inputs: track_id (required), license_id (required).
get_webhookGet a webhookARead-only
Retrieve one webhook subscription by id.
Inputs: webhook_id (required).
get_webhook_logsGet webhook delivery logsARead-only
Retrieve the recent delivery log for a webhook — the attempts, response codes and outcomes — to debug why events did or did not reach your endpoint.
Inputs: webhook_id (required).
get_writerGet a writerARead-only
Retrieve one writer by id, including PRO/IPI identifiers and publisher link.
Inputs: writer_id (required).
list_artificial_streamsList artificial-streaming recordsARead-only
List the artificial-streaming records reported for your catalog, cursor-paginated — the per-record detail behind any artificial-streaming fee. Filter by dsp (spotify or apple), a start_date/end_date range, release_id, or isrc.
Inputs: dsp, isrc, cursor, end_date, +3 more.
list_artistsList artistsARead-only
List the artists in your account, paginated. Filter by artist_name to find a specific artist. Use get_artist for one artist’s full profile and links.
Inputs: page, per_page, artist_name.
list_issue_definitionsList issue definitionsARead-only
Retrieve the catalog of review issue definitions: each code’s human-readable title, description, severity and whether it blocks distribution. Use it to interpret the codes returned by list_review_issues and the quality report. Issue codes are string slugs.
Inputs: no named parameters.
list_labelsList labelsARead-only
List the labels in your account, paginated. A label groups your releases and carries default copyright, website and outlet settings. Use get_label for the full detail of one label.
Inputs: page, per_page.
list_publishersList publishersARead-only
List the publishers in your account, paginated. Filter by name or ipi. Publishers are linked to writers for publishing administration.
Inputs: ipi, name, page, per_page.
list_reference_dataList reference dataARead-only
Fetch a LabelGrid reference dataset used to resolve the IDs and codes that catalog and release tools expect. Pick ONE dataset with type: genres and genre_categories (values for primary/secondary/tertiary genre IDs), languages (audio and metadata language codes), contributor_roles (valid role names for track contributors), instruments, distro_outlets (the distribution outlets/stores available to your account), or territories (country/territory codes). Call this before creating or updating a release or track when you need a valid ID or code.
Inputs: type (required).
list_releasesList releasesARead-only
List releases in your account, paginated. Filter by label_id, is_live (1 = live/distributed), barcode_number (UPC/EAN), or cat (catalog number). Use get_release for one release’s full metadata and track listing.
Inputs: cat, page, is_live, label_id, +2 more.
list_review_issuesList release review issuesARead-only
List the review issues raised against a release during its automated quality checks. release_id is required. Each issue carries a code (see list_issue_definitions for what each code means), severity, and whether it blocks distribution. Use this to see what a customer must fix before a release can go out.
Inputs: release_id (required).
list_statementsList statementsARead-only
List your royalty statements, paginated. Filter by label_id, release_id, isrc, upc, and a start_date/end_date range. Pass group_by="release" to roll the totals up per release. Use get_statement for one statement, or download_statement_csv for its line items.
Inputs: upc, isrc, end_date, group_by, +3 more.
list_stream_radar_flagsList Stream Radar flagsARead-only
List Stream Radar flags for your releases, paginated — early-warning flags from streaming-integrity monitoring that surface possible artificial-streaming activity so you can act early. Filter by status, severity, dsp, isrc, release_id, and the last-detected date range (detected_from/detected_to). Stream Radar is an optional add-on; without it the API returns a 403, surfaced verbatim.
Inputs: dsp, isrc, page, status, +5 more.
list_track_licensesList track licensesARead-only
List the licenses attached to a track (e.g. cover/mechanical or sample clearances), paginated.
Inputs: track_id (required), page, per_page.
list_tracksList tracksARead-only
List tracks in your account, paginated. Filter by release_id to list a release’s tracks, or by isrc. Use get_track for one track’s full metadata, credits and splits.
Inputs: isrc, page, per_page, release_id.
list_transactionsList transactionsBRead-only
List account transactions, paginated. Filter by label_id, release_id, isrc, upc, and a start_date/end_date range; sort with sort; pass group_by="release" to roll up per release.
Inputs: upc, isrc, page, sort, +6 more.
list_webhook_event_typesList webhook event typesARead-only
List every available webhook event type, each with the schema of the payload it delivers. Use it to decide which events to subscribe a webhook to.
Inputs: no named parameters.
list_webhooksList webhooksARead-only
List the webhook subscriptions configured on your account, each with its URL, subscribed events and active state.
Inputs: no named parameters.
list_writersList writersARead-only
List the songwriters in your account, paginated. Filter by name or ipi. Writers are attached to tracks for composition credits and royalty splits.
Inputs: ipi, name, page, per_page.
refresh_quality_reportRefresh the quality reportAIdempotent
Re-run the Preflight QC automated checks and refresh the release’s quality report. Read the results with get_quality_report. The server applies an hourly refresh budget, so frequent calls may be rate-limited. Preflight QC is an optional add-on.
Inputs: release_id (required).
revoke_api_tokenRevoke an API tokenADestructiveIdempotent
Revoke a LabelGrid API token. Pass token_id to revoke a specific token; omit it to revoke the token currently in use. WARNING: revoking the current token immediately ends this session — the server loses access and stops working until you configure a new token.
Inputs: token_id.
rotate_webhook_secretRotate a webhook signing secretADestructive
Generate a new signing secret for a webhook and return it. WARNING: the old secret stops working immediately — update your endpoint’s signature verification with the new secret right away or deliveries will fail verification.
Inputs: webhook_id (required).
setupSet up the LabelGrid connectionARead-only
This LabelGrid MCP server is not connected to an account yet because no API token is configured. Call this tool to get step-by-step instructions to walk the user through creating a LabelGrid API token and adding it to their MCP client configuration. Returns the setup steps, ready-to-copy client config examples (with a placeholder token), a security note, and the optional settings. Makes no API calls.
Inputs: no named parameters.
takedown_releaseTake down a releaseADestructive
Take a release down from ALL outlets/stores — a final, consequential action that removes it everywhere it was delivered. Re-distribution afterward is a fresh submission.
Inputs: release_id (required).
test_webhookSend a test webhook eventAIdempotent
Send a test event to a webhook’s endpoint so you can confirm it is reachable and your signature verification works. Safe to repeat.
Inputs: webhook_id (required).
update_artistUpdate an artistB
Update an artist. Supply only the fields you want to change in fields.
Inputs: fields (required), artist_id (required).
update_labelUpdate a labelA
Update a label. Supply only the fields you want to change in fields.
Inputs: fields (required), label_id (required).
update_landing_configUpdate a release landing-page configA
Set the smart-link landing-page configuration for a release. actions uses the current (v2) action-list contract — each entry describes one call-to-action on the page. You can also set links_page_enabled, config_mode, page_style, custom_cta_text, custom_description, and pre_order_links. This replaces the landing configuration.
Inputs: release_id (required), actions, page_style, config_mode, +4 more.
update_publisherUpdate a publisherA
Update a publisher. Supply only the fields you want to change in fields.
Inputs: fields (required), publisher_id (required).
update_releaseUpdate a releaseA
Update a release’s metadata. Supply only the fields you want to change in fields. Once a release has been submitted or distributed, some fields are locked: attempting to change a locked field returns a 403 with code RELEASE_LOCKED_FIELDS, surfaced verbatim so you can see exactly which fields cannot be changed.
Inputs: fields (required), release_id (required).
update_trackUpdate a trackA
Update a track’s metadata. Supply only the fields you want to change in fields. As with releases, some fields lock once the parent release is submitted or distributed.
Inputs: fields (required), track_id (required).
update_track_licenseUpdate a track licenseA
Replace the file and/or metadata of an existing track license. track_license_id is the id of the license (from list_track_licenses); file_path is the license file to submit. Optionally update license_id, license_provider, license_provider_name, and original_track_link.
Inputs: track_id (required), file_path (required), track_license_id (required), license_id, +3 more.
update_webhookUpdate a webhookA
Update a webhook subscription. Supply only the fields you want to change: name, url, events, or is_active (set false to pause deliveries).
Inputs: webhook_id (required), url, name, events, +1 more.
update_writerUpdate a writerC
Update a writer. Supply only the fields you want to change in fields.
Inputs: fields (required), writer_id (required).
upload_artist_photoUpload an artist photoB
Upload an artist photo from a local file. file_path must be a local image file.
Inputs: artist_id (required), file_path (required).
upload_label_imageUpload a label imageB
Upload a label image from a local file. image_type selects which asset: logo, logo-dark (a dark-mode variant), or background. file_path must be a local image file.
Inputs: label_id (required), file_path (required), image_type (required).
upload_release_artworkUpload release cover artA
Upload or replace the release’s static cover art image from a local file. Cover art is immutable once the release is distributed — upload the final artwork before distributing.
Inputs: file_path (required), release_id (required).
upload_release_assetUpload a release animated cover videoA
Upload a finalized animated cover (motion artwork) video for a release — the square or the tall/portrait cover video. The video is uploaded directly to storage and then processed; check its state with get_release_file. Upload the correct video before distributing — it is immutable once the release is live. For the static cover art image use upload_release_artwork.
Inputs: file_path (required), asset_type (required), release_id (required).
upload_track_audioUpload a track audio/lyrics fileA
Upload a finalized audio file (stereo WAV/FLAC or Dolby Atmos) or lyrics (LRC) file for a track. The file is uploaded directly to storage and then processed asynchronously; check its state with get_track_file. Once a release is distributed the file is immutable — upload the correct master before distributing.
Inputs: track_id (required), file_path (required), file_type (required).
upload_track_licenseUpload a track licenseA
Attach a license document to a track (for a cover or a cleared sample). file_path is the local license file and type is "cover" or "sample". Optionally record license_id, license_provider, license_provider_name, and original_track_link. Licenses are immutability-governed once the release is live.
Inputs: type (required), track_id (required), file_path (required), license_id, +3 more.
validate_releaseValidate a releaseAIdempotent
Run validation on a release and return any problems that would block distribution, as both a human-readable errors list and a machine-readable errors_structured list. This is a near-read check: it changes nothing and is safe to repeat. Run it before distributing.
Inputs: release_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 84 tools
Each tool targets a distinct resource and action (e.g., create_artist, get_release, list_review_issues). Even with many list/get tools, their parameters and purposes are clearly differentiated. No two tools appear to do the same thing.
The vast majority use the verb_noun snake_case pattern (create_, get_, list_, update_, delete_, upload_, download_). Minor exceptions like 'setup' and 'takedown_release' are still understandable and do not break the pattern significantly.
With 84 tools, the server is over-scoped for typical use. While the domain is complex, this many tools can confuse an agent and increase surface area unnecessarily. A more focused set would improve coherence.
The tool set covers the full lifecycle for artists, labels, releases, tracks, licenses, webhooks, etc. It includes creation, retrieval, update, deletion, upload/download, validation, distribution, and analytics. There are no obvious dead ends or missing operations for the stated purpose.
Maintenance
Related MCP Connectors
Hosted MCP server for live public-data APIs and Skills for AI agents.
Official MCP server for Lovable, the AI-powered full-stack app builder.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
The official MCP Server for the Mux API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to the Beatport API for music discovery and data retrieval, enabling users to search for tracks, artists, labels, releases, and charts through natural language.4MIT
- AlicenseNot gradedqualityBmaintenanceA powerful Model Context Protocol (MCP) server that enables AI assistants to interact with your personal Discogs music collection.10 npm18MIT
- FlicenseBqualityDmaintenanceMCP server for managing Cassette music releases and Creator clips through AI assistants via personal access tokens.282 npm-
- AlicenseNot gradedqualityDmaintenanceOfficial MCP server for the Lacuna Music API. Generate AI music — full songs with vocals and lyrics, or instrumentals — with style prompts, task status polling, and audio downloads.5MIT