naftiko: 1.0.0-alpha2 info: label: Google Books API — My Library description: 'Google Books API — My Library. 7 operations. Lead operation: Google List My Bookshelves. Self-contained Naftiko capability covering one Google business surface.' tags: - Google - My Library created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GOOGLE_API_KEY: GOOGLE_API_KEY capability: consumes: - type: http namespace: books-my-library baseUri: https://www.googleapis.com/books/v1 description: Google Books API — My Library business capability. Self-contained, no shared references. resources: - name: mylibrary-bookshelves path: /mylibrary/bookshelves operations: - name: listmybookshelves method: GET description: Google List My Bookshelves outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf path: /mylibrary/bookshelves/{shelf} operations: - name: getmybookshelf method: GET description: Google Get My Bookshelf outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: ID of bookshelf to retrieve required: true - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf-addVolume path: /mylibrary/bookshelves/{shelf}/addVolume operations: - name: addvolumetobookshelf method: POST description: Google Add Volume to Bookshelf outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: ID of bookshelf to which to add a volume required: true - name: volumeId in: query type: string description: ID of volume to add required: true - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf-clearVolumes path: /mylibrary/bookshelves/{shelf}/clearVolumes operations: - name: clearvolumesfrombookshelf method: POST description: Google Clear Volumes from Bookshelf outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: ID of bookshelf from which to remove all volumes required: true - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf-moveVolume path: /mylibrary/bookshelves/{shelf}/moveVolume operations: - name: movevolumeinbookshelf method: POST description: Google Move Volume in Bookshelf outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: ID of bookshelf with the volume required: true - name: volumeId in: query type: string description: ID of volume to move required: true - name: volumePosition in: query type: integer description: Position on shelf to move the item (0 puts the item before the current first item, 1 puts it between the first and the second and so on) required: true - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf-removeVolume path: /mylibrary/bookshelves/{shelf}/removeVolume operations: - name: removevolumefrombookshelf method: POST description: Google Remove Volume from Bookshelf outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: ID of bookshelf from which to remove a volume required: true - name: volumeId in: query type: string description: ID of volume to remove required: true - name: source in: query type: string description: String to identify the originator of this request - name: mylibrary-bookshelves-shelf-volumes path: /mylibrary/bookshelves/{shelf}/volumes operations: - name: listmybookshelfvolumes method: GET description: Google List My Bookshelf Volumes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: shelf in: path type: string description: The bookshelf ID or name to retrieve volumes for required: true - name: maxResults in: query type: integer description: Maximum number of results to return - name: projection in: query type: string description: Restrict information returned to a set of selected fields - name: q in: query type: string description: Full-text search query string in this bookshelf - name: showPreorders in: query type: boolean description: Set to true to show pre-ordered books - name: source in: query type: string description: String to identify the originator of this request - name: startIndex in: query type: integer description: Index of the first element to return (starts at 0) authentication: type: bearer token: '{{env.GOOGLE_API_KEY}}' exposes: - type: rest namespace: books-my-library-rest port: 8080 description: REST adapter for Google Books API — My Library. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/mylibrary/bookshelves name: mylibrary-bookshelves description: REST surface for mylibrary-bookshelves. operations: - method: GET name: listmybookshelves description: Google List My Bookshelves call: books-my-library.listmybookshelves with: source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf} name: mylibrary-bookshelves-shelf description: REST surface for mylibrary-bookshelves-shelf. operations: - method: GET name: getmybookshelf description: Google Get My Bookshelf call: books-my-library.getmybookshelf with: shelf: rest.shelf source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf}/addvolume name: mylibrary-bookshelves-shelf-addvolume description: REST surface for mylibrary-bookshelves-shelf-addVolume. operations: - method: POST name: addvolumetobookshelf description: Google Add Volume to Bookshelf call: books-my-library.addvolumetobookshelf with: shelf: rest.shelf volumeId: rest.volumeId source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf}/clearvolumes name: mylibrary-bookshelves-shelf-clearvolumes description: REST surface for mylibrary-bookshelves-shelf-clearVolumes. operations: - method: POST name: clearvolumesfrombookshelf description: Google Clear Volumes from Bookshelf call: books-my-library.clearvolumesfrombookshelf with: shelf: rest.shelf source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf}/movevolume name: mylibrary-bookshelves-shelf-movevolume description: REST surface for mylibrary-bookshelves-shelf-moveVolume. operations: - method: POST name: movevolumeinbookshelf description: Google Move Volume in Bookshelf call: books-my-library.movevolumeinbookshelf with: shelf: rest.shelf volumeId: rest.volumeId volumePosition: rest.volumePosition source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf}/removevolume name: mylibrary-bookshelves-shelf-removevolume description: REST surface for mylibrary-bookshelves-shelf-removeVolume. operations: - method: POST name: removevolumefrombookshelf description: Google Remove Volume from Bookshelf call: books-my-library.removevolumefrombookshelf with: shelf: rest.shelf volumeId: rest.volumeId source: rest.source outputParameters: - type: object mapping: $. - path: /v1/mylibrary/bookshelves/{shelf}/volumes name: mylibrary-bookshelves-shelf-volumes description: REST surface for mylibrary-bookshelves-shelf-volumes. operations: - method: GET name: listmybookshelfvolumes description: Google List My Bookshelf Volumes call: books-my-library.listmybookshelfvolumes with: shelf: rest.shelf maxResults: rest.maxResults projection: rest.projection q: rest.q showPreorders: rest.showPreorders source: rest.source startIndex: rest.startIndex outputParameters: - type: object mapping: $. - type: mcp namespace: books-my-library-mcp port: 9090 transport: http description: MCP adapter for Google Books API — My Library. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: google-list-my-bookshelves description: Google List My Bookshelves hints: readOnly: true destructive: false idempotent: true call: books-my-library.listmybookshelves with: source: tools.source outputParameters: - type: object mapping: $. - name: google-get-my-bookshelf description: Google Get My Bookshelf hints: readOnly: true destructive: false idempotent: true call: books-my-library.getmybookshelf with: shelf: tools.shelf source: tools.source outputParameters: - type: object mapping: $. - name: google-add-volume-bookshelf description: Google Add Volume to Bookshelf hints: readOnly: false destructive: false idempotent: false call: books-my-library.addvolumetobookshelf with: shelf: tools.shelf volumeId: tools.volumeId source: tools.source outputParameters: - type: object mapping: $. - name: google-clear-volumes-bookshelf description: Google Clear Volumes from Bookshelf hints: readOnly: false destructive: false idempotent: false call: books-my-library.clearvolumesfrombookshelf with: shelf: tools.shelf source: tools.source outputParameters: - type: object mapping: $. - name: google-move-volume-bookshelf description: Google Move Volume in Bookshelf hints: readOnly: false destructive: false idempotent: false call: books-my-library.movevolumeinbookshelf with: shelf: tools.shelf volumeId: tools.volumeId volumePosition: tools.volumePosition source: tools.source outputParameters: - type: object mapping: $. - name: google-remove-volume-bookshelf description: Google Remove Volume from Bookshelf hints: readOnly: false destructive: false idempotent: false call: books-my-library.removevolumefrombookshelf with: shelf: tools.shelf volumeId: tools.volumeId source: tools.source outputParameters: - type: object mapping: $. - name: google-list-my-bookshelf-volumes description: Google List My Bookshelf Volumes hints: readOnly: true destructive: false idempotent: true call: books-my-library.listmybookshelfvolumes with: shelf: tools.shelf maxResults: tools.maxResults projection: tools.projection q: tools.q showPreorders: tools.showPreorders source: tools.source startIndex: tools.startIndex outputParameters: - type: object mapping: $.