SpotCheck
Server Details
SpotCheck scores any Spotify playlist 0 to 100 for bot-farm patterns from public data, and scans every playlist behind a distributor's artificial streaming warning. Free tier, no Spotify login. https://spotcheck.cc
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool targets a distinct action on a distinct resource: single-playlist scoring (check_playlist) vs. batch scoring (scan_warning_playlists) vs. monitor lifecycle (add/list/remove_monitor) vs. account introspection and curator contact extraction. The descriptions go further than most servers, explicitly cross-referencing the sibling tool to call instead (e.g. check_playlist telling you to use scan_warning_playlists for a pasted batch, list_monitors pointing to check_playlist for full snapshot series). The only mild adjacency — check_playlist's snapshots vs. list_monitors' deltas — is explicitly clarified in both descriptions.
Every name is snake_case verb_noun with a recognizable verb (add_, check_, get_, list_, remove_, scan_). The monitor family uses consistent add/list/remove prefixes over the same noun, making the CRUD grouping obvious. No mixed conventions or vague standalone verbs.
Seven tools is well within the sweet spot and every one earns its place: a scoring path (single + batch), a three-verb monitor lifecycle, account state, and curator contact extraction. Nothing looks redundant or speculative, and no capability is split across multiple near-duplicate tools.
The monitor lifecycle covers create, list, and delete, and read/analysis paths cover both single and bulk playlist scoring plus account state and contacts. The one real gap is the absence of an update_monitor operation (renaming a monitor or changing its tracked track requires remove + re-add), which the description documents as a workaround rather than hiding. Minor but present friction, not a dead end.
Available Tools
7 toolsadd_monitorAIdempotentInspect
Enrolls a Spotify playlist in automated cloud monitoring for daily follower snapshots, growth trend analysis, and inorganic spike alerts. Allows up to 25 monitored playlists per Premium account. Adding a playlist that is already monitored leaves its existing name and track_id unchanged; to change them, call remove_monitor first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional custom display label for the monitor. | |
| playlist | Yes | Spotify playlist URL, URI, or 22-character playlist ID to monitor. | |
| track_id | No | Optional 22-character Spotify track ID to track placement status alerts for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a premium account prerequisite, a per-account quota of 25 monitors, and the precise idempotent behavior for already-monitored playlists (name and track_id are preserved). It does not say what happens when the quota is exceeded or what the tool returns, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then limits, then the mutation caveat. Every sentence carries information that changes how the tool is used.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-read-only, idempotent enrollment tool with no output schema, the description covers purpose, prerequisite, quota, and duplicate-handling behavior adequately. It is only missing error-path behavior at the quota boundary and confirmation of what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it clarifies that name and track_id on an existing monitor are left untouched rather than overwritten. That is a real semantic distinction an agent could otherwise get wrong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Enrolls a Spotify playlist") and names the concrete outcomes: daily follower snapshots, growth trend analysis, and inorganic spike alerts. That scope clearly separates it from siblings like list_monitors, check_playlist, and remove_monitor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the right context (enrolling for ongoing monitoring) and supplies a hard constraint of 25 playlists per Premium account, so an agent can judge eligibility. It also routes the agent to remove_monitor when it needs to change an existing monitor's name or track_id. It stops short of an explicit when-not-to-use statement or a named alternative for one-off checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_playlistARead-onlyInspect
Scores one Spotify playlist for bot and fake-follower risk. Returns the playlist (id, name, curator, followers, tracks, url), botRisk.score from 0 to 100, botRisk.level (low, medium, high or editorial), the warning factors behind the score (follower-to-track ratio, generic naming, sudden follower spikes and similar), the caller tier, and the follower snapshots SpotCheck holds for the last 31 days. Use it when the question is about a single playlist, such as one an artist is about to pitch to or has just been added to. For a whole list pasted from Spotify for Artists after a distributor artificial-streaming warning, use scan_warning_playlists instead: it ranks up to 50 playlists in one call and drafts the replies. Limits: anonymous callers get 1 check a day and signed-in Free accounts 3; Free responses show only the most severe factor (lockedFactors counts the hidden ones) and no snapshots. Pro (£4.99/mo) and Premium (£14.99/mo) are unlimited and get every factor and the snapshot history. Call get_account_status to see what is left today. Read-only: it reads public Spotify data and stored snapshots and changes nothing apart from the daily usage count, which is refunded if Spotify fails. Errors: INVALID_PARAMS (not a playlist link), NOT_FOUND (deleted or private), SPOTIFY_PLAYLIST (Spotify-owned editorial or algorithmic playlists, which the API does not expose), UNVERIFIABLE, RATE_LIMITED (daily allowance used).
| Name | Required | Description | Default |
|---|---|---|---|
| playlist | Yes | Spotify playlist to look up, in any of three forms: a share URL ("https://open.spotify.com/playlist/1PmwMQY86pJuAm7veFt3u2", query strings such as ?si= are ignored), a URI ("spotify:playlist:1PmwMQY86pJuAm7veFt3u2") or the bare 22-character base-62 id ("1PmwMQY86pJuAm7veFt3u2"). Album, track and artist links are rejected with INVALID_PARAMS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds substantial context beyond that: daily quotas per tier, that Free responses hide factors (lockedFactors counts them) and snapshots, that Pro/Premium are unlimited, and that the usage count is refunded if Spotify fails. It also enumerates the six error codes including the notable SPOTIFY_PLAYLIST case for editorial/algorithmic playlists. Nothing here contradicts readOnlyHint=true, and the explicit 'changes nothing apart from the daily usage count' statement is a good-faith disclosure of the one side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and return shape, then usage, then limits, then errors — a sensible ordering that lets an agent stop reading early. It is dense but lengthy, and the exact pricing figures (£4.99/mo, £14.99/mo) are not load-bearing for tool selection; that is the main trimming opportunity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of describing return values, and it does so field by field (playlist id/name/curator/followers/tracks/url, score, level, factors, tier, 31-day snapshots). Combined with the enumerated error cases and tier-dependent visibility rules, an agent has everything needed to call this and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents all three accepted forms plus the rejection of album/track/artist links. The description only echoes the rejection indirectly via 'INVALID_PARAMS (not a playlist link)', adding essentially no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource: scores one Spotify playlist for bot and fake-follower risk. It then enumerates what the score consists of (botRisk.score 0-100, botRisk.level, warning factors), which makes the tool unmistakable against siblings like scan_warning_playlists or get_curator_contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use is given (a single playlist an artist is pitching to or was added to), along with an explicit alternative and its trigger condition (scan_warning_playlists for a list pasted from Spotify for Artists after an artificial-streaming warning, up to 50 at once). It also routes quota questions to get_account_status, so the agent is never left guessing which sibling to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_statusARead-onlyIdempotentInspect
Describes who SpotCheck thinks the caller is and what they can do right now. Returns email (null when anonymous), tier (free, pro or premium), isAnonymous, authMethod (oauth, session, api_key, anonymous or env_override), features (playlistChecking, fullFactorBreakdown, historicalTrends, curatorContacts, cloudMonitoring, maxMonitors), allowance (dailyChecksRemaining and unlimited; usageUnavailable is set when today's count could not be read) and upgradeUrl (null on paid tiers). Use it before other calls to plan: whether check_playlist has checks left today (anonymous 1 a day, Free 3, Pro and Premium unlimited), whether get_curator_contacts and the monitor tools will work (Premium, £14.99/mo), and whether the full factor breakdown is unlocked (Pro, £4.99/mo, or Premium). Takes no arguments, works without signing in, costs nothing and does not use up a check. Read-only and safe to repeat.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, yet the description adds genuinely new behavioral facts: it takes no arguments, works without signing in (auth behavior), costs nothing, and does not consume a check (quota side effect). It also documents null semantics for email and upgradeUrl and the usageUnavailable flag when today's count cannot be read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the pre-call planning directive, and every sentence carries information. It is a single dense paragraph with parenthesized field and pricing detail, which is informative but slightly hard to scan; a short field list would read faster without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must and does enumerate the return shape including null cases and the usageUnavailable edge case. Combined with auth, cost, and quota semantics for a zero-parameter tool, nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter meaning to add. The description correctly signals this with 'Takes no arguments', sparing the agent from opening an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Describes who SpotCheck thinks the caller is and what they can do right now.' The enumeration of returned fields (email, tier, isAnonymous, authMethod, features, allowance, upgradeUrl) makes it unmistakable against siblings like check_playlist or list_monitors, which are named as downstream consumers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Use it before other calls to plan' and then spells out the decision it enables for each sibling: whether check_playlist has checks left (with per-tier quotas), whether get_curator_contacts and the monitor tools will work (Premium), and whether the full factor breakdown is unlocked (Pro/Premium). This is concrete when-to-use routing with tier conditions, not vague advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_curator_contactsBRead-onlyInspect
Extracts public submission contact channels (emails, Instagram, X/Twitter, TikTok handles, and submission links) from a Spotify playlist description, along with researched curator pitch guidance when available.
| Name | Required | Description | Default |
|---|---|---|---|
| playlist | Yes | Spotify playlist URL, URI, or 22-character playlist ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only and open-world behavior. The description adds some useful context—that it works from the playlist description and may include 'researched curator pitch guidance when available'—but it does not explain what happens when no contacts are found, whether external research affects latency, or how missing guidance is represented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. The parenthetical enumeration of channel types directly supports the tool's purpose without unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-parameter, read-only tool with no output schema, the description adequately conveys the main return categories (contact channels plus optional pitch guidance). It could be more complete by clarifying the output format or behavior when the playlist description contains no usable contacts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'playlist' parameter is already fully documented as accepting a URL, URI, or 22-character ID. The description adds no parameter-level meaning beyond that, which is acceptable given complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Extracts') and resource ('public submission contact channels') from a precisely bounded source ('a Spotify playlist description'), and even enumerates the channel types. It is clear what the tool does, though it does not explicitly differentiate itself from the sibling 'check_playlist'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the description of what is extracted. There is no explicit statement of when to use this tool versus alternatives like 'check_playlist', no prerequisites, and no conditions under which it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsARead-onlyIdempotentInspect
Lists all playlists currently tracked under 24/7 cloud monitoring for the authenticated account, including 24-hour and 7-day follower deltas, anomaly flags, and latest snapshot timestamps. For one playlist's full 31-day snapshot series, call check_playlist with its playlist_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety and side-effect profile are covered. The description adds genuine behavioral payload beyond that: it enumerates the returned content (24-hour and 7-day follower deltas, anomaly flags, latest snapshot timestamps) and notes the account scoping. It omits pagination/result-size limits and the empty-set case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the return-content summary is front-loaded ahead of the disambiguation clause. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description rightly compensates by listing the returned fields, which is the most important thing an agent would otherwise lack. The remaining gaps are minor: result ordering, pagination, and behavior when the monitored list is empty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-argument semantics to explain and the baseline of 4 applies. The description correctly implies the account is derived from authentication rather than passed in.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Lists all playlists currently tracked under 24/7 cloud monitoring') and scopes it to the authenticated account. It immediately distinguishes itself from check_playlist, which returns one playlist's 31-day series, so an agent can pick between the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative (check_playlist) and the condition that selects it ('For one playlist's full 31-day snapshot series'). It does not discuss the other siblings (add_monitor/remove_monitor, get_account_status) or what the result looks like when nothing is monitored, so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_monitorADestructiveIdempotentInspect
Stops cloud monitoring for one playlist on the signed-in Premium account. The daily follower snapshot, the spike and drop alert emails and the track-removed alert all stop for that playlist on this account, and it disappears from list_monitors. Returns { ok, message, playlistId }. Side effects: deletes this account's monitor entry, including its custom name and track_id. Follower snapshots already stored for the playlist are kept and still appear in check_playlist, and other accounts monitoring the same playlist are unaffected. Reversible with add_monitor, but the name and track_id have to be supplied again. Idempotent: removing a playlist that is not monitored still returns ok: true. Use it to free a slot when the account is at the 25-monitor limit, or to change a monitor's name or tracked track (there is no update tool, so remove it and call add_monitor with the new values). Call list_monitors first if you need the exact playlist id. Requires Premium (£14.99/mo) and a signed-in account: returns FORBIDDEN on other tiers, UNAUTHORIZED without an account, and INVALID_PARAMS for a link that is not a playlist.
| Name | Required | Description | Default |
|---|---|---|---|
| playlist | Yes | The monitored playlist to stop tracking, as a share URL ("https://open.spotify.com/playlist/1PmwMQY86pJuAm7veFt3u2"), a URI ("spotify:playlist:1PmwMQY86pJuAm7veFt3u2") or the bare 22-character id that list_monitors returns as playlist_id ("1PmwMQY86pJuAm7veFt3u2"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructive and idempotent behavior, and the description adds real detail: what stops (snapshots, spike/drop and track-removed alerts), what is destroyed (the monitor entry including custom name and track_id), what survives (stored snapshots visible in check_playlist, other accounts' monitors), reversibility, and the exact error codes FORBIDDEN/UNAUTHORIZED/INVALID_PARAMS. Return shape is also declared. This is strong value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then effects, then usage, with zero filler sentences. It is long and packs return shape, side effects, idempotency, usage and error codes into a single dense block, which slightly hurts scanability but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description supplies the return object shape itself. For a destructive, single-parameter mutation, it covers preconditions, reversibility, retention of historical data, and error paths, so nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the accepted formats (share URL, URI, bare id) are already documented. The description adds meaning the schema does not: a playlist that is not currently monitored still succeeds with ok: true, and a link that is not a playlist yields INVALID_PARAMS, which constrains what may be passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stops cloud monitoring for one playlist') plus scope ('on the signed-in Premium account'), and names the siblings it interacts with (list_monitors, check_playlist, add_monitor). An agent can distinguish it from add_monitor or scan_warning_playlists without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use cases: freeing a slot at the 25-monitor limit, or renaming/repointing a monitor since there is no update tool. It also names the alternative workflow (remove then call add_monitor with new values) and a precondition ('Call list_monitors first if you need the exact playlist id').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_warning_playlistsARead-onlyInspect
Scores every Spotify playlist an artist pastes after a distributor flags a track for artificial streaming (the full list from Spotify for Artists). Use it for a batch of up to 50 links; for one playlist, use check_playlist, which also works anonymously. Returns each playlist ranked by bot-risk score with skip reasons for invalid or unavailable links. Free accounts get up to 2 scans a day with only the worst flagged playlist unlocked; Pro and Premium are unlimited with the full ranked report. Requires a signed-in account (anonymous callers are not supported). Supply artistName, trackName and distributor to also receive drafted reply text once the report is unlocked.
| Name | Required | Description | Default |
|---|---|---|---|
| links | Yes | Spotify playlist links, URIs or ids, one per line (also accepts comma or space separated), as pasted from Spotify for Artists. Up to 50. | |
| trackName | No | The flagged track name, to fill into drafts. | |
| artistName | No | Artist name to fill into the drafted distributor reply and removal requests. | |
| distributor | No | Distributor name, to address the drafted reply to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds the things an agent actually needs: authentication is mandatory (anonymous callers unsupported), tier-based quotas (2 scans/day on free, unlimited on Pro/Premium), partial result gating on free accounts, and the presence of skip reasons for invalid or unavailable links. That is substantial disclosure beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose, then the alternative, then the return shape and account requirements. Every sentence carries information, but the final sentence packs tier limits, auth, and optional-parameter behavior together, making it denser than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating what comes back (playlists ranked by bot-risk score, with skip reasons for bad links) and how the output changes by account tier. Combined with the 100%-covered input schema, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds value by explaining that artistName, trackName and distributor are not just labels but trigger drafted reply text, and that this text only appears 'once the report is unlocked' — a conditional the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scores every Spotify playlist') plus the triggering context (distributor flag for artificial streaming) and the input shape (the full list pasted from Spotify for Artists). It also explicitly names the sibling check_playlist as the single-link alternative, so the agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use condition ('a batch of up to 50 links'), an explicit exclusion with an alternative ('for one playlist, use check_playlist, which also works anonymously'), and a precondition ('Requires a signed-in account'). Nothing about when to pick this tool is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
check_playlist1 field changed- changed
Input schema / properties / playlist / descriptionPrevious value: -"Spotify playlist URL (e.g. \"https://open.spotify.com/playlist/1PmwMQY86pJuAm7veFt3u2\"), URI, or 22-character playlist ID."New value: +"Spotify playlist to look up, in any of three forms: a share URL (\"https://open.spotify.com/playlist/1PmwMQY86pJuAm7veFt3u2\", query strings such as ?si= are ignored), a URI (\"spotify:playlist:1PmwMQY86pJuAm7veFt3u2\") or the bare 22-character base-62 id (\"1PmwMQY86pJuAm7veFt3u2\"). Album, track and artist links are rejected with INVALID_PARAMS."
- Changed
remove_monitor1 field changed- changed
Input schema / properties / playlist / descriptionPrevious value: -"Spotify playlist URL, URI, or 22-character playlist ID to remove."New value: +"The monitored playlist to stop tracking, as a share URL (\"https://open.spotify.com/playlist/1PmwMQY86pJuAm7veFt3u2\"), a URI (\"spotify:playlist:1PmwMQY86pJuAm7veFt3u2\") or the bare 22-character id that list_monitors returns as playlist_id (\"1PmwMQY86pJuAm7veFt3u2\")."
7 tool updates
- First observed
add_monitor - First observed
check_playlist - First observed
get_account_status - First observed
get_curator_contacts - First observed
list_monitors - First observed
remove_monitor - First observed
scan_warning_playlists
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.