naftiko: 1.0.0-alpha2 info: label: Google Photos Library API description: 'Google Photos Library API. 8 operations. Lead operation: List albums. Self-contained Naftiko capability covering one Google Photos business surface.' tags: - Google Photos - Google Photos Library API created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GOOGLE_PHOTOS_API_KEY: GOOGLE_PHOTOS_API_KEY capability: consumes: - type: http namespace: photos baseUri: https://photoslibrary.googleapis.com/v1 description: Google Photos Library API business capability. Self-contained, no shared references. resources: - name: albums path: /albums operations: - name: listalbums method: GET description: List albums outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: pageSize in: query type: integer - name: pageToken in: query type: string - name: createalbum method: POST description: Create an album outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: albums-albumId path: /albums/{albumId} operations: - name: getalbum method: GET description: Get an album outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: albumId in: path type: string required: true - name: mediaItems path: /mediaItems operations: - name: listmediaitems method: GET description: List media items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: pageSize in: query type: integer - name: pageToken in: query type: string - name: batchcreatemediaitems method: POST description: Create media items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: mediaItems-mediaItemId path: /mediaItems/{mediaItemId} operations: - name: getmediaitem method: GET description: Get a media item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: mediaItemId in: path type: string required: true - name: mediaItems:search path: /mediaItems:search operations: - name: searchmediaitems method: POST description: Search media items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: sharedAlbums path: /sharedAlbums operations: - name: listsharedalbums method: GET description: List shared albums outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: pageSize in: query type: integer - name: pageToken in: query type: string authentication: type: bearer token: '{{env.GOOGLE_PHOTOS_API_KEY}}' exposes: - type: rest namespace: photos-rest port: 8080 description: REST adapter for Google Photos Library API. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/albums name: albums description: REST surface for albums. operations: - method: GET name: listalbums description: List albums call: photos.listalbums with: pageSize: rest.pageSize pageToken: rest.pageToken outputParameters: - type: object mapping: $. - method: POST name: createalbum description: Create an album call: photos.createalbum with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/albums/{albumid} name: albums-albumid description: REST surface for albums-albumId. operations: - method: GET name: getalbum description: Get an album call: photos.getalbum with: albumId: rest.albumId outputParameters: - type: object mapping: $. - path: /v1/mediaitems name: mediaitems description: REST surface for mediaItems. operations: - method: GET name: listmediaitems description: List media items call: photos.listmediaitems with: pageSize: rest.pageSize pageToken: rest.pageToken outputParameters: - type: object mapping: $. - method: POST name: batchcreatemediaitems description: Create media items call: photos.batchcreatemediaitems with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/mediaitems/{mediaitemid} name: mediaitems-mediaitemid description: REST surface for mediaItems-mediaItemId. operations: - method: GET name: getmediaitem description: Get a media item call: photos.getmediaitem with: mediaItemId: rest.mediaItemId outputParameters: - type: object mapping: $. - path: /v1/mediaitems-search name: mediaitems-search description: REST surface for mediaItems:search. operations: - method: POST name: searchmediaitems description: Search media items call: photos.searchmediaitems with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/sharedalbums name: sharedalbums description: REST surface for sharedAlbums. operations: - method: GET name: listsharedalbums description: List shared albums call: photos.listsharedalbums with: pageSize: rest.pageSize pageToken: rest.pageToken outputParameters: - type: object mapping: $. - type: mcp namespace: photos-mcp port: 9090 transport: http description: MCP adapter for Google Photos Library API. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-albums description: List albums hints: readOnly: true destructive: false idempotent: true call: photos.listalbums with: pageSize: tools.pageSize pageToken: tools.pageToken outputParameters: - type: object mapping: $. - name: create-album description: Create an album hints: readOnly: false destructive: false idempotent: false call: photos.createalbum with: body: tools.body outputParameters: - type: object mapping: $. - name: get-album description: Get an album hints: readOnly: true destructive: false idempotent: true call: photos.getalbum with: albumId: tools.albumId outputParameters: - type: object mapping: $. - name: list-media-items description: List media items hints: readOnly: true destructive: false idempotent: true call: photos.listmediaitems with: pageSize: tools.pageSize pageToken: tools.pageToken outputParameters: - type: object mapping: $. - name: create-media-items description: Create media items hints: readOnly: false destructive: false idempotent: false call: photos.batchcreatemediaitems with: body: tools.body outputParameters: - type: object mapping: $. - name: get-media-item description: Get a media item hints: readOnly: true destructive: false idempotent: true call: photos.getmediaitem with: mediaItemId: tools.mediaItemId outputParameters: - type: object mapping: $. - name: search-media-items description: Search media items hints: readOnly: true destructive: false idempotent: false call: photos.searchmediaitems with: body: tools.body outputParameters: - type: object mapping: $. - name: list-shared-albums description: List shared albums hints: readOnly: true destructive: false idempotent: true call: photos.listsharedalbums with: pageSize: tools.pageSize pageToken: tools.pageToken outputParameters: - type: object mapping: $.