Genius · Capability

Genius API — Referents

Referents — lyric fragments and their attached annotations. 2 operations. Lead operation: List Referents. Self-contained Naftiko capability covering one Genius business surface.

Run with Naftiko GeniusMusicReferents

What You Can Do

GET
Listreferents — List referents.
/v1/referents
GET
Getreferents — Get referents by IDs.
/v1/referents/{ids}

MCP Tools

list-referents

List Genius referents filtered by song, web page, or creator.

read-only idempotent
get-referents

Get Genius referents by IDs.

read-only idempotent

Capability Spec

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

info:
  label: "Genius API — Referents"
  description: >-
    Referents — lyric fragments and their attached annotations. 2 operations.
    Lead operation: List Referents.
    Self-contained Naftiko capability covering one Genius business surface.
  tags:
    - Genius
    - Music
    - Referents
  created: "2026-05-29"
  modified: "2026-05-29"

binds:
  - namespace: env
    keys:
      GENIUS_ACCESS_TOKEN: GENIUS_ACCESS_TOKEN

capability:

  consumes:
    - type: http
      namespace: "genius-referents"
      baseUri: "https://api.genius.com"
      description: "Genius API — Referents business capability."
      authentication:
        type: bearer
        token: "{{env.GENIUS_ACCESS_TOKEN}}"
      resources:
        - name: "referents"
          path: "/referents"
          operations:
            - name: "listReferents"
              method: GET
              description: "Returns referents filtered by song, web page, or creator."
              inputParameters:
                - { name: "song_id",       in: query, type: integer, required: false, description: "Filter by song." }
                - { name: "web_page_id",   in: query, type: integer, required: false, description: "Filter by web page." }
                - { name: "created_by_id", in: query, type: integer, required: false, description: "Filter by creator." }
                - { name: "per_page",      in: query, type: integer, required: false, description: "Results per page." }
                - { name: "page",          in: query, type: integer, required: false, description: "Page index." }
                - { name: "text_format",   in: query, type: string,  required: false, description: "Format for textual fields." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]
        - name: "referents-by-ids"
          path: "/referents/{ids}"
          operations:
            - name: "getReferents"
              method: GET
              description: "Returns one or more referents by their IDs."
              inputParameters:
                - { name: "ids",         in: path,  type: string, required: true,  description: "Comma-separated referent IDs." }
                - { name: "text_format", in: query, type: string, required: false, description: "Format for textual fields." }
              outputRawFormat: json
              outputParameters: [{ name: result, type: object, value: "$." }]

  exposes:
    - type: rest
      namespace: "genius-referents-rest"
      port: 8080
      description: "REST adapter for Genius — Referents."
      resources:
        - path: "/v1/referents"
          name: "referents"
          description: "Referent collection."
          operations:
            - method: GET
              name: "listReferents"
              description: "List referents."
              call: "genius-referents.listReferents"
              with:
                "song_id": "rest.song_id"
                "web_page_id": "rest.web_page_id"
                "created_by_id": "rest.created_by_id"
                "per_page": "rest.per_page"
                "page": "rest.page"
                "text_format": "rest.text_format"
              outputParameters: [{ type: object, mapping: "$." }]
        - path: "/v1/referents/{ids}"
          name: "referents-by-ids"
          description: "Referent batch lookup."
          operations:
            - method: GET
              name: "getReferents"
              description: "Get referents by IDs."
              call: "genius-referents.getReferents"
              with: { "ids": "rest.ids", "text_format": "rest.text_format" }
              outputParameters: [{ type: object, mapping: "$." }]

    - type: mcp
      namespace: "genius-referents-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for Genius — Referents."
      tools:
        - name: "list-referents"
          description: "List Genius referents filtered by song, web page, or creator."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-referents.listReferents"
          with:
            "song_id": "tools.song_id"
            "web_page_id": "tools.web_page_id"
            "created_by_id": "tools.created_by_id"
            "per_page": "tools.per_page"
            "page": "tools.page"
            "text_format": "tools.text_format"
          outputParameters: [{ type: object, mapping: "$." }]
        - name: "get-referents"
          description: "Get Genius referents by IDs."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "genius-referents.getReferents"
          with: { "ids": "tools.ids", "text_format": "tools.text_format" }
          outputParameters: [{ type: object, mapping: "$." }]