Google Books · Capability
Google Books API
Google Books API. 8 operations. Lead operation: List my bookshelves. Self-contained Naftiko capability covering one Google Books business surface.
What You Can Do
GET
Listmybookshelves
— List my bookshelves
/v1/mylibrary/bookshelves
POST
Addvolumetobookshelf
— Add volume to bookshelf
/v1/mylibrary/bookshelves/{shelf}/addvolume
POST
Removevolumefrombookshelf
— Remove volume from bookshelf
/v1/mylibrary/bookshelves/{shelf}/removevolume
GET
Listbookshelves
— List bookshelves
/v1/users/{userid}/bookshelves
GET
Getbookshelf
— Get a bookshelf
/v1/users/{userid}/bookshelves/{shelf}
GET
Listbookshelfvolumes
— List volumes in a bookshelf
/v1/users/{userid}/bookshelves/{shelf}/volumes
GET
Listvolumes
— Search for volumes
/v1/volumes
GET
Getvolume
— Get a volume
/v1/volumes/{volumeid}
MCP Tools
list-my-bookshelves
List my bookshelves
read-only
idempotent
add-volume-bookshelf
Add volume to bookshelf
remove-volume-bookshelf
Remove volume from bookshelf
list-bookshelves
List bookshelves
read-only
idempotent
get-bookshelf
Get a bookshelf
read-only
idempotent
list-volumes-bookshelf
List volumes in a bookshelf
read-only
idempotent
search-volumes
Search for volumes
read-only
idempotent
get-volume
Get a volume
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Google Books API
description: 'Google Books API. 8 operations. Lead operation: List my bookshelves. Self-contained Naftiko capability covering
one Google Books business surface.'
tags:
- Google Books
- Google Books API
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
GOOGLE_BOOKS_API_KEY: GOOGLE_BOOKS_API_KEY
capability:
consumes:
- type: http
namespace: books
baseUri: https://www.googleapis.com/books/v1
description: Google Books API business capability. Self-contained, no shared references.
resources:
- 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
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: shelf
in: path
type: string
required: true
- name: volumeId
in: query
type: string
required: true
- name: mylibrary-bookshelves-shelf-removeVolume
path: /mylibrary/bookshelves/{shelf}/removeVolume
operations:
- name: removevolumefrombookshelf
method: POST
description: Remove volume from bookshelf
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: shelf
in: path
type: string
required: true
- name: volumeId
in: query
type: string
required: true
- name: users-userId-bookshelves
path: /users/{userId}/bookshelves
operations:
- name: listbookshelves
method: GET
description: List bookshelves
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: userId
in: path
type: string
required: true
- name: users-userId-bookshelves-shelf
path: /users/{userId}/bookshelves/{shelf}
operations:
- name: getbookshelf
method: GET
description: Get a bookshelf
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: userId
in: path
type: string
required: true
- name: shelf
in: path
type: string
required: true
- name: users-userId-bookshelves-shelf-volumes
path: /users/{userId}/bookshelves/{shelf}/volumes
operations:
- name: listbookshelfvolumes
method: GET
description: List volumes in a bookshelf
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
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
- name: volumes
path: /volumes
operations:
- name: listvolumes
method: GET
description: Search for volumes
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: q
in: query
type: string
description: Full-text search query string.
required: true
- 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
- name: volumes-volumeId
path: /volumes/{volumeId}
operations:
- name: getvolume
method: GET
description: Get a volume
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: volumeId
in: path
type: string
required: true
authentication:
type: bearer
token: '{{env.GOOGLE_BOOKS_API_KEY}}'
exposes:
- type: rest
namespace: books-rest
port: 8080
description: REST adapter for Google Books API. 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: List my bookshelves
call: books.listmybookshelves
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: Add volume to bookshelf
call: books.addvolumetobookshelf
with:
shelf: rest.shelf
volumeId: rest.volumeId
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: Remove volume from bookshelf
call: books.removevolumefrombookshelf
with:
shelf: rest.shelf
volumeId: rest.volumeId
outputParameters:
- type: object
mapping: $.
- path: /v1/users/{userid}/bookshelves
name: users-userid-bookshelves
description: REST surface for users-userId-bookshelves.
operations:
- method: GET
name: listbookshelves
description: List bookshelves
call: books.listbookshelves
with:
userId: rest.userId
outputParameters:
- type: object
mapping: $.
- path: /v1/users/{userid}/bookshelves/{shelf}
name: users-userid-bookshelves-shelf
description: REST surface for users-userId-bookshelves-shelf.
operations:
- method: GET
name: getbookshelf
description: Get a bookshelf
call: books.getbookshelf
with:
userId: rest.userId
shelf: rest.shelf
outputParameters:
- type: object
mapping: $.
- path: /v1/users/{userid}/bookshelves/{shelf}/volumes
name: users-userid-bookshelves-shelf-volumes
description: REST surface for users-userId-bookshelves-shelf-volumes.
operations:
- method: GET
name: listbookshelfvolumes
description: List volumes in a bookshelf
call: books.listbookshelfvolumes
with:
userId: rest.userId
shelf: rest.shelf
maxResults: rest.maxResults
startIndex: rest.startIndex
outputParameters:
- type: object
mapping: $.
- path: /v1/volumes
name: volumes
description: REST surface for volumes.
operations:
- method: GET
name: listvolumes
description: Search for volumes
call: books.listvolumes
with:
q: rest.q
maxResults: rest.maxResults
startIndex: rest.startIndex
orderBy: rest.orderBy
printType: rest.printType
filter: rest.filter
langRestrict: rest.langRestrict
outputParameters:
- type: object
mapping: $.
- path: /v1/volumes/{volumeid}
name: volumes-volumeid
description: REST surface for volumes-volumeId.
operations:
- method: GET
name: getvolume
description: Get a volume
call: books.getvolume
with:
volumeId: rest.volumeId
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: books-mcp
port: 9090
transport: http
description: MCP adapter for Google Books API. One tool per consumed operation, routed inline through this capability's
consumes block.
tools:
- name: list-my-bookshelves
description: List my bookshelves
hints:
readOnly: true
destructive: false
idempotent: true
call: books.listmybookshelves
outputParameters:
- type: object
mapping: $.
- name: add-volume-bookshelf
description: Add volume to bookshelf
hints:
readOnly: false
destructive: false
idempotent: false
call: books.addvolumetobookshelf
with:
shelf: tools.shelf
volumeId: tools.volumeId
outputParameters:
- type: object
mapping: $.
- name: remove-volume-bookshelf
description: Remove volume from bookshelf
hints:
readOnly: false
destructive: false
idempotent: false
call: books.removevolumefrombookshelf
with:
shelf: tools.shelf
volumeId: tools.volumeId
outputParameters:
- type: object
mapping: $.
- name: list-bookshelves
description: List bookshelves
hints:
readOnly: true
destructive: false
idempotent: true
call: books.listbookshelves
with:
userId: tools.userId
outputParameters:
- type: object
mapping: $.
- name: get-bookshelf
description: Get a bookshelf
hints:
readOnly: true
destructive: false
idempotent: true
call: books.getbookshelf
with:
userId: tools.userId
shelf: tools.shelf
outputParameters:
- type: object
mapping: $.
- name: list-volumes-bookshelf
description: List volumes in a bookshelf
hints:
readOnly: true
destructive: false
idempotent: true
call: books.listbookshelfvolumes
with:
userId: tools.userId
shelf: tools.shelf
maxResults: tools.maxResults
startIndex: tools.startIndex
outputParameters:
- type: object
mapping: $.
- name: search-volumes
description: Search for volumes
hints:
readOnly: true
destructive: false
idempotent: true
call: books.listvolumes
with:
q: tools.q
maxResults: tools.maxResults
startIndex: tools.startIndex
orderBy: tools.orderBy
printType: tools.printType
filter: tools.filter
langRestrict: tools.langRestrict
outputParameters:
- type: object
mapping: $.
- name: get-volume
description: Get a volume
hints:
readOnly: true
destructive: false
idempotent: true
call: books.getvolume
with:
volumeId: tools.volumeId
outputParameters:
- type: object
mapping: $.