PodcastIndex · Capability

PodcastIndex.org API — Episodes

PodcastIndex.org API — Episodes. 8 operations. Lead operation: By Feed ID. Self-contained Naftiko capability covering one Podcastindex business surface.

Run with Naftiko PodcastindexEpisodes

What You Can Do

GET
Episodesbyfeedid — By Feed ID
/v1/episodes/byfeedid
GET
Episodesbyfeedurl — By Feed URL
/v1/episodes/byfeedurl
GET
Episodesbyguid — By GUID
/v1/episodes/byguid
GET
Episodesbyid — By ID
/v1/episodes/byid
GET
Episodesbyitunesid — By iTunes ID
/v1/episodes/byitunesid
GET
Episodesbypodcastguid — By Podcast GUID
/v1/episodes/bypodcastguid
GET
Episodeslive — Live
/v1/episodes/live
GET
Episodesrandom — Random
/v1/episodes/random

MCP Tools

feed-id

By Feed ID

read-only idempotent
feed-url

By Feed URL

read-only idempotent
guid

By GUID

read-only idempotent
id

By ID

read-only idempotent
itunes-id

By iTunes ID

read-only idempotent
podcast-guid

By Podcast GUID

read-only idempotent
live

Live

read-only idempotent
random

Random

read-only idempotent

Capability Spec

podcastindex-episodes.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: PodcastIndex.org API — Episodes
  description: 'PodcastIndex.org API — Episodes. 8 operations. Lead operation: By Feed ID. Self-contained Naftiko capability
    covering one Podcastindex business surface.'
  tags:
  - Podcastindex
  - Episodes
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    PODCASTINDEX_API_KEY: PODCASTINDEX_API_KEY
capability:
  consumes:
  - type: http
    namespace: podcastindex-episodes
    baseUri: https://api.podcastindex.org/api/1.0
    description: PodcastIndex.org API — Episodes business capability. Self-contained, no shared references.
    resources:
    - name: episodes-byfeedid
      path: /episodes/byfeedid
      operations:
      - name: episodesbyfeedid
        method: GET
        description: By Feed ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-byfeedurl
      path: /episodes/byfeedurl
      operations:
      - name: episodesbyfeedurl
        method: GET
        description: By Feed URL
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-byguid
      path: /episodes/byguid
      operations:
      - name: episodesbyguid
        method: GET
        description: By GUID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-byid
      path: /episodes/byid
      operations:
      - name: episodesbyid
        method: GET
        description: By ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-byitunesid
      path: /episodes/byitunesid
      operations:
      - name: episodesbyitunesid
        method: GET
        description: By iTunes ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-bypodcastguid
      path: /episodes/bypodcastguid
      operations:
      - name: episodesbypodcastguid
        method: GET
        description: By Podcast GUID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-live
      path: /episodes/live
      operations:
      - name: episodeslive
        method: GET
        description: Live
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: episodes-random
      path: /episodes/random
      operations:
      - name: episodesrandom
        method: GET
        description: Random
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    authentication:
      type: apikey
      key: User-Agent
      value: '{{env.PODCASTINDEX_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: podcastindex-episodes-rest
    port: 8080
    description: REST adapter for PodcastIndex.org API — Episodes. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/episodes/byfeedid
      name: episodes-byfeedid
      description: REST surface for episodes-byfeedid.
      operations:
      - method: GET
        name: episodesbyfeedid
        description: By Feed ID
        call: podcastindex-episodes.episodesbyfeedid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/byfeedurl
      name: episodes-byfeedurl
      description: REST surface for episodes-byfeedurl.
      operations:
      - method: GET
        name: episodesbyfeedurl
        description: By Feed URL
        call: podcastindex-episodes.episodesbyfeedurl
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/byguid
      name: episodes-byguid
      description: REST surface for episodes-byguid.
      operations:
      - method: GET
        name: episodesbyguid
        description: By GUID
        call: podcastindex-episodes.episodesbyguid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/byid
      name: episodes-byid
      description: REST surface for episodes-byid.
      operations:
      - method: GET
        name: episodesbyid
        description: By ID
        call: podcastindex-episodes.episodesbyid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/byitunesid
      name: episodes-byitunesid
      description: REST surface for episodes-byitunesid.
      operations:
      - method: GET
        name: episodesbyitunesid
        description: By iTunes ID
        call: podcastindex-episodes.episodesbyitunesid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/bypodcastguid
      name: episodes-bypodcastguid
      description: REST surface for episodes-bypodcastguid.
      operations:
      - method: GET
        name: episodesbypodcastguid
        description: By Podcast GUID
        call: podcastindex-episodes.episodesbypodcastguid
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/live
      name: episodes-live
      description: REST surface for episodes-live.
      operations:
      - method: GET
        name: episodeslive
        description: Live
        call: podcastindex-episodes.episodeslive
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/episodes/random
      name: episodes-random
      description: REST surface for episodes-random.
      operations:
      - method: GET
        name: episodesrandom
        description: Random
        call: podcastindex-episodes.episodesrandom
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: podcastindex-episodes-mcp
    port: 9090
    transport: http
    description: MCP adapter for PodcastIndex.org API — Episodes. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: feed-id
      description: By Feed ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbyfeedid
      outputParameters:
      - type: object
        mapping: $.
    - name: feed-url
      description: By Feed URL
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbyfeedurl
      outputParameters:
      - type: object
        mapping: $.
    - name: guid
      description: By GUID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbyguid
      outputParameters:
      - type: object
        mapping: $.
    - name: id
      description: By ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbyid
      outputParameters:
      - type: object
        mapping: $.
    - name: itunes-id
      description: By iTunes ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbyitunesid
      outputParameters:
      - type: object
        mapping: $.
    - name: podcast-guid
      description: By Podcast GUID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesbypodcastguid
      outputParameters:
      - type: object
        mapping: $.
    - name: live
      description: Live
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodeslive
      outputParameters:
      - type: object
        mapping: $.
    - name: random
      description: Random
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: podcastindex-episodes.episodesrandom
      outputParameters:
      - type: object
        mapping: $.