naftiko: 1.0.0-alpha2 info: label: TIDAL Catalog API — Videos description: TIDAL Catalog API — Videos. 11 operations. Self-contained Naftiko capability covering one TIDAL business surface. tags: - TIDAL - Music - videos created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: TIDAL_ACCESS_TOKEN: TIDAL_ACCESS_TOKEN capability: consumes: - type: http namespace: catalog-videos baseUri: https://openapi.tidal.com description: TIDAL Catalog API — Videos business capability. Self-contained, no shared references. resources: - name: videos path: /videos operations: - name: getvideos method: GET description: Get multiple videos. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - 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, credits, providers, replacement, simila' required: false - name: filter[id] in: query type: array description: List of video IDs (e.g. `75623239`) required: false - name: filter[isrc] in: query type: array description: List of ISRCs (e.g. `QMJMT1701237`) required: false - name: videos-id path: /videos/{id} operations: - name: getvideos method: GET description: Get single video. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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, credits, providers, replacement, simila' required: false - name: videos-id-relationships-albums path: /videos/{id}/relationships/albums operations: - name: getvideos method: GET description: Get albums relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: videos-id-relationships-artists path: /videos/{id}/relationships/artists operations: - name: getvideos method: GET description: Get artists relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: videos-id-relationships-credits path: /videos/{id}/relationships/credits operations: - name: getvideos method: GET description: Get credits relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: include in: query type: array description: 'Allows the client to customize which related resources should be returned. Available options: credits' required: false - name: videos-id-relationships-providers path: /videos/{id}/relationships/providers operations: - name: getvideos method: GET description: Get providers relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: providers' required: false - name: videos-id-relationships-replacement path: /videos/{id}/relationships/replacement operations: - name: getvideos method: GET description: Get replacement relationship ("to-one"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: replacement' required: false - name: videos-id-relationships-similarVideos path: /videos/{id}/relationships/similarVideos operations: - name: getvideos method: GET description: Get similarVideos relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: similarVideos' required: false - name: videos-id-relationships-suggestedVideos path: /videos/{id}/relationships/suggestedVideos operations: - name: getvideos method: GET description: Get suggestedVideos relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: suggestedVideos' required: false - name: videos-id-relationships-thumbnailArt path: /videos/{id}/relationships/thumbnailArt operations: - name: getvideos method: GET description: Get thumbnailArt relationship ("to-many"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: thumbnailArt' required: false - name: videos-id-relationships-usageRules path: /videos/{id}/relationships/usageRules operations: - name: getvideos method: GET description: Get usageRules relationship ("to-one"). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Video id required: true - 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: usageRules' required: false authentication: type: bearer value: '{{env.TIDAL_ACCESS_TOKEN}}' placement: header header: Authorization prefix: 'Bearer ' exposes: - type: rest namespace: catalog-videos-rest port: 8080 description: REST adapter for TIDAL Catalog API — Videos. One Spectral-compliant resource per consumed operation, prefixed with /v2. resources: - path: /v2/videos name: videos description: REST surface for videos. operations: - method: GET name: getvideos description: Get multiple videos. call: catalog-videos.getvideos with: countryCode: rest.query.countryCode include: rest.query.include filter[id]: rest.query.filter[id] filter[isrc]: rest.query.filter[isrc] outputParameters: - type: object mapping: $. - path: /v2/videos/{id} name: videos-id description: REST surface for videos-id. operations: - method: GET name: getvideos description: Get single video. call: catalog-videos.getvideos with: id: rest.path.id countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/albums name: videos-id-relationships-albums description: REST surface for videos-id-relationships-albums. operations: - method: GET name: getvideos description: Get albums relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/artists name: videos-id-relationships-artists description: REST surface for videos-id-relationships-artists. operations: - method: GET name: getvideos description: Get artists relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/credits name: videos-id-relationships-credits description: REST surface for videos-id-relationships-credits. operations: - method: GET name: getvideos description: Get credits relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/providers name: videos-id-relationships-providers description: REST surface for videos-id-relationships-providers. operations: - method: GET name: getvideos description: Get providers relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/replacement name: videos-id-relationships-replacement description: REST surface for videos-id-relationships-replacement. operations: - method: GET name: getvideos description: Get replacement relationship ("to-one"). call: catalog-videos.getvideos with: id: rest.path.id countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/similarVideos name: videos-id-relationships-similarVideos description: REST surface for videos-id-relationships-similarVideos. operations: - method: GET name: getvideos description: Get similarVideos relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/suggestedVideos name: videos-id-relationships-suggestedVideos description: REST surface for videos-id-relationships-suggestedVideos. operations: - method: GET name: getvideos description: Get suggestedVideos relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/thumbnailArt name: videos-id-relationships-thumbnailArt description: REST surface for videos-id-relationships-thumbnailArt. operations: - method: GET name: getvideos description: Get thumbnailArt relationship ("to-many"). call: catalog-videos.getvideos with: id: rest.path.id page[cursor]: rest.query.page[cursor] countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - path: /v2/videos/{id}/relationships/usageRules name: videos-id-relationships-usageRules description: REST surface for videos-id-relationships-usageRules. operations: - method: GET name: getvideos description: Get usageRules relationship ("to-one"). call: catalog-videos.getvideos with: id: rest.path.id countryCode: rest.query.countryCode include: rest.query.include outputParameters: - type: object mapping: $. - type: mcp namespace: catalog-videos-mcp port: 9090 transport: http description: MCP adapter for TIDAL Catalog API — Videos. One tool per consumed operation. tools: - name: tidal-getvideos description: Get multiple videos. hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: countryCode: tools.countryCode include: tools.include filter[id]: tools.filter[id] filter[isrc]: tools.filter[isrc] outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get single video. hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get albums relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get artists relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get credits relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get providers relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get replacement relationship ("to-one"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get similarVideos relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get suggestedVideos relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get thumbnailArt relationship ("to-many"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id page[cursor]: tools.page[cursor] countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $. - name: tidal-getvideos description: Get usageRules relationship ("to-one"). hints: readOnly: true destructive: false idempotent: true call: catalog-videos.getvideos with: id: tools.id countryCode: tools.countryCode include: tools.include outputParameters: - type: object mapping: $.