naftiko: 1.0.0-alpha2 info: label: Songstats Enterprise API — Artists description: 'Songstats Enterprise API — Artists. 14 operations. Lead operation: Get Artist Activities. Self-contained Naftiko capability covering one Songstats business surface.' tags: - Songstats - Artists created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SONGSTATS_API_KEY: SONGSTATS_API_KEY capability: consumes: - type: http namespace: songstats-artists baseUri: https://api.songstats.com/enterprise/v1 description: Songstats Enterprise API — Artists business capability. Self-contained, no shared references. resources: - name: artists-activities path: /artists/activities operations: - name: getartistactivities method: GET description: Get Artist Activities outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: artists-audience path: /artists/audience operations: - name: getartistaudience method: GET description: Get Artist Audience outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: artists-audience-details path: /artists/audience/details operations: - name: getartistaudiencedetails method: GET description: Get Artist Audience Details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: country_code in: query type: string description: ISO 3166-1 alpha-2 country code required: true - name: artists-catalog path: /artists/catalog operations: - name: getartistcatalog method: GET description: Get Artist Catalog outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: artists-historic_stats path: /artists/historic_stats operations: - name: getartisthistoricstats method: GET description: Get Artist Historic Stats outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: start_date in: query type: string description: Start date for historical data - name: end_date in: query type: string description: End date for historical data - name: artists-info path: /artists/info operations: - name: getartistinfo method: GET description: Get Artist Info outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID - name: spotify_artist_id in: query type: string description: Spotify artist ID - name: apple_music_artist_id in: query type: string description: Apple Music artist ID - name: artists-link_request path: /artists/link_request operations: - name: addartistlinkrequest method: POST description: Add Artist Link Request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: removeartistlinkrequest method: DELETE description: Remove Artist Link Request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string required: true - name: link in: query type: string required: true - name: artists-search path: /artists/search operations: - name: searchartists method: GET description: Search Artists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: q in: query type: string description: Search query required: true - name: artists-stats path: /artists/stats operations: - name: getartistcurrentstats method: GET description: Get Artist Current Stats outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: artists-top_playlists path: /artists/top_playlists operations: - name: getartisttopplaylists method: GET description: Get Artist Top Playlists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: artists-top_tracks path: /artists/top_tracks operations: - name: getartisttoptracks method: GET description: Get Artist Top Tracks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string description: Songstats artist ID required: true - name: source in: query type: string description: Streaming platform source filter - name: artists-track_request path: /artists/track_request operations: - name: addartisttrackrequest method: POST description: Add Artist Track Request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: removeartisttrackrequest method: DELETE description: Remove Artist Track Request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: songstats_artist_id in: query type: string required: true - name: songstats_track_id in: query type: string required: true authentication: type: apikey key: apikey value: '{{env.SONGSTATS_API_KEY}}' placement: header exposes: - type: rest namespace: songstats-artists-rest port: 8080 description: REST adapter for Songstats Enterprise API — Artists. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/artists/activities name: artists-activities description: REST surface for artists-activities. operations: - method: GET name: getartistactivities description: Get Artist Activities call: songstats-artists.getartistactivities with: songstats_artist_id: rest.songstats_artist_id outputParameters: - type: object mapping: $. - path: /v1/artists/audience name: artists-audience description: REST surface for artists-audience. operations: - method: GET name: getartistaudience description: Get Artist Audience call: songstats-artists.getartistaudience with: songstats_artist_id: rest.songstats_artist_id source: rest.source outputParameters: - type: object mapping: $. - path: /v1/artists/audience/details name: artists-audience-details description: REST surface for artists-audience-details. operations: - method: GET name: getartistaudiencedetails description: Get Artist Audience Details call: songstats-artists.getartistaudiencedetails with: songstats_artist_id: rest.songstats_artist_id source: rest.source country_code: rest.country_code outputParameters: - type: object mapping: $. - path: /v1/artists/catalog name: artists-catalog description: REST surface for artists-catalog. operations: - method: GET name: getartistcatalog description: Get Artist Catalog call: songstats-artists.getartistcatalog with: songstats_artist_id: rest.songstats_artist_id outputParameters: - type: object mapping: $. - path: /v1/artists/historic-stats name: artists-historic-stats description: REST surface for artists-historic_stats. operations: - method: GET name: getartisthistoricstats description: Get Artist Historic Stats call: songstats-artists.getartisthistoricstats with: songstats_artist_id: rest.songstats_artist_id source: rest.source start_date: rest.start_date end_date: rest.end_date outputParameters: - type: object mapping: $. - path: /v1/artists/info name: artists-info description: REST surface for artists-info. operations: - method: GET name: getartistinfo description: Get Artist Info call: songstats-artists.getartistinfo with: songstats_artist_id: rest.songstats_artist_id spotify_artist_id: rest.spotify_artist_id apple_music_artist_id: rest.apple_music_artist_id outputParameters: - type: object mapping: $. - path: /v1/artists/link-request name: artists-link-request description: REST surface for artists-link_request. operations: - method: POST name: addartistlinkrequest description: Add Artist Link Request call: songstats-artists.addartistlinkrequest with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeartistlinkrequest description: Remove Artist Link Request call: songstats-artists.removeartistlinkrequest with: songstats_artist_id: rest.songstats_artist_id link: rest.link outputParameters: - type: object mapping: $. - path: /v1/artists/search name: artists-search description: REST surface for artists-search. operations: - method: GET name: searchartists description: Search Artists call: songstats-artists.searchartists with: q: rest.q outputParameters: - type: object mapping: $. - path: /v1/artists/stats name: artists-stats description: REST surface for artists-stats. operations: - method: GET name: getartistcurrentstats description: Get Artist Current Stats call: songstats-artists.getartistcurrentstats with: songstats_artist_id: rest.songstats_artist_id source: rest.source outputParameters: - type: object mapping: $. - path: /v1/artists/top-playlists name: artists-top-playlists description: REST surface for artists-top_playlists. operations: - method: GET name: getartisttopplaylists description: Get Artist Top Playlists call: songstats-artists.getartisttopplaylists with: songstats_artist_id: rest.songstats_artist_id source: rest.source outputParameters: - type: object mapping: $. - path: /v1/artists/top-tracks name: artists-top-tracks description: REST surface for artists-top_tracks. operations: - method: GET name: getartisttoptracks description: Get Artist Top Tracks call: songstats-artists.getartisttoptracks with: songstats_artist_id: rest.songstats_artist_id source: rest.source outputParameters: - type: object mapping: $. - path: /v1/artists/track-request name: artists-track-request description: REST surface for artists-track_request. operations: - method: POST name: addartisttrackrequest description: Add Artist Track Request call: songstats-artists.addartisttrackrequest with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeartisttrackrequest description: Remove Artist Track Request call: songstats-artists.removeartisttrackrequest with: songstats_artist_id: rest.songstats_artist_id songstats_track_id: rest.songstats_track_id outputParameters: - type: object mapping: $. - type: mcp namespace: songstats-artists-mcp port: 9090 transport: http description: MCP adapter for Songstats Enterprise API — Artists. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-artist-activities description: Get Artist Activities hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistactivities with: songstats_artist_id: tools.songstats_artist_id outputParameters: - type: object mapping: $. - name: get-artist-audience description: Get Artist Audience hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistaudience with: songstats_artist_id: tools.songstats_artist_id source: tools.source outputParameters: - type: object mapping: $. - name: get-artist-audience-details description: Get Artist Audience Details hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistaudiencedetails with: songstats_artist_id: tools.songstats_artist_id source: tools.source country_code: tools.country_code outputParameters: - type: object mapping: $. - name: get-artist-catalog description: Get Artist Catalog hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistcatalog with: songstats_artist_id: tools.songstats_artist_id outputParameters: - type: object mapping: $. - name: get-artist-historic-stats description: Get Artist Historic Stats hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartisthistoricstats with: songstats_artist_id: tools.songstats_artist_id source: tools.source start_date: tools.start_date end_date: tools.end_date outputParameters: - type: object mapping: $. - name: get-artist-info description: Get Artist Info hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistinfo with: songstats_artist_id: tools.songstats_artist_id spotify_artist_id: tools.spotify_artist_id apple_music_artist_id: tools.apple_music_artist_id outputParameters: - type: object mapping: $. - name: add-artist-link-request description: Add Artist Link Request hints: readOnly: false destructive: false idempotent: false call: songstats-artists.addartistlinkrequest with: body: tools.body outputParameters: - type: object mapping: $. - name: remove-artist-link-request description: Remove Artist Link Request hints: readOnly: false destructive: true idempotent: true call: songstats-artists.removeartistlinkrequest with: songstats_artist_id: tools.songstats_artist_id link: tools.link outputParameters: - type: object mapping: $. - name: search-artists description: Search Artists hints: readOnly: true destructive: false idempotent: true call: songstats-artists.searchartists with: q: tools.q outputParameters: - type: object mapping: $. - name: get-artist-current-stats description: Get Artist Current Stats hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartistcurrentstats with: songstats_artist_id: tools.songstats_artist_id source: tools.source outputParameters: - type: object mapping: $. - name: get-artist-top-playlists description: Get Artist Top Playlists hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartisttopplaylists with: songstats_artist_id: tools.songstats_artist_id source: tools.source outputParameters: - type: object mapping: $. - name: get-artist-top-tracks description: Get Artist Top Tracks hints: readOnly: true destructive: false idempotent: true call: songstats-artists.getartisttoptracks with: songstats_artist_id: tools.songstats_artist_id source: tools.source outputParameters: - type: object mapping: $. - name: add-artist-track-request description: Add Artist Track Request hints: readOnly: false destructive: false idempotent: false call: songstats-artists.addartisttrackrequest with: body: tools.body outputParameters: - type: object mapping: $. - name: remove-artist-track-request description: Remove Artist Track Request hints: readOnly: false destructive: true idempotent: true call: songstats-artists.removeartisttrackrequest with: songstats_artist_id: tools.songstats_artist_id songstats_track_id: tools.songstats_track_id outputParameters: - type: object mapping: $.