naftiko: 1.0.0-alpha2 info: label: Spotify Web API — Categories description: 'Spotify Web API — Categories. 3 operations. Lead operation: Get Several Browse Categories. Self-contained Naftiko capability covering one Spotify business surface.' tags: - Spotify - Categories created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SPOTIFY_API_KEY: SPOTIFY_API_KEY capability: consumes: - type: http namespace: spotify-categories baseUri: https://api.spotify.com/v1 description: Spotify Web API — Categories business capability. Self-contained, no shared references. resources: - name: browse-categories path: /browse/categories operations: - name: getcategories method: GET description: Get Several Browse Categories outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: locale in: query type: string - name: browse-categories-category_id path: /browse/categories/{category_id} operations: - name: getacategory method: GET description: Get Single Browse Category outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: category_id in: path type: string required: true - name: locale in: query type: string - name: browse-categories-category_id-playlists path: /browse/categories/{category_id}/playlists operations: - name: getacategoriesplaylists method: GET description: Get Category's Playlists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: category_id in: path type: string required: true authentication: type: bearer token: '{{env.SPOTIFY_API_KEY}}' exposes: - type: rest namespace: spotify-categories-rest port: 8080 description: REST adapter for Spotify Web API — Categories. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/browse/categories name: browse-categories description: REST surface for browse-categories. operations: - method: GET name: getcategories description: Get Several Browse Categories call: spotify-categories.getcategories with: locale: rest.locale outputParameters: - type: object mapping: $. - path: /v1/browse/categories/{category-id} name: browse-categories-category-id description: REST surface for browse-categories-category_id. operations: - method: GET name: getacategory description: Get Single Browse Category call: spotify-categories.getacategory with: category_id: rest.category_id locale: rest.locale outputParameters: - type: object mapping: $. - path: /v1/browse/categories/{category-id}/playlists name: browse-categories-category-id-playlists description: REST surface for browse-categories-category_id-playlists. operations: - method: GET name: getacategoriesplaylists description: Get Category's Playlists call: spotify-categories.getacategoriesplaylists with: category_id: rest.category_id outputParameters: - type: object mapping: $. - type: mcp namespace: spotify-categories-mcp port: 9090 transport: http description: MCP adapter for Spotify Web API — Categories. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-several-browse-categories description: Get Several Browse Categories hints: readOnly: true destructive: false idempotent: true call: spotify-categories.getcategories with: locale: tools.locale outputParameters: - type: object mapping: $. - name: get-single-browse-category description: Get Single Browse Category hints: readOnly: true destructive: false idempotent: true call: spotify-categories.getacategory with: category_id: tools.category_id locale: tools.locale outputParameters: - type: object mapping: $. - name: get-category-s-playlists description: Get Category's Playlists hints: readOnly: true destructive: false idempotent: true call: spotify-categories.getacategoriesplaylists with: category_id: tools.category_id outputParameters: - type: object mapping: $.