{
  "name": "Patchline",
  "description": "Patchline is the music-industry control plane for labels, managers, and roster teams: catalog, artist intelligence, playlist matching, drop links, smart links, asset shares, and release execution exposed as live tools any MCP-compatible agent can call.",
  "site": "https://www.patchline.ai",
  "mcp_endpoint": "https://www.patchline.ai/api/mcp/v1",
  "auth": {
    "type": "oauth2",
    "pkce": true,
    "protected_resource_metadata": "https://www.patchline.ai/.well-known/oauth-protected-resource",
    "authorization_server_metadata": "https://www.patchline.ai/.well-known/oauth-authorization-server",
    "install_for_humans": "https://www.patchline.ai/mcp"
  },
  "docs_for_agents": {
    "rules": "https://www.patchline.ai/AGENTS.md",
    "llms_txt": "https://www.patchline.ai/llms.txt",
    "mcp_install_md": "https://www.patchline.ai/llms.mdx/mcp",
    "claude_plugin_md": "https://www.patchline.ai/llms.mdx/claude"
  },
  "tools": [
    {
      "name": "get_started",
      "category": "Onboarding",
      "callFirst": true,
      "description": "Orient a new or returning user: reports the workspace (artists, tracks, releases) and the single best next action: connect an artist, add music, get a release out, or grow the audience. Call this FIRST when unsure where to begin; works with no prior context."
    },
    {
      "name": "set_onboarding_identity",
      "category": "Onboarding",
      "description": "Set whether the authenticated workspace is onboarding as an artist, label, or manager. Labels and managers must include labelName. Does NOT complete onboarding. Next claim the public username with set_username, then connect an artist with add_artist using the returned rosterRelationshipIntent."
    },
    {
      "name": "set_username",
      "category": "Onboarding",
      "description": "Claim or change the authenticated user's public Patchline username after choosing a role and before adding artist profiles. Uses the same validation, ShareLinks reservation, and rename/alias semantics as web onboarding and Settings; a role (artist/label/manager) must be set first."
    },
    {
      "name": "analyze_url",
      "category": "Dispatch",
      "callFirst": true,
      "description": "Universal dispatcher for Spotify URLs (track, artist, album, playlist) and YouTube URLs (video, channel). Paste a link and get the canonical identity plus a ranked list of next MCP tools to call with exact arguments. Call this FIRST whenever a user shares a Spotify or YouTube link; for artist profiles on other platforms, pass the profile URL straight to add_artist."
    },
    {
      "name": "browse_catalog",
      "category": "Catalog",
      "description": "List active tracks in the user catalog with bounded pagination: stable id, title, and ISRC plus BPM, key, and status. Reversibly archived history is omitted from normal reads; use manage_catalog_asset action:list_archived to inspect or restore it. Partial reads return exact nextPageArgs with an opaque cursor. Optional artistId scopes to one roster artist (manager accounts)."
    },
    {
      "name": "import_track_from_url",
      "category": "Catalog",
      "description": "Import a track's metadata into the catalog from a Spotify track URL: creates a catalog entry with title, artist, ISRC, and platform link (no audio; pair with get_asset_upload_link for audio). Resolve title/artist/ISRC via get_song_intelligence first. Dedup-safe on re-import. A provider-resolved artist that can't be independently corroborated is refused (fail-closed); pass allowLowConfidenceArtist:true only after confirming the artist with the user."
    },
    {
      "name": "get_audience_overview",
      "category": "Audience",
      "description": "Aggregate fan-graph overview: total fans, captures (7/30d), repeat and active fans, buyers, store revenue, capture rate, and identity stats. Aggregates only; no fan names or emails."
    },
    {
      "name": "get_audience_geo",
      "category": "Audience",
      "description": "City-level fan geography: hubs with fan counts, total countries/cities, configurable lookback window. For tour routing and geo-targeted promotion. Aggregates only."
    },
    {
      "name": "list_smart_link_contacts",
      "category": "Audience",
      "description": "List consented contacts captured by one owned Smart Link. Returns masked addresses by default; includeEmails:true is an explicit PII disclosure. Every response names its own coverage: historyCoverage.coverageSince and historicalBackfillStatus report this exact link, and a first-page empty result is classified emptyState empty_within_known_coverage or not_fully_measured. empty_within_known_coverage is not a zero-fan finding; combine it with the current gateMode / effectiveGateMode. Historical gate-on is unknown. An unmeasured window is never reported as zero fans."
    },
    {
      "name": "catalog_search",
      "category": "Catalog",
      "description": "Search active catalog recordings by title, artist, ISRC, and metadata. Stable id, title, and ISRC stay first-class regardless of signal-detail flags. Reversibly archived history is omitted, and partial reads return exact nextPageArgs with an opaque cursor. Defaults to music/audio assets; set includeNonAudio only when the user asks for cover art, images, or documents."
    },
    {
      "name": "get_asset",
      "category": "Catalog",
      "description": "Full metadata for a single track by asset ID: covers, audio features, version history, distribution status."
    },
    {
      "name": "manage_catalog_asset",
      "category": "Catalog",
      "description": "Operator actions for owned catalog assets: paginated list_archived discovery, active-row-only duplicate candidate and recording repair/merge planning, reversible archive/restore, preview-first set_recording_identity for a missing ISRC and/or filename-derived title, dry-run reattribution preview, confirmed canonical-recording repair/merge, and set_cover_art. Archived seed rows are refused until restored. No hard delete and no roster deletion."
    },
    {
      "name": "get_artist_intelligence",
      "category": "Artists",
      "description": "Cached roster intelligence for a single artist: streaming, social audience, genres, recent activity. Run add_artist first if the artist is missing."
    },
    {
      "name": "search_artists",
      "category": "Artists",
      "description": "Search artists by name within the user roster."
    },
    {
      "name": "get_trending_artists",
      "category": "Artists",
      "description": "Top artists by streaming reach. Optional genre and ISO2 market filters return Aria artist ids that can be passed directly to add_artist."
    },
    {
      "name": "refresh_artist_intelligence",
      "category": "Artists",
      "description": "Queue a refresh for one roster artist through Patchline's existing artist intelligence refresh pipeline. Stale-only by default; skips fresh or already pending rows."
    },
    {
      "name": "refresh_roster_intelligence",
      "category": "Artists",
      "description": "Queue bounded stale-only intelligence refreshes for up to 10 roster artists through Patchline's existing artist intelligence refresh pipeline. Returns queued/skipped/failed counts."
    },
    {
      "name": "add_artist",
      "category": "Roster",
      "description": "Add an artist to the user roster from a platform URL or an ariaArtistId returned by search_artists/get_trending_artists. Name-only is rejected unless explicitly creating a manual profile. Triggers background audience enrichment when canonical identity is available."
    },
    {
      "name": "remove_artist",
      "category": "Roster",
      "description": "Remove an artist from the user roster by patchlineArtistId."
    },
    {
      "name": "browse_roster",
      "category": "Roster",
      "description": "List or filter the authenticated user roster: artists with IDs, platform IDs, enrichment status, genres, and metrics. No query required."
    },
    {
      "name": "get_roster_digest",
      "category": "Roster",
      "description": "Read-only Monday brief for a serious artist or label owner: roster health, missing identity fields, catalog counts, live surfaces, release/campaign summary, aggregate audience highlights, cleanup candidates, and next actions. No raw fan names, emails, or per-fan journeys."
    },
    {
      "name": "manage_tracked_artist",
      "category": "Roster",
      "description": "Track artists the user does not represent: scouted A&R candidates moving through a pipeline stage, and reference comps to benchmark against. Actions: add, update, remove, promote. Tracked artists are never default-selectable for uploads and are never counted as roster artists. Adding one starts no paid intelligence build. Promote moves a scouted artist onto the roster in place, keeping its stage, notes, and tags."
    },
    {
      "name": "list_tracked_artists",
      "category": "Roster",
      "description": "Read-only view of the artists the user tracks but does not represent: scouted A&R candidates with their pipeline stage, and curated reference comps. Filterable by relationship and stage. Never returns roster artists."
    },
    {
      "name": "get_releases",
      "category": "Releases",
      "description": "Release plans, schedules, and campaign details for the authenticated user."
    },
    {
      "name": "find_playlists",
      "category": "Playlists",
      "description": "Playlist match opportunities for a track using available song, audience, market, and curator signals. Catalog audio intelligence is currently parked, so results do not promise sonic-fit re-ranking from an uploaded master."
    },
    {
      "name": "inspect_playlist",
      "category": "Playlists",
      "description": "Full Spotify playlist intelligence: curator identity, genres, freshness, followers, track turnover, recent additions, submission status."
    },
    {
      "name": "create_smart_link",
      "category": "Smart Links",
      "description": "Smart link landing page for an owned catalog track: server-side resolves ISRC, DSP URLs, and cover art. For pre-release campaigns use create_drop_link instead."
    },
    {
      "name": "list_store_listings",
      "category": "Storefront",
      "description": "List authenticated-user store inventory and listing readiness. Read-only; reports seller agreement, payout, rights, AI-policy, audio, and marketplace blockers inherited from the store inventory service."
    },
    {
      "name": "manage_store_listing",
      "category": "Storefront",
      "description": "Validate, list, unlist, price, reorder, or update metadata for store inventory through the store inventory service. Mutations inherit all commerce safety checks."
    },
    {
      "name": "create_store_link",
      "category": "Storefront",
      "description": "Create or return the authenticated user’s public store surface through the store share service. Returns a store share URL and normalized section config."
    },
    {
      "name": "get_store_analytics",
      "category": "Storefront",
      "description": "Read aggregate store analytics: views, revenue, orders, conversion, and recent sales with buyer emails redacted from MCP output."
    },
    {
      "name": "get_fan_segments",
      "category": "Storefront",
      "description": "Read aggregate store fan segments and engagement stats for the user-owned store surface. No raw fan emails, names, or per-fan journeys."
    },
    {
      "name": "create_drop_link",
      "category": "Smart Links",
      "description": "Create a public release/drop link for an owned release (link-only). For full launch kits with promo videos, captions, and calendar, prefer generate_release_kit."
    },
    {
      "name": "create_asset_share",
      "category": "Smart Links",
      "description": "Create a public asset share link for an owned catalog asset without changing the asset itself. Returns a share URL and normalized section config."
    },
    {
      "name": "create_briefing",
      "category": "Smart Links",
      "description": "Create a public briefing/report microsite from markdown, validated structured modules, and optional Patchline source references. Template-driven only; does not create arbitrary HTML/CSS/JS."
    },
    {
      "name": "list_share_surfaces",
      "category": "Smart Links",
      "description": "List owner-safe focused link surfaces for the authenticated user: drops, smart links, asset shares, plus report/briefing microsites for MCP report sharing. Smart Links whose gate state cannot be resolved are still listed and named in degradedShareIds for a per-link retry."
    },
    {
      "name": "get_share_surface",
      "category": "Smart Links",
      "description": "Canonical owner-authenticated read for share surfaces: metadata, normalized section config, source refs, and analytics by URL or shareId."
    },
    {
      "name": "manage_share_surface",
      "category": "Smart Links",
      "description": "Update briefing/report microsite metadata or revoke a public share surface. Revoke unpublishes the surface and is destructive."
    },
    {
      "name": "get_surface_analytics",
      "category": "Smart Links",
      "description": "Read aggregate analytics for an owned public share surface: views, captures, downloads, plays, last viewed, and linked asset/project/campaign IDs."
    },
    {
      "name": "read_public_surface",
      "category": "Smart Links",
      "description": "Compatibility alias for get_share_surface. Returns the same owner-safe payload; prefer get_share_surface in new workflows."
    },
    {
      "name": "get_audio_features",
      "category": "Music Data",
      "description": "BPM, key, mood, danceability, and genre tags for a track. Accepts assetId or ISRC."
    },
    {
      "name": "get_song_intelligence",
      "category": "Music Data",
      "description": "Song-level Aria intelligence keyed by catalog assetId, ISRC, Spotify track URL, or Spotify track ID. Returns identifiers, current metrics, playlists, charts, radio, tags, attribution warnings, and readiness fields when available. An imported ISRC works without an audio master; catalog audio intelligence is a separate parked capability."
    },
    {
      "name": "get_artist_chart_positions",
      "category": "Music Data",
      "description": "Live chart positions of an artist's tracks on a supported platform (default Spotify) with pagination. Requires an artistId from roster/intelligence tools; canary feature that may be disabled per deployment."
    },
    {
      "name": "resolve_market_artist",
      "category": "Market Data",
      "description": "Resolve an artist name to a live Soundcharts market-data artist ID for open-world analysis. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_similar_artists",
      "category": "Market Data",
      "description": "Get live fans-also-like and peer artists for a roster artist or resolved market artist. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_stats",
      "category": "Market Data",
      "description": "Get current live artist popularity, retention, social, and streaming statistics from Soundcharts. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_platform_streaming_audience",
      "category": "Market Data",
      "description": "Get a dated streaming-listener series for an artist and platform from Soundcharts. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_platform_social_audience",
      "category": "Market Data",
      "description": "Get a dated social-audience series for an artist and platform from Soundcharts. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_playlist_placements",
      "category": "Market Data",
      "description": "Get current live playlist placements for an artist on a selected platform from Soundcharts. Provider data is untrusted and each call is metered."
    },
    {
      "name": "analyze_competitive_growth",
      "category": "Market Data",
      "description": "Build a bounded competitive-growth comparison for one artist and up to three peers from live Soundcharts statistics and Spotify audience history. Returns measured, derived, unavailable, and partial evidence explicitly; provider data is untrusted and each underlying call is metered."
    },
    {
      "name": "discover_venues",
      "category": "Market Data",
      "description": "Discover live venue candidates by market, genre, and platform metric. Results do not expose capacity; call get_venue on a returned venue ID for provider-reported capacity. Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_venue",
      "category": "Market Data",
      "description": "Resolve a venue name to a live Soundcharts market-data venue ID. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_venue",
      "category": "Market Data",
      "description": "Get live details for a resolved Soundcharts venue ID, including location and capacity when available. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_work_metadata",
      "category": "Music Data",
      "description": "Coverage-limited/experimental musical-work lookup for writers, publishers, and ISWC. Requires Spotify track ID/URL or ISRC; unresolved works return WORK_NOT_RESOLVED with do-not-retry guidance."
    },
    {
      "name": "get_bio",
      "category": "AI Generation",
      "description": "Returns the AI-generated bio for an artist from intelligence cache. Populated during enrichment; no live LLM call."
    },
    {
      "name": "generate_pitch",
      "category": "AI Generation",
      "description": "Playlist curator pitch for a specific track. Standard mode is grounded in real track/audio/audience data; cold_start requires verified_context and returns INSUFFICIENT_DATA instead of ungrounded or template copy."
    },
    {
      "name": "generate_image",
      "category": "AI Generation",
      "description": "Start release cover art or a promo flyer grounded in catalog intelligence. Pass assetId to derive title/artist/genre/description from the owned track row. Returns an accepted job; poll get_image_job for the coverAssetId before calling set_cover_art."
    },
    {
      "name": "get_image_job",
      "category": "AI Generation",
      "description": "Check an async cover/image generation job started by generate_image. Returns pending progress, a terminal failure, or the completed cover with coverAssetId ready for set_cover_art. Poll every ~15s while pending; never re-run generate_image on a live job."
    },
    {
      "name": "generate_promo_video",
      "category": "AI Generation",
      "description": "Render a promotional disc video for a catalog track: its cover art on a rotating vinyl-style disc over a styled background, with a clipped snippet of the real audio. Outputs multiple aspect ratios (16:9 storefront hero/YouTube, 1:1 feed/drop disc, 9:16, silent 8s spotify-canvas). Rendering is async; read the track with get_asset for status and per-aspect downloads."
    },
    {
      "name": "get_promo_videos",
      "category": "AI Generation",
      "description": "Return short-lived playable URLs for every owned promo-video export on a track, including generated 1:1, 16:9, 9:16, and Spotify Canvas variants when available. Raw S3 keys are never exposed."
    },
    {
      "name": "generate_release_kit",
      "category": "AI Generation",
      "description": "Full launch kit for drop-this-track intent: promo disc videos, platform captions, 7-day calendar, and drop URL. If no owned S3 cover exists, call generate_image with assetId then set_cover_art before retrying. Poll get_asset mode full for promoDiscVideo; promote with set_promo_video."
    },
    {
      "name": "set_promo_video",
      "category": "AI Generation",
      "description": "Select an uploaded promo-video version, or promote an already-rendered generated promo-disc output, as the public hero video for a caller-owned catalog track."
    },
    {
      "name": "get_asset_upload_link",
      "category": "Asset Upload",
      "description": "Return a short-lived signed PUT URL for audio masters or image covers. Pass targetAssetId when attaching an audio master to an existing metadata-only recording; Patchline preserves its assetId, ISRC, DSP links, and metadata instead of minting a second row. Without targetAssetId, a new row is created. Bytes do not pass through the MCP server; call confirm_asset_upload with the exact generated args after PUT."
    },
    {
      "name": "create_upload_link",
      "category": "Asset Upload",
      "description": "Create a short-lived secure browser upload link for a human handoff when the MCP client cannot upload bytes directly. The user opens the link while signed in to Patchline; this does not upload bytes or bypass user auth."
    },
    {
      "name": "confirm_asset_upload",
      "category": "Asset Upload",
      "description": "Confirm an upload created by get_asset_upload_link. Marks the asset ready and prepares audio playback derivatives. Feature-flagged audio intelligence runs only when enabled. Image covers finalize without audio processing."
    },
    {
      "name": "open_release_plan",
      "category": "Asset Upload",
      "description": "Open the in-chat release-plan panel when the MCP client can render Apps UI. The panel lets the user drop a local audio file, uploads bytes directly from the browser, confirms the asset, calls create_project with trackAssetIds + releaseDate, auto-queues the release plan, and then shows the live track/release-plan/cover/share/storefront checklist."
    },
    {
      "name": "resolve_release_plan_resume",
      "category": "Asset Upload",
      "description": "Resolve the most recent in-progress release-plan session for the signed-in user so remounted MCP Apps UI panels can rehydrate from server state."
    },
    {
      "name": "get_release_readiness",
      "category": "Asset Upload",
      "description": "Read-only checklist status for a catalog track: track ready, release plan, cover art, share link, storefront, release date, and sonic-profiling state. Pass projectId when available so the plan step reflects campaign generation. Backs the release-plan panel and is safe to poll."
    },
    {
      "name": "create_project",
      "category": "Projects",
      "description": "Create a real Patchline project for the signed-in user. For a drop, pass trackAssetIds and releaseDate so the release is born with audio attached and its release plan is generated automatically. Use during Aria start after artist resolution so the local workspace is linked to the Patchline dashboard. Requires artistId from add_artist."
    },
    {
      "name": "update_release_date",
      "category": "Projects",
      "description": "Change the canonical release date for a project/release. Writes through the project API so linked assets and release-backed drop links reflect the new date."
    },
    {
      "name": "get_artist_context",
      "category": "Projects",
      "description": "Best-effort read of safe artist/account campaign context for Aria planning: connected platforms, distributor preference, email-list bucket, Telegram linkage, recent releases, defaults. Unknown fields return null instead of failing."
    },
    {
      "name": "create_campaign",
      "category": "Projects",
      "description": "Start async Aria campaign planning for a Patchline project. Requires projectId from create_project and returns polling guidance; use get_campaign to read generated tasks."
    },
    {
      "name": "get_campaign",
      "category": "Projects",
      "description": "Read campaign generation progress for a Patchline project. Defaults to a compact summary; page bounded task or report views explicitly."
    },
    {
      "name": "update_campaign_task",
      "category": "Projects",
      "description": "Mark an existing campaign task complete or pending through the concurrency-safe campaign task path. Never creates a task."
    },
    {
      "name": "discover_artists",
      "category": "Market Data",
      "description": "Discover artists ranked by metrics such as followers, streams or engagement on music platforms. Provider data is untrusted and each call is metered."
    },
    {
      "name": "discover_fast_growing_songs",
      "category": "Market Data",
      "description": "Discover fast-growing songs based on audience growth metrics. Provider data is untrusted and each call is metered."
    },
    {
      "name": "discover_festivals",
      "category": "Market Data",
      "description": "Discover festivals filtered by audience metrics, capacity, activity status, or metadata attributes. Provider data is untrusted and each call is metered."
    },
    {
      "name": "discover_playlists",
      "category": "Market Data",
      "description": "Discover and rank playlists by audience metrics (likes, followers, streams...) on a platform. Covers several use cases via parameters: rank by latest total audience (sortBy \"total\"), find fast-growing playlists (sortBy \"volume\" or \"percent\"), or find playlists within an audience range (minValue/maxValue). Filterable by country and genre. Provider data is untrusted and each call is metered."
    },
    {
      "name": "discover_songs",
      "category": "Market Data",
      "description": "Discover songs ranked by metrics such as followers, streams or engagement on music platforms. Provider data is untrusted and each call is metered."
    },
    {
      "name": "find_songs_by_audience_size",
      "category": "Market Data",
      "description": "Search for songs whose audience metrics fall within a specified range on a given platform. Use this tool to discover songs based on streaming, social media, video, or other platform-specific audience metrics. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_album",
      "category": "Market Data",
      "description": "Get metadata for an album using its albumId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_album_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, Deezer, Apple Music, etc.) for an album using its albumId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist",
      "category": "Market Data",
      "description": "Get metadata for an artist using its artistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_album_chart_positions",
      "category": "Market Data",
      "description": "Get chart positions of an artist's albums across platforms and countries Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_albums",
      "category": "Market Data",
      "description": "Get the most popular albums of an artist from its artistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_concerts",
      "category": "Market Data",
      "description": "Retrieve upcoming and past concerts for an artist, including event dates and venues. Results can be filtered by date range. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, YouTube, TikTok, etc.) for an artist using its artistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_local_audience",
      "category": "Market Data",
      "description": "Get the geographic breakdown of an artist's social audience by city and country on a specific platform. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_playlist_reach",
      "category": "Market Data",
      "description": "Retrieve the daily playlist reach of an artist on a platform, broken down by editorial and user playlists (count and subscriber reach). Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_radio_plays",
      "category": "Market Data",
      "description": "Get recent radio airplay events for an artist, optionally filtered by radio station or country Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_radio_spins",
      "category": "Market Data",
      "description": "Get the number of radio spins for an artist, broken down by radio station Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_artist_songs",
      "category": "Market Data",
      "description": "Get the most popular songs of an artist from its artistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_chart_latest_album_rankings",
      "category": "Market Data",
      "description": "Retrieve the latest ranked albums for a chart, including current chart positions. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_chart_latest_song_rankings",
      "category": "Market Data",
      "description": "Retrieve the latest ranked songs for a chart, including current chart positions. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_city_concerts",
      "category": "Market Data",
      "description": "Retrieve upcoming and historical concerts taking place in a given city. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_city_festivals",
      "category": "Market Data",
      "description": "Retrieve festivals taking place in a given city. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_city_venues",
      "category": "Market Data",
      "description": "Retrieve venues located in a given city. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_collaborator",
      "category": "Market Data",
      "description": "Get metadata for a collaborator using its collaboratorId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_collaborator_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, YouTube, TikTok, etc.) for a collaborator using its collaboratorId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_collaborator_songs",
      "category": "Market Data",
      "description": "Get the most popular songs of a collaborator from its collaboratorId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_concert",
      "category": "Market Data",
      "description": "Retrieve detailed metadata for a concert, including lineup, venue information, event dates, and status. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_festival",
      "category": "Market Data",
      "description": "Get metadata for a festival using its festivalId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_label_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, Deezer, etc.) for a label using its labelId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_label_metadata",
      "category": "Market Data",
      "description": "Get metadata for a label using its labelId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_playlist",
      "category": "Market Data",
      "description": "Get metadata for a playlist using its playlistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_playlist_latest_tracklisting",
      "category": "Market Data",
      "description": "Retrieve the latest songs and positions for a playlist. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_radio_airplay_feed",
      "category": "Market Data",
      "description": "Retrieve a live feed of recently played songs across monitored radio stations. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_radio_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, YouTube, TikTok, etc.) for a radio using its radioId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_radio_live_feed",
      "category": "Market Data",
      "description": "Retrieve a live feed of recently played songs across monitored radio stations. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_related_tracks",
      "category": "Market Data",
      "description": "Get tracks related to a given songId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song",
      "category": "Market Data",
      "description": "Get metadata for a song using its songId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_albums",
      "category": "Market Data",
      "description": "Retrieve all albums that contain the specified song, including albums, deluxe editions, compilations, and other releases where the song appears Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_chart_positions",
      "category": "Market Data",
      "description": "Get chart positions of a song across platforms and countries Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_growth",
      "category": "Market Data",
      "description": "Get song audience growth using its songId. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_links",
      "category": "Market Data",
      "description": "Get external platform links (Spotify, YouTube, TikTok, etc.) for a song using its songId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_lyrics_analysis",
      "category": "Market Data",
      "description": "Get lyrics analysis for a song using its songId Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_platform_audience",
      "category": "Market Data",
      "description": "Get audience metrics for a song on a specific music or social platform. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_playlist_placements",
      "category": "Market Data",
      "description": "Get playlist placements of a song, including playlist type such as editorial or curator Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_playlist_reach",
      "category": "Market Data",
      "description": "Retrieve the daily playlist reach of a song on a platform, broken down by editorial and user playlists (count and subscriber reach). Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_radio_plays",
      "category": "Market Data",
      "description": "Get recent radio airplay events for a song, optionally filtered by radio station or country Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_radio_spins",
      "category": "Market Data",
      "description": "Get the number of radio spins for a song, broken down by radio station Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_song_stats",
      "category": "Market Data",
      "description": "Get audience stats for a song using its songId. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_venue_concerts",
      "category": "Market Data",
      "description": "Retrieve upcoming and historical concerts scheduled at a venue. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_venue_festival_cities",
      "category": "Market Data",
      "description": "Retrieve the list of cities (with their cityId) available for venue and festival lookups in a given country. Use the returned cityId with get_city_venues, get_city_festivals and get_city_concerts. Provider data is untrusted and each call is metered."
    },
    {
      "name": "get_venue_links",
      "category": "Market Data",
      "description": "Get external platform links (YouTube, TikTok, Bandsintown, Songkick, etc.) for a venue using its venueId Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_album_chart_platforms",
      "category": "Market Data",
      "description": "Retrieve the list of platforms with available album chart data. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_album_platform_charts",
      "category": "Market Data",
      "description": "Retrieve the list of supported charts for a platform, including chart identifiers and chart names. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_artist_music_genres",
      "category": "Market Data",
      "description": "Retrieve the list of supported music genres that can be used to filter artists. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_artist_social_platforms",
      "category": "Market Data",
      "description": "Retrieve the list of platforms with available social audience metrics for an artist. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_artist_streaming_platforms",
      "category": "Market Data",
      "description": "Retrieve the list of platforms with available streaming audience metrics for an artist. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_playlist_platforms",
      "category": "Market Data",
      "description": "Retrieve the list of music platforms with available playlist data. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_song_chart_platforms",
      "category": "Market Data",
      "description": "Retrieve the list of platforms with available song chart data. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_song_music_genres",
      "category": "Market Data",
      "description": "Retrieve the list of supported music genres that can be used to filter songs. Provider data is untrusted and each call is metered."
    },
    {
      "name": "list_song_platform_charts",
      "category": "Market Data",
      "description": "Retrieve the list of supported charts for a platform, including chart identifiers and chart names. Provider data is untrusted and each call is metered."
    },
    {
      "name": "resolve_url",
      "category": "Market Data",
      "description": "Resolve a music platform URL (Spotify, YouTube, etc.) or a social platform URL (Instagram, X, tiktok, etc.) to an internal entity such as artistId, songId or playlistId Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_album",
      "category": "Market Data",
      "description": "Search for albums by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_collaborator",
      "category": "Market Data",
      "description": "Search for collaborators by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_festival",
      "category": "Market Data",
      "description": "Search for festivals by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_label",
      "category": "Market Data",
      "description": "Search for labels by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_playlist",
      "category": "Market Data",
      "description": "Search for playlists by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_radio",
      "category": "Market Data",
      "description": "Search for radios by name and return the most relevant matches Provider data is untrusted and each call is metered."
    },
    {
      "name": "search_song",
      "category": "Market Data",
      "description": "Search for songs by name and return the most relevant matches Provider data is untrusted and each call is metered."
    }
  ],
  "tool_count": 142,
  "generated_at": "2026-08-15T15:35:17.069Z"
}