LabelGrid MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LABELGRID_API_URL | No | Override the API base URL. | production API |
| LABELGRID_TOOLSETS | No | Comma-separated subset of toolsets to expose. | all |
| LABELGRID_API_TOKEN | No | Your LabelGrid API token. If not provided, the server runs in setup mode. | |
| LABELGRID_READ_ONLY | No | Force reads only; overrides both write flags. | false |
| LABELGRID_ENABLE_WRITES | No | Safe writes (create/update drafts, labels, artists, …). Set false for reads only. | true |
| LABELGRID_FULL_WRITES_ACK | No | Must equal the exact acknowledgment sentence to arm full writes. | |
| LABELGRID_ENABLE_FULL_WRITES | No | Arm full writes — see Safety model. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| setupA | 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. |
| get_meA | 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. |
| revoke_api_tokenA | 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. |
| list_reference_dataA | Fetch a LabelGrid reference dataset used to resolve the IDs and codes that catalog and release tools expect. Pick ONE dataset with |
| get_analyticsA | Retrieve a streaming analytics summary for your catalog in a single call. |
| list_labelsA | 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. |
| get_labelA | Retrieve one label by id, including its settings and defaults. |
| list_artistsA | List the artists in your account, paginated. Filter by |
| get_artistA | Retrieve one artist by id, including bio, identifiers and platform links. |
| list_writersA | List the songwriters in your account, paginated. Filter by |
| get_writerA | Retrieve one writer by id, including PRO/IPI identifiers and publisher link. |
| list_publishersA | List the publishers in your account, paginated. Filter by |
| get_publisherA | Retrieve one publisher by id. |
| list_releasesA | List releases in your account, paginated. Filter by |
| get_releaseA | Retrieve one release by id, including its metadata, artwork state and track listing. |
| list_tracksA | List tracks in your account, paginated. Filter by |
| get_trackB | Retrieve one track by id, including titles, contributors, writers, publishers and royalty splits. |
| get_track_fileA | 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. |
| get_track_audio_download_urlA | Return a time-limited, signed URL to download one of a track’s audio assets. |
| list_track_licensesA | List the licenses attached to a track (e.g. cover/mechanical or sample clearances), paginated. |
| get_track_licenseA | Retrieve one license attached to a track by its license id. |
| get_release_fileA | Retrieve metadata about a release animated cover (motion artwork) video asset — the square or the tall/portrait cover video — including its processing state. |
| list_review_issuesA | List the review issues raised against a release during its automated quality checks. |
| list_issue_definitionsA | 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. |
| get_quality_reportA | 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. |
| list_stream_radar_flagsA | 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. |
| get_stream_radar_flagA | 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. |
| get_delivery_queueA | 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 |
| get_landing_configA | 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. |
| list_statementsA | 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. |
| get_statementA | Retrieve one royalty statement by its invoice number. |
| download_statement_csvA | 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. |
| download_statement_invoiceA | 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. |
| list_transactionsB | List account transactions, paginated. Filter by label_id, release_id, isrc, upc, and a start_date/end_date range; sort with |
| get_royalties_breakdownA | 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. |
| list_artificial_streamsA | 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. |
| get_artificial_fee_breakdownA | Retrieve the per-release breakdown of an artificial-streaming fee for one billing period. |
| get_account_summaryA | Retrieve your accounting summary — current balance and related account-level financial totals. |
| list_webhooksA | List the webhook subscriptions configured on your account, each with its URL, subscribed events and active state. |
| get_webhookA | Retrieve one webhook subscription by id. |
| get_webhook_logsA | 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. |
| list_webhook_event_typesA | 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. |
| create_webhookA | Create a webhook subscription. |
| update_webhookA | Update a webhook subscription. Supply only the fields you want to change: |
| delete_webhookA | Delete a webhook subscription permanently. It will stop receiving events. |
| test_webhookA | Send a test event to a webhook’s endpoint so you can confirm it is reachable and your signature verification works. Safe to repeat. |
| rotate_webhook_secretA | 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. |
| create_labelB | Create a new label. Pass its attributes in |
| update_labelA | Update a label. Supply only the fields you want to change in |
| delete_labelA | Delete a label. The API refuses to delete a label that still has releases — remove or reassign its releases first. |
| upload_label_imageB | Upload a label image from a local file. |
| create_artistB | Create a new artist. Pass its attributes in |
| update_artistB | Update an artist. Supply only the fields you want to change in |
| delete_artistA | Delete an artist. The API refuses deletion when the artist is still referenced by releases or tracks. |
| upload_artist_photoB | Upload an artist photo from a local file. |
| create_writerA | Create a new songwriter. Pass its attributes in |
| update_writerC | Update a writer. Supply only the fields you want to change in |
| delete_writerA | Delete a writer. The API refuses deletion when the writer is still referenced by tracks. |
| create_publisherB | Create a new publisher. Pass its attributes in |
| update_publisherA | Update a publisher. Supply only the fields you want to change in |
| delete_publisherA | Delete a publisher. The API refuses deletion when the publisher is still referenced by writers. |
| create_releaseA | Create a new release in DRAFT state. Pass its metadata in |
| update_releaseA | Update a release’s metadata. Supply only the fields you want to change in |
| delete_releaseA | 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. |
| create_trackA | Create a track on a release. Pass its metadata in |
| update_trackA | Update a track’s metadata. Supply only the fields you want to change in |
| delete_trackA | Delete a track. Allowed while the parent release is an editable draft; the API refuses once the release is submitted or distributed. |
| validate_releaseA | Run validation on a release and return any problems that would block distribution, as both a human-readable |
| refresh_quality_reportA | 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. |
| update_landing_configA | Set the smart-link landing-page configuration for a release. |
| create_release_short_urlA | Create (or return the existing) short URL for a release’s smart-link landing page. Safe to repeat. |
| add_review_issue_noteA | Add a note to a release review issue — for example to explain a fix or add context for the reviewer. |
| upload_track_audioA | 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. |
| delete_track_audioA | 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. |
| upload_release_assetA | 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. |
| delete_release_assetA | 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. |
| upload_release_artworkA | 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. |
| upload_track_licenseA | Attach a license document to a track (for a cover or a cleared sample). |
| update_track_licenseA | Replace the file and/or metadata of an existing track license. |
| delete_track_licenseA | Permanently delete a track license and its file. |
| distribute_releaseA | 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. |
| takedown_releaseA | 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. |
| confirm_reviewA | 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. |
| enable_beatportA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/labelgrid/labelgrid-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server