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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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