Skip to content

Tools

Six tools, all read-only (readOnlyHint: true). Every result that carries library data includes a notes array — budget truncations, dropped links and the untrusted-data marker all land there.

Book objects

Book-listing tools return entries of this shape (absent fields are omitted):

json
{
  "id": 42,
  "uuid": "2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2",
  "title": "Dune",
  "authors": ["Frank Herbert"],
  "publisher": "Ace",
  "published": "1965-08-01T00:00:00+00:00",
  "languages": ["eng"],
  "tags": ["Science Fiction"],
  "series": { "name": "Dune Saga", "index": 1 },
  "rating": 5,
  "summary": "Plain text, capped at 1000 characters…",
  "coverUrl": "https://books.example.com/opds/cover/42",
  "formats": [
    {
      "format": "EPUB",
      "mimeType": "application/epub+zip",
      "size": 8552633,
      "downloadUrl": "https://books.example.com/opds/download/42/epub/"
    }
  ],
  "updated": "2026-01-07T13:54:01+00:00"
}

id is null when the entry has neither a cover nor a download link — see the FAQ.

search_books

Searches the library by title, author, series, publisher and tags.

ParameterTypeDescription
querystring, requiredSearch term (max 500 characters)
limitintegerMaximum books returned (default 50, max 200)

Calibre-Web returns every match in one response, so the result is capped client-side; totalFound reports the real match count and truncated says whether the cap applied.

list_books

Book listings by view.

ParameterTypeDescription
viewenumnew (default), hot, rated, discover, read, unread, all
letterstringOnly with all: a single initial letter/digit, or 00 for every title (default)
offsetintegerPagination offset; use pagination.nextOffset from the previous call

Views: new = recently added, hot = most downloaded, rated = rated above 4.5 stars, discover = random (ignores offset), read/unread = the configured user's reading state (needs a non-anonymous user with the read/unread sidebar section enabled), all = the whole library ordered by title.

list_shelves

Lists the shelves visible to the configured user: every public shelf plus the user's own private ones.

ParameterTypeDescription
offsetintegerPagination offset

Returns { id, name, isPublic? } items. isPublic is only reported on English-locale instances — Calibre-Web marks public shelves with a localized title suffix.

get_shelf_books

The books on a shelf, in the shelf's own order.

ParameterTypeDescription
shelf_idinteger, requiredShelf id from list_shelves
offsetintegerPagination offset

An empty result can also mean the shelf does not exist or is not accessible — Calibre-Web returns an empty feed rather than an error in that case (the result's notes say so).

get_cover

Fetches a book's cover and returns it as an image content block the client can display.

ParameterTypeDescription
book_idinteger, requiredNumeric book id from any book-listing tool

Calibre-Web serves the full-size cover on this route; images over 1 MB are refused to protect the context window — use the book's coverUrl out-of-band instead. Only JPEG, PNG, GIF and WebP pass through.

get_stats

No parameters. Returns the library totals:

json
{ "books": 707, "authors": 562, "categories": 147, "series": 9 }

Released under the MIT License.