# io.github.labelgrid/labelgrid-mcp (npm · @labelgrid/mcp)

Official LabelGrid MCP server — manage your music catalog, releases, analytics and distribution.

- Trust score: 76/100 (medium)
- Change this week: +25
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@labelgrid/mcp`: 76/100 (this document), [markdown](https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp.md), [page](https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp)

## Channel facts

- Registry: `npm`
- Package: `@labelgrid/mcp`
- Version: `0.4.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to labelgrid/labelgrid-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5227 tokens (~137/item across 38 items; 29 tools + 9 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 88% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add labelgrid-labelgrid-mcp -- npx -y @labelgrid/mcp
```

### Codex

```bash
codex mcp add labelgrid-labelgrid-mcp -- npx -y @labelgrid/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "labelgrid-labelgrid-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@labelgrid/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add labelgrid-labelgrid-mcp --command npx --arg -y --arg @labelgrid/mcp
```

### Hermes

```yaml
mcp_servers:
  labelgrid-labelgrid-mcp:
    command: "npx"
    args: ["-y", "@labelgrid/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "labelgrid-labelgrid-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@labelgrid/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 76, +51)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: labelgrid/labelgrid-mcp
- [functional improvement] Schema quality: unverified → good
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 25, +20)

- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100

### 2026-07-31 (score 5, −50)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 55, −30)

- [security regression] Malware scan: pass → unverified
- [security regression] Provenance: pass → unverified
- [security] The attested source repository moved: labelgrid/labelgrid-mcp

### 2026-07-29 (score 85, +34)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: labelgrid/labelgrid-mcp
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-07-28 (score 51, 0)

- [functional] Package version: 0.3.1 → 0.4.0

### 2026-07-27 (score 51)

First indexed and scored.

## MCP tools (29)

### `setup` (~86 tokens)

Set up the LabelGrid connection

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_account` (~87 tokens)

Get account

Read the authenticated LabelGrid account. Pick ONE view with `view`: `profile` returns the account profile — including the release submission limit/quota and terms-acceptance status — use it to confirm which account your API token belongs to before making other calls; `balance` returns your accounting summary — current balance and related account-level financial totals.

Input parameters:

- `view` (string, required): Which account read.

### `revoke_api_token` (~70 tokens)

Revoke an API token

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.

Input parameters:

- `token_id` (integer)

### `list_reference_data` (~183 tokens)

List reference data

Fetch a LabelGrid reference dataset used to resolve the IDs and codes the catalog and release tools expect. Pick ONE dataset with `type`: `genres` and `genre_categories` (genre IDs), `languages` (audio/metadata language codes), `contributor_roles`, `instruments`, `distro_outlets` (the outlets/stores available to your account), `territories` (country codes), `issue_definitions` (each review issue code’s title, description, severity and whether it blocks distribution; codes are string slugs), or `webhook_event_types` (every webhook event type with its payload schema). Call this when you need a valid ID or code. The same datasets are exposed as MCP resources at labelgrid://reference/{type}; this tool is the fallback for clients that don’t surface resources.

Input parameters:

- `type` (string, required)

### `search_catalog` (~263 tokens)

Search the catalog

List catalog entities of one kind, paginated. Pick the kind with `entity`: label, artist, writer, publisher, release, or track. `filters` takes the endpoint’s own filter names, passed through verbatim — label: no documented filters — paginate with page/per_page. artist: artist_name (filter by artist name). writer: name (writer name), ipi (IPI number). publisher: name (publisher name), ipi (IPI number). release: label_id (owning label id), is_live (1 = live/distributed only), barcode_number (UPC/EAN), cat (catalog number). track: release_id (one release’s tracks), isrc (filter by ISRC). Use get_catalog_item for one entity's full detail. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `entity` (string, required): The catalog entity kind.
- `filters` (object): Filter names → values, passed through verbatim.
- `page` (integer): 1-based page number.
- `per_page` (integer): Items per page.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.

### `get_catalog_item` (~147 tokens)

Get a catalog item

Retrieve one catalog entity by id, with its full detail — a label’s settings, an artist’s identifiers and links, a writer’s PRO/IPI, a release’s metadata and track listing, a track’s contributors and royalty splits. Pick the kind with `entity`: label, artist, writer, publisher, release, or track. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `entity` (string, required): The catalog entity kind.
- `id` (integer, required): The entity id.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.

### `create_catalog_item` (~418 tokens)

Create a catalog item

Create a catalog entity. Pick the kind with `entity` and pass its attributes in `fields` — the API owns all validation. Required and common fields per entity: label — required: name, default_email; optional: support email, website/platform URLs, default copyright lines, isrc_base. artist — required: artist_name; optional: full_name, email, location, bios, isni, default_language, platform profile URLs. writer — required: first_name, last_name; optional: middle_name, display_credits, email, country, pro, ipi, isni, publisher_id (or publisher_name/publisher_pro/publisher_ipi). publisher — required: name; optional: ipi, pro, isni, controlled_publisher. release — required on create: content_type, label_id, artists, titles, cat (catalog number), artwork_ai_usage, primary_genre_id; many optional fields (dates, copyright lines, genres, per-outlet URLs). Once submitted or distributed some fields are locked — changing one returns a 403 with code RELEASE_LOCKED_FIELDS naming exactly which fields cannot change. track — required on create: release_id, disc, track_num, composition_type, artists, audio_ai_usage, composition_ai_usage, commercial_samples, audio_language, contributors, and recording_country (ISO 3166-1 alpha-2, e.g. "US"); optional: titles, isrc, iswc, writers, publishers, splits, and more. A release is created in DRAFT state — add tracks, then run the release checks before distributing. `idempotency_key` is honored for release and track only.

Input parameters:

- `entity` (string, required): The catalog entity kind.
- `fields` (object, required): The entity attributes, forwarded verbatim.
- `idempotency_key` (string): Honored for release and track only: the server deduplicates by this key for 24h — reuse the SAME key when retrying an unobserved call. Ignored for other entities.

### `update_catalog_item` (~125 tokens)

Update a catalog item

Update a catalog entity. Pick the kind with `entity`, supply only the fields you want to change in `fields` (same field sets as create_catalog_item). For releases: once submitted or distributed, some fields are locked — changing one returns a 403 with code RELEASE_LOCKED_FIELDS naming exactly which fields cannot change. Track fields lock the same way once the parent release is submitted or distributed.

Input parameters:

- `entity` (string, required): The catalog entity kind.
- `fields` (object, required): The fields to change, forwarded verbatim.
- `id` (integer, required): The entity id.

### `delete_catalog_item` (~123 tokens)

Delete a catalog item

Delete a catalog entity by id. The API refuses deletes that would orphan data — label: refused while the label still has releases — remove or reassign its releases first. artist: refused while still referenced by releases or tracks. writer: refused while still referenced by tracks. publisher: refused while still referenced by writers. release: only a never-submitted draft can be deleted. track: allowed while the parent release is an editable draft; refused once submitted or distributed.

Input parameters:

- `entity` (string, required): The catalog entity kind.
- `id` (integer, required): The entity id.

### `upload_image` (~120 tokens)

Upload a catalog image

Upload a label image or an artist photo from a local file. `target`: label_logo, label_logo_dark (a dark-mode variant), label_background, or artist_photo. `id` is the label id for label_* and the artist id for artist_photo. `file_path` must be a local image file.

Input parameters:

- `file_path` (string, required): Local path to the image file to upload.
- `id` (integer, required): The label id (label_*) or artist id (artist_photo).
- `target` (string, required): Which image asset to upload.

### `get_asset` (~247 tokens)

Get an asset

Read a track or release asset. Valid selector matrices: (1) mode='info', parent='track', asset stereo|dolby|lyrics — file metadata (not the bytes) incl. processing state. (2) mode='info', parent='release', asset square|tall — animated cover (motion artwork) video metadata incl. processing state. (3) mode='download_url', parent='track', asset audio_16|audio_24|audio_32 (WAV master at that bit depth) or audio_preview_full|audio_preview_clip (generated MP3 preview) — returns { download_url, expires_in }: a signed URL that expires roughly 10 minutes after issue; fetch it directly — do not send your API token to it. Any other combination has no endpoint and returns a structured error. mode defaults to info.

Input parameters:

- `asset` (string, required): Which asset — see the description for the valid parent/mode pairings.
- `id` (integer, required): The track id or release id, per `parent`.
- `mode` (string): info (default) returns file metadata; download_url returns a signed URL.
- `parent` (string, required): Whose asset.

### `get_release_review` (~198 tokens)

Get release review results

Read a release's automated quality-check results. Pick ONE view with `view`: `issues` lists the review issues raised against the release — each carries a code (see list_reference_data type issue_definitions), severity, and whether it blocks distribution; use it to see what must be fixed before the release can go out. `quality_report` retrieves the Preflight QC quality report — the customer-facing issues found by the automated checks, to review before confirming the release into distribution; Preflight QC is an optional add-on — without it the API returns a 403, surfaced verbatim. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `release_id` (integer, required): The release id.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.
- `view` (string, required): Which review read.

### `get_delivery_queue` (~178 tokens)

Get the distribution queue

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) — where a release is in the delivery pipeline to each store. Filter by `release_id`, `outlet_id`, or `status`. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `outlet_id` (integer): Filter to one outlet/store.
- `page` (integer)
- `per_page` (integer)
- `release_id` (integer): Filter to one release.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.
- `status` (string): Filter by delivery status.

### `get_landing_config` (~72 tokens)

Get a release landing-page config

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 manage_release_links (action update_landing_config) to change it.

Input parameters:

- `release_id` (integer, required): The release id.

### `list_track_licenses` (~88 tokens)

List track licenses

List the licenses attached to a track (e.g. cover/mechanical or sample clearances), paginated. Pass `license_id` to retrieve one license by its id instead.

Input parameters:

- `license_id` (integer): Retrieve one license by id instead of listing.
- `page` (integer)
- `per_page` (integer)
- `track_id` (integer, required): The track id.

### `run_release_checks` (~145 tokens)

Run release checks

Run an automated check on a release. Pick ONE with `check`: `validate` returns any problems that would block distribution, as a human-readable `errors` list and a machine-readable `errors_structured` list — it changes nothing and is safe to repeat; run it before distributing. `refresh_quality_report` re-runs the Preflight QC checks and refreshes the quality report (read it with get_release_review view quality_report); the server applies an hourly refresh budget, so frequent calls may be rate-limited. Preflight QC is an optional add-on.

Input parameters:

- `check` (string, required): Which check to run.
- `release_id` (integer, required): The release id.

### `manage_release_links` (~161 tokens)

Manage a release smart link

Manage a release's smart-link landing page. Pick ONE action with `action`: `update_landing_config` replaces the landing-page configuration with `config` (required for this action) — `config.actions` uses the current (v2) action-list contract (one entry per call-to-action); other keys: links_page_enabled, config_mode, page_style, custom_cta_text, custom_description, pre_order_links. `create_short_url` creates (or returns the existing) short URL for the release's smart-link landing page — safe to repeat.

Input parameters:

- `action` (string, required): Which action.
- `config` (object): The landing-page configuration to set (required for update_landing_config).
- `release_id` (integer, required): The release id.

### `add_review_issue_note` (~65 tokens)

Add a note to a review issue

Add a note to a release review issue — to explain a fix or add reviewer context. `review_issue_id` comes from get_release_review view issues.

Input parameters:

- `note` (string, required): The note text to attach to the issue.
- `review_issue_id` (integer, required)

### `get_analytics` (~250 tokens)

Get streaming analytics

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` (see its enum) to request only a subset. Rate-limited (about 60 requests per minute); a 429 response carries retry_after_seconds.

Input parameters:

- `artist_names` (array): Filter to one or more artist names.
- `end_date` (string, required): End of the reporting window, YYYY-MM-DD (max 30-day span).
- `isrc` (string)
- `limit` (integer)
- `metrics` (array): Subset of metric sections to return; omit for all 15.
- `platform` (string)
- `release_id` (integer)
- `start_date` (string, required): Start of the reporting window, YYYY-MM-DD.
- `upc` (string)

### `query_artificial_streaming` (~345 tokens)

Query artificial-streaming data

Query artificial-streaming (streaming-integrity) data for your catalog. Pick ONE view with `view`: `flags` lists Stream Radar early-warning flags surfacing possible artificial-streaming activity so you can act early, paginated — `filters`: status, severity, dsp, isrc, release_id, detected_from/detected_to (YYYY-MM-DD). `flag_detail` retrieves one flag by `flag_id` (required). Stream Radar is an optional add-on; without it the API returns a 403, surfaced verbatim. `records` lists the artificial-streaming records reported for your catalog, cursor-paginated — the per-record detail behind any artificial-streaming fee; `filters`: dsp (spotify or apple), start_date/end_date, release_id, isrc. `fee_breakdown` retrieves the per-release breakdown of an artificial-streaming fee for one billing period — `period` (required) is YYYY-MM. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `cursor` (string): Pagination cursor (view records).
- `filters` (object): Filter names → values, passed through verbatim.
- `flag_id` (integer): Required for view flag_detail.
- `page` (integer): 1-based page number (view flags).
- `per_page` (integer): Items per page.
- `period` (string): YYYY-MM. Required for view fee_breakdown.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.
- `view` (string, required): Which artificial-streaming read.

### `query_financials` (~374 tokens)

Query financial data

Query your financial data. Pick ONE view with `view`: `statements` lists your royalty statements, paginated — `filters`: label_id, release_id, isrc, upc, start_date/end_date; group_by="release" rolls totals up per release. `statement_detail` retrieves one statement by `invoice_number` (required). `transactions` lists account transactions, paginated — same `filters`; sort with `sort`; group_by="release" rolls up per release. `royalty_breakdown` returns a cursor-paginated royalty breakdown — `group_by` is REQUIRED for this view: a comma-separated, ordered subset of: track, dsp, release, territory, period (e.g. "release,dsp"); same `filters`; pass `cursor` to page. Use download_statement for statement line items (CSV) or the invoice PDF. response_format:'detailed' returns the verbatim API response.

Input parameters:

- `cursor` (string): Pagination cursor (view royalty_breakdown).
- `filters` (object): label_id, release_id, isrc, upc, start_date, end_date — passed through verbatim.
- `group_by` (string): REQUIRED for royalty_breakdown (ordered subset: track, dsp, release, territory, period); "release" rolls statements/transactions up per release.
- `invoice_number` (string): Required for view statement_detail.
- `page` (integer): 1-based page number.
- `per_page` (integer): Items per page.
- `response_format` (string): 'concise' (default) keeps only the high-signal fields (ids always kept); 'detailed' returns the verbatim API response.
- `sort` (string): Sort expression (view transactions).
- `view` (string, required): Which financial read.

### `download_statement` (~239 tokens)

Download a statement file

Download statement files. `format: 'csv'` downloads statement line items — pass invoice_number for one statement, OR a start_date/end_date range to export across statements; with save_to_path (an absolute path whose parent directory exists) the CSV is written there and the byte count returned; otherwise it is returned inline, truncated at 100KB (truncated: true) — use save_to_path for large exports. `format: 'invoice_pdf'` downloads the invoice PDF — invoice_number and save_to_path are both REQUIRED (the PDF is binary). An existing file is never overwritten (returns FILE_EXISTS).

Input parameters:

- `end_date` (string): CSV export range end, YYYY-MM-DD.
- `format` (string, required): Which file: csv (line items) or invoice_pdf (the invoice PDF).
- `invoice_number` (string): Single-statement invoice number. Required for format invoice_pdf.
- `save_to_path` (string): Absolute path (existing parent dir) to write the file to. Optional for csv (otherwise returned inline); required for invoice_pdf.
- `start_date` (string): CSV export range start, YYYY-MM-DD.

### `upload_asset` (~209 tokens)

Upload a release/track asset

Upload a finalized track or release asset from a local file. `id` is the track id for track_* targets, the release id for release_*. `track_stereo` (stereo audio, WAV/FLAC/AIFF), `track_dolby` (Dolby Atmos, WAV) and `track_lyrics` (LRC) upload directly to storage and process asynchronously — check state with get_asset (mode info). `release_cover_art` uploads or replaces the release's static cover art image. `release_motion_square` / `release_motion_tall` upload the animated cover (motion artwork) video — square or tall/portrait — also processed asynchronously. ALL of these become immutable once the release is distributed — upload the final files before distributing.

Input parameters:

- `file_path` (string, required): Local path to the file to upload.
- `id` (integer, required): The track id (track_*) or release id (release_*).
- `target` (string, required): Which asset to upload.

### `delete_asset` (~118 tokens)

Delete a release/track asset

Delete a track or release asset file. track_stereo|track_dolby|track_lyrics delete a track asset; release_motion_square|release_motion_tall delete an animated cover (motion artwork) video. Allowed only while the parent release is still an editable draft; the API refuses once the release is locked or distributed. Cover art has no delete endpoint and cannot be deleted here.

Input parameters:

- `id` (integer, required): The track id (track_*) or release id (release_motion_*).
- `target` (string, required): Which asset to delete.

### `manage_track_license` (~279 tokens)

Manage a track license

Manage the license documents attached to a track (for a cover or a cleared sample). Pick ONE action with `action`: `upload` attaches a new license — `file_path` required, `type` ('cover' or 'sample') selects the kind; optionally record license_id, license_provider, license_provider_name, original_track_link. `update` replaces the file and/or metadata of an existing license — `track_license_id` (from list_track_licenses) and `file_path` required. `delete` permanently deletes a license and its file — `track_license_id` required; cannot be undone. Licenses are immutability-governed once the release is live.

Input parameters:

- `action` (string, required): Which license action.
- `file_path` (string): Local path to the license file. Required for upload/update.
- `license_id` (string): The license/clearance reference number, if any.
- `license_provider` (string): Where the license came from.
- `license_provider_name` (string): The name of the license provider.
- `original_track_link` (string): URL to the original/source track.
- `track_id` (integer, required): The track id.
- `track_license_id` (integer): From list_track_licenses. Required for update/delete.
- `type` (string): Kind of license (upload).

### `distribute_release` (~137 tokens)

Distribute a release

Submit a release for distribution to the stores/outlets — the FINAL, consequential action that sends the release out; run_release_checks (check validate) should pass first. The server enforces your account’s weekly submission limit and returns a structured error if exceeded. Pass idempotency_key and reuse the SAME value when retrying an unobserved call; without a key each call is a new submission.

Input parameters:

- `idempotency_key` (string): The server deduplicates by this key for 24h — reuse the SAME key when retrying a call whose outcome you did not observe.
- `release_id` (integer, required): The release id.

### `takedown_release` (~53 tokens)

Take down a release

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.

Input parameters:

- `release_id` (integer, required): The release id.

### `confirm_review` (~55 tokens)

Confirm a held release into review

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.

Input parameters:

- `release_id` (integer, required): The release id.

### `enable_beatport` (~48 tokens)

Request Beatport onboarding for a label

Request Beatport onboarding for a label. A one-time action that cannot be un-requested, so confirm the label is correct first.

Input parameters:

- `label_id` (integer, required): The label id.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp#diagnostics

## Score history

- 2026-08-03: 76
- 2026-08-02: 76
- 2026-08-01: 25
- 2026-07-31: 5
- 2026-07-30: 55
- 2026-07-29: 85
- 2026-07-28: 51
- 2026-07-27: 51

## Links

- npm package: https://www.npmjs.com/package/@labelgrid/mcp
- Socket report: https://socket.dev/npm/package/@labelgrid/mcp
- Repository: https://github.com/labelgrid/labelgrid-mcp
- Website: https://labelgrid.com/
- Changelog RSS feed: https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/labelgrid-labelgrid-mcp/labelgrid-mcp
