Genius · Capability

Genius API — Artists

Artists — artist profiles, discography, followers, activity, and leaderboards. 6 operations. Lead operation: Get Artist. Self-contained Naftiko capability covering one Genius business surface.

Run with Naftiko GeniusMusicArtists

What You Can Do

GET
Getartist — Get an artist by ID.
/v1/artists/{id}
GET
Getartistsongs — List artist songs.
/v1/artists/{id}/songs
GET
Getartistalbums — List artist albums.
/v1/artists/{id}/albums
GET
Getartistactivity — Artist activity stream.
/v1/artists/{id}/activity
GET
Getartistfollowers — List artist followers.
/v1/artists/{id}/followers
GET
Getartistleaderboard — Top scholars for an artist.
/v1/artists/{id}/leaderboard

MCP Tools

get-artist

Get a Genius artist by ID.

read-only idempotent
list-artist-songs

List songs by an artist.

read-only idempotent
list-artist-albums

List albums by an artist.

read-only idempotent
get-artist-activity

Get the activity stream for an artist.

read-only idempotent
list-artist-followers

List followers of an artist.

read-only idempotent
get-artist-leaderboard

Get the leaderboard (top scholars) for an artist.

read-only idempotent

Capability Spec

genius-artists.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "Genius API — Artists"
  description: >-
    Artists — artist profiles, discography, followers, activity, and leaderboards. 6 operations.
    Lead operation: Get Artist.
    Self-contained Naftiko capability covering one Genius business surface.
  tags:
    - Genius
    - Music
    - Artists
  created: "2026-05-29"
  modified: "2026-05-29"

binds:
  - namespace: env
    keys:
      GENIUS_ACCESS_TOKEN: GENIUS_ACCESS_TOKEN

capability:

  consumes:
    - type: http
      namespace: "genius-artists"
      baseUri: "https://api.genius.com"
      description: "Genius API — Artists business capability."
      authentication:
        type: bearer
        token: "{{env.GENIUS_ACCESS_TOKEN}}"
      resources:
        - name: "artist"
          path: "/artists/{id}"
          operations:
            - name: "getArtist"
              method: GET
              description: "Returns artist metadata."
              inputParameters:
                - { name: "id",         in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "text_format",in: query, type: string,  required: false, description: "Format for textual fields." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "artist-songs"
          path: "/artists/{id}/songs"
          operations:
            - name: "getArtistSongs"
              method: GET
              description: "Returns a paginated list of songs for the artist."
              inputParameters:
                - { name: "id",       in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "sort",     in: query, type: string,  required: false, description: "Sort key (title, popularity, release_date)." }
                - { name: "per_page", in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",     in: query, type: integer, required: false, description: "Page index." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "artist-albums"
          path: "/artists/{id}/albums"
          operations:
            - name: "getArtistAlbums"
              method: GET
              description: "Returns albums associated with the artist."
              inputParameters:
                - { name: "id",       in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "per_page", in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",     in: query, type: integer, required: false, description: "Page index." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "artist-activity"
          path: "/artists/{id}/activity"
          operations:
            - name: "getArtistActivity"
              method: GET
              description: "Activity stream covering all of the artist's songs."
              inputParameters:
                - { name: "id",       in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "per_page", in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",     in: query, type: integer, required: false, description: "Page index." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "artist-followers"
          path: "/artists/{id}/followers"
          operations:
            - name: "getArtistFollowers"
              method: GET
              description: "Returns users who follow the artist."
              inputParameters:
                - { name: "id",       in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "per_page", in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",     in: query, type: integer, required: false, description: "Page index." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "artist-leaderboard"
          path: "/artists/{id}/leaderboard"
          operations:
            - name: "getArtistLeaderboard"
              method: GET
              description: "Top scholars for an artist."
              inputParameters:
                - { name: "id",       in: path,  type: integer, required: true,  description: "Genius artist ID." }
                - { name: "per_page", in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",     in: query, type: integer, required: false, description: "Page index." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]

  exposes:
    - type: rest
      namespace: "genius-artists-rest"
      port: 8080
      description: "REST adapter for Genius — Artists."
      resources:
        - path: "/v1/artists/{id}"
          name: "artist"
          description: "Artist detail."
          operations:
            - method: GET
              name: "getArtist"
              description: "Get an artist by ID."
              call: "genius-artists.getArtist"
              with: { "id": "rest.id", "text_format": "rest.text_format" }
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/artists/{id}/songs"
          name: "artist-songs"
          description: "List artist songs."
          operations:
            - method: GET
              name: "getArtistSongs"
              description: "List artist songs."
              call: "genius-artists.getArtistSongs"
              with: { "id": "rest.id", "sort": "rest.sort", "per_page": "rest.per_page", "page": "rest.page" }
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/artists/{id}/albums"
          name: "artist-albums"
          description: "List artist albums."
          operations:
            - method: GET
              name: "getArtistAlbums"
              description: "List artist albums."
              call: "genius-artists.getArtistAlbums"
              with: { "id": "rest.id", "per_page": "rest.per_page", "page": "rest.page" }
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/artists/{id}/activity"
          name: "artist-activity"
          description: "Artist activity stream."
          operations:
            - method: GET
              name: "getArtistActivity"
              description: "Artist activity stream."
              call: "genius-artists.getArtistActivity"
              with: { "id": "rest.id", "per_page": "rest.per_page", "page": "rest.page" }
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/artists/{id}/followers"
          name: "artist-followers"
          description: "Artist followers."
          operations:
            - method: GET
              name: "getArtistFollowers"
              description: "List artist followers."
              call: "genius-artists.getArtistFollowers"
              with: { "id": "rest.id", "per_page": "rest.per_page", "page": "rest.page" }
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/artists/{id}/leaderboard"
          name: "artist-leaderboard"
          description: "Artist leaderboard."
          operations:
            - method: GET
              name: "getArtistLeaderboard"
              description: "Top scholars for an artist."
              call: "genius-artists.getArtistLeaderboard"
              with: { "id": "rest.id", "per_page": "rest.per_page", "page": "rest.page" }
              outputParameters: [{ type: object, mapping: "$." }]

    - type: mcp
      namespace: "genius-artists-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for Genius — Artists."
      tools:
        - name: "get-artist"
          description: "Get a Genius artist by ID."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtist"
          with: { "id": "tools.id", "text_format": "tools.text_format" }
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "list-artist-songs"
          description: "List songs by an artist."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtistSongs"
          with: { "id": "tools.id", "sort": "tools.sort", "per_page": "tools.per_page", "page": "tools.page" }
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "list-artist-albums"
          description: "List albums by an artist."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtistAlbums"
          with: { "id": "tools.id", "per_page": "tools.per_page", "page": "tools.page" }
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "get-artist-activity"
          description: "Get the activity stream for an artist."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtistActivity"
          with: { "id": "tools.id", "per_page": "tools.per_page", "page": "tools.page" }
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "list-artist-followers"
          description: "List followers of an artist."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtistFollowers"
          with: { "id": "tools.id", "per_page": "tools.per_page", "page": "tools.page" }
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "get-artist-leaderboard"
          description: "Get the leaderboard (top scholars) for an artist."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-artists.getArtistLeaderboard"
          with: { "id": "tools.id", "per_page": "tools.per_page", "page": "tools.page" }
          outputParameters: [{ type: object, mapping: "$." }]