Google Books · Capability

Google Books API

The Google Books API allows you to perform full-text searches and retrieve book information, viewability, and eBook availability. You can also manage personal bookshelves, access volume metadata, and work with user library data.

Run with Naftiko GoogleBooksAPI

What You Can Do

GET
Listvolumes — Search for volumes
/volumes
GET
Getvolume — Get a volume
/volumes/{volumeId}
GET
Listbookshelves — List bookshelves
/users/{userId}/bookshelves
GET
Getbookshelf — Get a bookshelf
/users/{userId}/bookshelves/{shelf}
GET
Listbookshelfvolumes — List volumes in a bookshelf
/users/{userId}/bookshelves/{shelf}/volumes
GET
Listmybookshelves — List my bookshelves
/mylibrary/bookshelves
POST
Addvolumetobookshelf — Add volume to bookshelf
/mylibrary/bookshelves/{shelf}/addVolume
POST
Removevolumefrombookshelf — Remove volume from bookshelf
/mylibrary/bookshelves/{shelf}/removeVolume

MCP Tools

listvolumes

Search for volumes

read-only idempotent
getvolume

Get a volume

read-only idempotent
listbookshelves

List bookshelves

read-only idempotent
getbookshelf

Get a bookshelf

read-only idempotent
listbookshelfvolumes

List volumes in a bookshelf

read-only idempotent
listmybookshelves

List my bookshelves

read-only idempotent
addvolumetobookshelf

Add volume to bookshelf

removevolumefrombookshelf

Remove volume from bookshelf

Capability Spec

google-books-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Google Books API
  description: The Google Books API allows you to perform full-text searches and retrieve book information, viewability, and
    eBook availability. You can also manage personal bookshelves, access volume metadata, and work with user library data.
  tags:
  - Google
  - Books
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: google-books
    baseUri: https://www.googleapis.com/books/v1
    description: Google Books API HTTP API.
    authentication:
      type: bearer
      token: '{{GOOGLE_BOOKS_TOKEN}}'
    resources:
    - name: volumes
      path: /volumes
      operations:
      - name: listvolumes
        method: GET
        description: Search for volumes
        inputParameters:
        - name: q
          in: query
          type: string
          required: true
          description: Full-text search query string.
        - name: maxResults
          in: query
          type: integer
        - name: startIndex
          in: query
          type: integer
        - name: orderBy
          in: query
          type: string
        - name: printType
          in: query
          type: string
        - name: filter
          in: query
          type: string
        - name: langRestrict
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: volumes-volumeid
      path: /volumes/{volumeId}
      operations:
      - name: getvolume
        method: GET
        description: Get a volume
        inputParameters:
        - name: volumeId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-userid-bookshelves
      path: /users/{userId}/bookshelves
      operations:
      - name: listbookshelves
        method: GET
        description: List bookshelves
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-userid-bookshelves-shelf
      path: /users/{userId}/bookshelves/{shelf}
      operations:
      - name: getbookshelf
        method: GET
        description: Get a bookshelf
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
        - name: shelf
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-userid-bookshelves-shelf-volumes
      path: /users/{userId}/bookshelves/{shelf}/volumes
      operations:
      - name: listbookshelfvolumes
        method: GET
        description: List volumes in a bookshelf
        inputParameters:
        - name: userId
          in: path
          type: string
          required: true
        - name: shelf
          in: path
          type: string
          required: true
        - name: maxResults
          in: query
          type: integer
        - name: startIndex
          in: query
          type: integer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: mylibrary-bookshelves
      path: /mylibrary/bookshelves
      operations:
      - name: listmybookshelves
        method: GET
        description: List my bookshelves
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: mylibrary-bookshelves-shelf-addvolume
      path: /mylibrary/bookshelves/{shelf}/addVolume
      operations:
      - name: addvolumetobookshelf
        method: POST
        description: Add volume to bookshelf
        inputParameters:
        - name: shelf
          in: path
          type: string
          required: true
        - name: volumeId
          in: query
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: mylibrary-bookshelves-shelf-removevolume
      path: /mylibrary/bookshelves/{shelf}/removeVolume
      operations:
      - name: removevolumefrombookshelf
        method: POST
        description: Remove volume from bookshelf
        inputParameters:
        - name: shelf
          in: path
          type: string
          required: true
        - name: volumeId
          in: query
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: google-books-rest
    description: REST adapter for Google Books API.
    resources:
    - path: /volumes
      name: listvolumes
      operations:
      - method: GET
        name: listvolumes
        description: Search for volumes
        call: google-books.listvolumes
        outputParameters:
        - type: object
          mapping: $.
    - path: /volumes/{volumeId}
      name: getvolume
      operations:
      - method: GET
        name: getvolume
        description: Get a volume
        call: google-books.getvolume
        with:
          volumeId: rest.volumeId
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{userId}/bookshelves
      name: listbookshelves
      operations:
      - method: GET
        name: listbookshelves
        description: List bookshelves
        call: google-books.listbookshelves
        with:
          userId: rest.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{userId}/bookshelves/{shelf}
      name: getbookshelf
      operations:
      - method: GET
        name: getbookshelf
        description: Get a bookshelf
        call: google-books.getbookshelf
        with:
          userId: rest.userId
          shelf: rest.shelf
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{userId}/bookshelves/{shelf}/volumes
      name: listbookshelfvolumes
      operations:
      - method: GET
        name: listbookshelfvolumes
        description: List volumes in a bookshelf
        call: google-books.listbookshelfvolumes
        with:
          userId: rest.userId
          shelf: rest.shelf
        outputParameters:
        - type: object
          mapping: $.
    - path: /mylibrary/bookshelves
      name: listmybookshelves
      operations:
      - method: GET
        name: listmybookshelves
        description: List my bookshelves
        call: google-books.listmybookshelves
        outputParameters:
        - type: object
          mapping: $.
    - path: /mylibrary/bookshelves/{shelf}/addVolume
      name: addvolumetobookshelf
      operations:
      - method: POST
        name: addvolumetobookshelf
        description: Add volume to bookshelf
        call: google-books.addvolumetobookshelf
        with:
          shelf: rest.shelf
        outputParameters:
        - type: object
          mapping: $.
    - path: /mylibrary/bookshelves/{shelf}/removeVolume
      name: removevolumefrombookshelf
      operations:
      - method: POST
        name: removevolumefrombookshelf
        description: Remove volume from bookshelf
        call: google-books.removevolumefrombookshelf
        with:
          shelf: rest.shelf
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: google-books-mcp
    transport: http
    description: MCP adapter for Google Books API for AI agent use.
    tools:
    - name: listvolumes
      description: Search for volumes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.listvolumes
      with:
        q: tools.q
        maxResults: tools.maxResults
        startIndex: tools.startIndex
        orderBy: tools.orderBy
        printType: tools.printType
        filter: tools.filter
        langRestrict: tools.langRestrict
      inputParameters:
      - name: q
        type: string
        description: Full-text search query string.
        required: true
      - name: maxResults
        type: integer
        description: maxResults
      - name: startIndex
        type: integer
        description: startIndex
      - name: orderBy
        type: string
        description: orderBy
      - name: printType
        type: string
        description: printType
      - name: filter
        type: string
        description: filter
      - name: langRestrict
        type: string
        description: langRestrict
      outputParameters:
      - type: object
        mapping: $.
    - name: getvolume
      description: Get a volume
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.getvolume
      with:
        volumeId: tools.volumeId
      inputParameters:
      - name: volumeId
        type: string
        description: volumeId
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: listbookshelves
      description: List bookshelves
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.listbookshelves
      with:
        userId: tools.userId
      inputParameters:
      - name: userId
        type: string
        description: userId
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getbookshelf
      description: Get a bookshelf
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.getbookshelf
      with:
        userId: tools.userId
        shelf: tools.shelf
      inputParameters:
      - name: userId
        type: string
        description: userId
        required: true
      - name: shelf
        type: string
        description: shelf
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: listbookshelfvolumes
      description: List volumes in a bookshelf
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.listbookshelfvolumes
      with:
        userId: tools.userId
        shelf: tools.shelf
        maxResults: tools.maxResults
        startIndex: tools.startIndex
      inputParameters:
      - name: userId
        type: string
        description: userId
        required: true
      - name: shelf
        type: string
        description: shelf
        required: true
      - name: maxResults
        type: integer
        description: maxResults
      - name: startIndex
        type: integer
        description: startIndex
      outputParameters:
      - type: object
        mapping: $.
    - name: listmybookshelves
      description: List my bookshelves
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: google-books.listmybookshelves
      outputParameters:
      - type: object
        mapping: $.
    - name: addvolumetobookshelf
      description: Add volume to bookshelf
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: google-books.addvolumetobookshelf
      with:
        shelf: tools.shelf
        volumeId: tools.volumeId
      inputParameters:
      - name: shelf
        type: string
        description: shelf
        required: true
      - name: volumeId
        type: string
        description: volumeId
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: removevolumefrombookshelf
      description: Remove volume from bookshelf
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: google-books.removevolumefrombookshelf
      with:
        shelf: tools.shelf
        volumeId: tools.volumeId
      inputParameters:
      - name: shelf
        type: string
        description: shelf
        required: true
      - name: volumeId
        type: string
        description: volumeId
        required: true
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    GOOGLE_BOOKS_TOKEN: GOOGLE_BOOKS_TOKEN