naftiko: 1.0.0-alpha2 info: label: TIDAL Search API — Search Results description: TIDAL Search API — Search Results. 7 operations. Self-contained Naftiko capability covering one TIDAL business surface. tags: - TIDAL - Music - searchResults created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: TIDAL_ACCESS_TOKEN: TIDAL_ACCESS_TOKEN capability: consumes: - type: http namespace: search-search-results baseUri: https://openapi.tidal.com description: TIDAL Search API — Search Results business capability. Self-contained, no shared references. resources: - name: searchResults-id path: /searchResults/{id} operations: - name: getsearchresults method: GET description: Get single searchResult. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: albums, artists, playlists, topHits, tracks, videos' required: false - name: searchResults-id-relationships-albums path: /searchResults/{id}/relationships/albums operations: - name: getsearchresults method: GET description: Get albums relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: albums' required: false - name: searchResults-id-relationships-artists path: /searchResults/{id}/relationships/artists operations: - name: getsearchresults method: GET description: Get artists relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: artists' required: false - name: searchResults-id-relationships-playlists path: /searchResults/{id}/relationships/playlists operations: - name: getsearchresults method: GET description: Get playlists relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: playlists' required: false - name: searchResults-id-relationships-topHits path: /searchResults/{id}/relationships/topHits operations: - name: getsearchresults method: GET description: Get topHits relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: topHits' required: false - name: searchResults-id-relationships-tracks path: /searchResults/{id}/relationships/tracks operations: - name: getsearchresults method: GET description: Get tracks relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: tracks' required: false - name: searchResults-id-relationships-videos path: /searchResults/{id}/relationships/videos operations: - name: getsearchresults method: GET description: Get videos relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Search query string used as the resource identifier required: true - name: explicitFilter in: query type: string description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE' required: false - name: page[cursor] in: query type: string description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified required: false - name: countryCode in: query type: string description: ISO 3166-1 alpha-2 country code required: false - name: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: videos' required: false authentication: type: bearer value: '{{env.TIDAL_ACCESS_TOKEN}}' placement: header header: Authorization prefix: 'Bearer ' exposes: - type: rest namespace: search-search-results-rest port: 8080 description: REST adapter for TIDAL Search API — Search Results. One Spectral-compliant resource per consumed operation, prefixed with /v2. resources: - path: /v2/searchResults/{id} name: searchResults-id description: REST surface for searchResults-id. operations: - method: GET name: getsearchresults description: Get single searchResult. call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/albums name: searchResults-id-relationships-albums description: REST surface for searchResults-id-relationships-albums. operations: - method: GET name: getsearchresults description: Get albums relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/artists name: searchResults-id-relationships-artists description: REST surface for searchResults-id-relationships-artists. operations: - method: GET name: getsearchresults description: Get artists relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/playlists name: searchResults-id-relationships-playlists description: REST surface for searchResults-id-relationships-playlists. operations: - method: GET name: getsearchresults description: Get playlists relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/topHits name: searchResults-id-relationships-topHits description: REST surface for searchResults-id-relationships-topHits. operations: - method: GET name: getsearchresults description: Get topHits relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/tracks name: searchResults-id-relationships-tracks description: REST surface for searchResults-id-relationships-tracks. operations: - method: GET name: getsearchresults description: Get tracks relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/searchResults/{id}/relationships/videos name: searchResults-id-relationships-videos description: REST surface for searchResults-id-relationships-videos. operations: - method: GET name: getsearchresults description: Get videos relationship ("to-many"). call: search-search-results.getsearchresults with: id: rest.path.id explicitFilter: rest.query.explicitFilter page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - type: mcp namespace: search-search-results-mcp port: 9090 transport: http description: MCP adapter for TIDAL Search API — Search Results. One tool per consumed operation. tools: - name: tidal-getsearchresults description: Get single searchResult. hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get albums relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get artists relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get playlists relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get topHits relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get tracks relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getsearchresults description: Get videos relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: search-search-results.getsearchresults with: id: tools.id explicitFilter: tools.explicitFilter page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $.