🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@labelgrid/mcp

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@labelgrid/mcp - npm Package Compare versions

Comparing version
0.6.0
to
0.6.1
+16
-0
CHANGELOG.md

@@ -8,2 +8,18 @@ # Changelog

## [0.6.1] - 2026-08-05
### Changed
- `get_analytics` states how the summary aggregates: every section aggregates
over the resolved filter scope, so a `upc` filter returns release totals
rather than a row per track. Per-track output comes from the `track-*-daily`
sections (which need a `release_id`, `isrc` or `upc` scope) or from
`get_analytics_rankings`.
- `get_analytics_rankings` is described as the per-entity breakdown of a scope
as well as a leaderboard — `type: 'tracks'` with a `upc` or `release_id`
filter ranks the tracks on that release.
- Descriptions on the `metrics`, `view` and `type` parameters were removed where
they restated the parameter's own enum or its tool description. No parameter,
enum value or validation rule changed.
## [0.6.0] - 2026-08-05

@@ -10,0 +26,0 @@

+20
-25

@@ -10,5 +10,7 @@ /**

/**
* The 47 metric sections the summary endpoint can return, in the server's
* canonical order: the streaming sections first, then the social and UGC
* family, then the per-track daily series.
* The 47 metric sections the summary endpoint can return. The server's canonical
* order — the order it projects sections into the response — is the streaming
* sections, then the per-track daily series, then the social and UGC family.
* This list groups the social and UGC family last instead; only membership
* matters here, since the enum validates which keys are legal, not their order.
*/

@@ -100,21 +102,14 @@ const METRICS = [

title: 'Get streaming and social analytics',
description: 'Streaming analytics summary. Window capped at 400 days; `metrics` takes 1-12 section keys per request (split larger selections — responses are cached). ' +
'KUGOU/KUWO/QQMUSIC report weekly: one point per week carrying the whole week — never average it per day. `meta` carries `platform_cadence`, `section_granularity`, `sections_as_of` and `sections_complete_through` (later dates still filling in). ' +
'Call get_analytics_availability first for section-per-platform support. ' +
'The `social-*` / `soundcloud-engagement` sections cover social and UGC usage instead of streaming: their `platform` is a UGC platform; a use, view and play are distinct quantities, never summed with each other or with streams; `ugc_platform` narrows them. Selecting any adds `meta.social_availability` (which UGC platforms report each signal) — the streaming matrix excludes them. ' +
'The `track-*-daily` sections need a `release_id`, `isrc` or `upc` scope. `track-listeners-daily` sums per-entry daily counts: not distinct people, not summable across dates. ' +
'Rate-limited ~60/min; windows over 90 days draw a separate lower ~30/min budget — prefer shorter windows for polling. A 429 carries retry_after_seconds.',
description: 'Streaming analytics summary. Window capped at 400 days; `metrics` takes 1-12 section keys per request (split larger selections; responses cached). ' +
'KUGOU/KUWO/QQMUSIC report weekly: one point carries the whole week — never average per day. `meta` carries `platform_cadence`, `section_granularity`, `sections_as_of` and `sections_complete_through` (later dates still filling in). ' +
'See get_analytics_availability for per-platform support. ' +
'Sections aggregate over the resolved filter scope: a `upc` filter gives release totals, not per-track rows. For those use `track-*-daily` (needs a `release_id`, `isrc` or `upc` scope) or get_analytics_rankings. `track-listeners-daily` sums per-entry daily counts: not distinct people, not summable across dates. ' +
'`social-*` / `soundcloud-engagement` cover social/UGC usage, not streaming: `platform` is a UGC platform, `ugc_platform` narrows them; use, view and play are distinct quantities never summed together or with streams. Selecting any adds `meta.social_availability` (which UGC platforms report each signal); the streaming matrix omits them. ' +
'Rate-limited ~60/min; windows over 90 days draw a separate ~30/min budget — prefer short windows for polling. A 429 carries retry_after_seconds.',
inputShape: {
start_date: z.string().describe('Window start, YYYY-MM-DD.'),
end_date: z.string().describe('Window end, YYYY-MM-DD.'),
metrics: z
.array(z.enum(METRICS))
.min(1)
.max(MAX_METRICS_PER_REQUEST)
.describe('Section keys, 1-12 per request.'),
metrics: z.array(z.enum(METRICS)).min(1).max(MAX_METRICS_PER_REQUEST),
platform: z.enum(PLATFORMS).optional(),
ugc_platform: z
.enum(UGC_PLATFORMS)
.optional()
.describe('Narrows the social/UGC sections only.'),
ugc_platform: z.enum(UGC_PLATFORMS).optional().describe('Social/UGC sections only.'),
release_id: z.number().int().positive().optional(),

@@ -163,11 +158,11 @@ isrc: z.string().optional(),

title: 'Get analytics rankings',
description: 'Top-N rankings for a window, ordered by summed streams. Pick ONE `view`: ' +
'`leaderboards` — your top artists, tracks or albums (`type` required; `all` returns all three in one request). ' +
'`placements` — the playlists and radio containers driving streams, summed across storefronts. ' +
'Same scope filters as get_analytics; `limit` 1-50 (default 10). Under a `platform` filter, an `availability` of `not_available_for_platform` means that platform reports no ranking and `data` is empty.',
description: 'Top-N rankings for a window, ordered by summed streams — the per-entity breakdown of a scope: `type` tracks with a `upc`/`release_id` filter ranks the tracks on that release. Pick ONE `view`: ' +
'`leaderboards` — your top artists, tracks or albums (`type` required; `all` returns all three in one call). ' +
'`placements` — playlists and radio containers driving streams, summed across storefronts. ' +
'Same scope filters as get_analytics; `limit` 1-50 (default 10). Under a `platform` filter, `availability: not_available_for_platform` means no ranking there and `data` is empty.',
inputShape: {
view: z.enum(RANKING_VIEWS).describe('Which ranking read.'),
view: z.enum(RANKING_VIEWS),
start_date: z.string().describe('Window start, YYYY-MM-DD.'),
end_date: z.string().describe('Window end, YYYY-MM-DD.'),
type: z.enum(LEADERBOARD_TYPES).optional().describe('Required for view leaderboards.'),
type: z.enum(LEADERBOARD_TYPES).optional(),
platform: z.enum(PLATFORMS).optional(),

@@ -184,3 +179,3 @@ ugc_platform: z.enum(UGC_PLATFORMS).optional(),

.optional()
.describe('Narrow to one of your own labels; it can never widen scope.'),
.describe('Narrow to one of your own labels; never widens scope.'),
limit: z.number().int().positive().max(MAX_RANKING_LIMIT).optional(),

@@ -187,0 +182,0 @@ },

{
"name": "@labelgrid/mcp",
"version": "0.6.0",
"version": "0.6.1",
"mcpName": "io.github.labelgrid/labelgrid-mcp",

@@ -5,0 +5,0 @@ "description": "Official LabelGrid MCP server — connect your AI client to your LabelGrid account",

@@ -152,5 +152,5 @@ # LabelGrid MCP Server

| --- | --- | --- |
| `get_analytics` | read | Streaming analytics summary. Window capped at 400 days; `metrics` takes 1-12 section keys per request (split larger selections — responses are cached). KUGOU/KUWO/QQMUSIC report weekly: one point per week carrying the whole week — never average it per day. `meta` carries `platform_cadence`, `section_granularity`, `sections_as_of` and `sections_complete_through` (later dates still filling in). Call get_analytics_availability first for section-per-platform support. The `social-*` / `soundcloud-engagement` sections cover social and UGC usage instead of streaming: their `platform` is a UGC platform; a use, view and play are distinct quantities, never summed with each other or with streams; `ugc_platform` narrows them. Selecting any adds `meta.social_availability` (which UGC platforms report each signal) — the streaming matrix excludes them. The `track-*-daily` sections need a `release_id`, `isrc` or `upc` scope. `track-listeners-daily` sums per-entry daily counts: not distinct people, not summable across dates. Rate-limited ~60/min; windows over 90 days draw a separate lower ~30/min budget — prefer shorter windows for polling. A 429 carries retry_after_seconds. |
| `get_analytics` | read | Streaming analytics summary. Window capped at 400 days; `metrics` takes 1-12 section keys per request (split larger selections; responses cached). KUGOU/KUWO/QQMUSIC report weekly: one point carries the whole week — never average per day. `meta` carries `platform_cadence`, `section_granularity`, `sections_as_of` and `sections_complete_through` (later dates still filling in). See get_analytics_availability for per-platform support. Sections aggregate over the resolved filter scope: a `upc` filter gives release totals, not per-track rows. For those use `track-*-daily` (needs a `release_id`, `isrc` or `upc` scope) or get_analytics_rankings. `track-listeners-daily` sums per-entry daily counts: not distinct people, not summable across dates. `social-*` / `soundcloud-engagement` cover social/UGC usage, not streaming: `platform` is a UGC platform, `ugc_platform` narrows them; use, view and play are distinct quantities never summed together or with streams. Selecting any adds `meta.social_availability` (which UGC platforms report each signal); the streaming matrix omits them. Rate-limited ~60/min; windows over 90 days draw a separate ~30/min budget — prefer short windows for polling. A 429 carries retry_after_seconds. |
| `get_analytics_availability` | read | Static `availability` matrix (per section, per platform) plus `platform_cadence` (daily\|weekly per platform). Account- and date-independent: fetch once, reuse. Read it before get_analytics so an unreported section is treated as unavailable, not an empty chart. |
| `get_analytics_rankings` | read | Top-N rankings for a window, ordered by summed streams. Pick ONE `view`: `leaderboards` — your top artists, tracks or albums (`type` required; `all` returns all three in one request). `placements` — the playlists and radio containers driving streams, summed across storefronts. Same scope filters as get_analytics; `limit` 1-50 (default 10). Under a `platform` filter, an `availability` of `not_available_for_platform` means that platform reports no ranking and `data` is empty. |
| `get_analytics_rankings` | read | Top-N rankings for a window, ordered by summed streams — the per-entity breakdown of a scope: `type` tracks with a `upc`/`release_id` filter ranks the tracks on that release. Pick ONE `view`: `leaderboards` — your top artists, tracks or albums (`type` required; `all` returns all three in one call). `placements` — playlists and radio containers driving streams, summed across storefronts. Same scope filters as get_analytics; `limit` 1-50 (default 10). Under a `platform` filter, `availability: not_available_for_platform` means no ranking there and `data` is empty. |
| `query_artificial_streaming` | read | Artificial-streaming (streaming-integrity) reads. Pick ONE `view`: `flags` — Stream Radar early-warning flags, paginated (`filters`: status, severity, dsp, isrc, release_id, detected_from/detected_to). Stream Radar is an optional add-on; without it the API returns a 403, surfaced verbatim. `flag_detail` — one flag by `flag_id`. `records` — reported artificial-streaming records, cursor-paginated; the detail behind any artificial-streaming fee (`filters`: dsp, start_date/end_date, release_id, isrc). `fee_breakdown` — per-release fee breakdown for one `period` (YYYY-MM). response_format:'detailed' returns the verbatim API response. |

@@ -157,0 +157,0 @@

@@ -5,3 +5,3 @@ {

"description": "Official LabelGrid MCP server — manage your music catalog, releases, analytics and distribution.",
"version": "0.6.0",
"version": "0.6.1",
"websiteUrl": "https://labelgrid.com",

@@ -16,3 +16,3 @@ "repository": {

"identifier": "@labelgrid/mcp",
"version": "0.6.0",
"version": "0.6.1",
"transport": {

@@ -19,0 +19,0 @@ "type": "stdio"