siftivo
Server Details
Search books, authors and series, get recommendations, and manage your own reading shelves.
- Status
- Healthy
- Uptime
- 100.0% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes: search, detail lookups, library reads/writes, and recommendation types are separated. The main possible confusion is between recommend_from_titles and what_to_read_next, since both suggest books based on prior reading, and between search_books and recommend_from_description, though descriptions clarify the distinction.
The set uses snake_case consistently and follows a predictable verb_noun pattern for nearly every tool (get_*, recommend_*, add_to_library, remove_from_library, search_books). what_to_read_next is the lone outlier without a clear verb_noun structure, but it remains readable.
Twelve tools is well-scoped for a book catalog plus personal library server. Each tool appears to earn its place, with no obvious redundant wrappers or missing essential operations that would require additional tool sprawl.
The surface covers discovery, book/author/series detail, personal shelf management, ratings/progress, and recommendations. Minor gaps exist, such as no explicit way to clear a rating after removal or manage reviews, but the core reader lifecycle is well represented.
Available Tools
13 toolsadd_to_libraryAdd a book to my libraryDestructiveIdempotentInspect
Log reading on the signed-in reader's Siftivo shelves: add a book to want to read (NOT_STARTED), mark it READING, FINISHED or DNF, rate it, or record progress. Suits "add X to my list", "I just finished X, four stars" and "I'm halfway through X". "Finished it, four and a half stars" is one call with readingStatus FINISHED and rating 4.5. The workId comes from search_books. Each field given replaces what the reader had there before, so send a rating or a note only when they asked for that one to change. Omitting readingStatus leaves the book on the shelf it is already on. Needs a linked Siftivo account.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | The reader's own note on the book, private to them | |
| rating | No | Stars, 0.5 to 5 in half-star steps | |
| workId | Yes | ||
| progress | No | Percent read, 0 to 100 | |
| readingStatus | No | The shelf to put the book on. Omit to leave it where it is, or NOT_STARTED for a book the reader has not opened yet. |
get_authorGet an authorRead-onlyInspect
An author's biography and the books Siftivo holds for them, with years. Suits "what else has X written" and "tell me about X". Takes the author's name, an author id, or a siftivo.com slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An author name, an author id, or a siftivo.com slug |
get_bookGet a bookRead-onlyInspect
What one book is about: synopsis, authors, year, series and position, genres, and its siftivo.com page. Suits "what is X about" and "is X part of a series". For a reader who has linked their Siftivo account it also suits "would I like X": when the book fits their taste, the result says why. Takes a workId from search_books, or a siftivo.com slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A Siftivo work id, edition id, or URL slug |
get_my_bookGet one book from my libraryRead-onlyInspect
Which of up to 25 books the signed-in reader already has on a shelf, and for each one the shelf, their rating and their progress. Takes titles ("Title by Author" resolves best) or workIds. Suits "have I read X", "which of these have I read" and checking a list of book suggestions against what the reader has already read. Titles not in the catalog come back under unmatched. Needs a linked Siftivo account.
| Name | Required | Description | Default |
|---|---|---|---|
| books | Yes | Work ids, siftivo.com slugs, or titles, optionally "Title by Author" |
get_my_libraryGet my libraryRead-onlyInspect
The signed-in reader's Siftivo shelves: what they want to read, are reading, finished or did not finish, with their ratings, progress and private notes. Suits "what am I reading", "what is on my to-read list" and "what have I finished". Filter to one shelf with status. Needs a linked Siftivo account.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter to one shelf. Omit for the whole library. |
get_my_tasteGet my tasteARead-onlyInspect
The signed-in reader's taste: the books, authors, series, genres and moods they love, what they avoid or quit, why each one counts, and how far from their usual taste they like to range. A recommendation for this reader rests on it, so it suits "what should I read next", "recommend me a book", "something I would like" and "what kind of books do I like" when no book or mood is named. The strongest 40 entries come back by default, and limit raises that. Needs a linked Siftivo account. It is the same profile the app's own recommendations use.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most steering entries to return, strongest first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the safety burden is off the description. It still adds real context: a linked Siftivo account is required, 40 entries return by default, and the data is the same profile the app's own recommendations use — the last point tells the agent the output is authoritative rather than a sample.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the profile contains, then routing conditions, then operational notes. Three dense sentences with no filler, though the opening enumeration is long enough to be slightly heavy for a single-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must characterize the return — and it does, listing the entry types, the ranking (strongest first), the default size, and the reasons attached to each entry. Combined with the account-linking prerequisite, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented with default, min and max, so the schema does the heavy lifting. The description's "strongest 40 entries come back by default, and limit raises that" restates the schema default and ranking order without adding new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource — the signed-in reader's taste profile — and enumerates its contents (books, authors, series, genres, moods, avoidances, reasons, range). It is clearly distinguishable from siblings like get_my_library or get_reading_index, which cover library holdings and reading activity rather than preference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrasings ("what should I read next", "recommend me a book", "something I would like") and an explicit exclusion: use it only "when no book or mood is named", which implicitly routes the agent to recommend_from_description or recommend_from_titles in the other case. That is genuine when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reading_indexGet the Siftivo Reading IndexRead-onlyInspect
The weekly Siftivo Reading Index: the fiction and nonfiction books moving most in cultural circulation this week, ranked, with weeks on the chart and new entries. Suits "what books are popular right now", "what is everyone reading" and "what are the big books this week".
| Name | Required | Description | Default |
|---|---|---|---|
| week | No | Edition week, YYYY-MM-DD. Omit for the current edition. |
get_seriesGet a seriesRead-onlyInspect
A book series in reading order: every book with its position and publication year, and whether the series is complete. Suits "what order do the X books go in", "what is book 3 of X" and "is the next X book out". Takes the series name, or a series id from get_book or what_to_read_next.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A series id, a URL slug, or the series name |
recommend_from_descriptionRecommend books from a descriptionRead-onlyInspect
Book recommendations from a mood, theme or subject in the reader's own words: "cozy fantasy with found family", "a good book about grief", "something light for the beach". Matches on meaning rather than on a title or an author name. For a reader who has linked their Siftivo account, the results leave out books already in their library and books they hid, avoided or recently passed on, and a result that fits their taste says why.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| isFiction | No | ||
| description | Yes | What the reader is after, in plain language |
recommend_from_titlesRecommend books from titlesRead-onlyInspect
Book recommendations from books the reader already loved, named by title: "books like Project Hail Mary", "I loved Circe and Piranesi, what else would I like", a book club that enjoyed one pick. Titles are resolved against the catalog first, and any that do not resolve are reported back rather than guessed at. Other books by the same authors are left out. For a reader who has linked their Siftivo account, the results leave out books already in their library and books they hid, avoided or recently passed on, and a result that fits their taste says why.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| titles | Yes | Book titles, optionally "Title by Author" | |
| isFiction | No |
remove_from_libraryRemove a book from my libraryDestructiveIdempotentInspect
Take a book off the signed-in reader's shelves entirely, discarding its shelf, progress and notes. The reader's rating for the book stays. Suits "take X off my shelves" and "remove X from my list". Moving a book between shelves is add_to_library with a new readingStatus. Needs a linked Siftivo account.
| Name | Required | Description | Default |
|---|---|---|---|
| workId | Yes |
search_booksSearch booksRead-onlyInspect
Find a book in the Siftivo catalog by its title or author, or by words from what it is about, and get the workId the other Siftivo tools take. Suits a named book ("add Circe to my list", "what is Babel about", "is Demon Copperhead worth reading") and the book behind a half-remembered plot ("the novel about a man alone in an endless house of statues").
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Words to search for | |
| isFiction | No | Restrict to fiction (true) or nonfiction (false) |
what_to_read_nextWhat to read nextRead-onlyInspect
What to read after one particular book: the next books in its series, more by the same author, and books that read like it, the same set its siftivo.com page shows. Suits "what should I read after X", "is there a sequel to X" and "more like X". For a reader who has linked their Siftivo account, each list leaves out books already in their library and books they hid, avoided or recently passed on, and a book that fits their taste says why. Takes a workId from search_books.
| Name | Required | Description | Default |
|---|---|---|---|
| workId | Yes | A workId from search_books, get_book, or a URL slug |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
get_author1 field changed- added
Input schema / properties / id / descriptionAdded value: +"An author name, an author id, or a siftivo.com slug"
- Changed
get_my_book3 fields changed- added
Input schema / properties / booksAdded value: +{ + "description": "Work ids, siftivo.com slugs, or titles, optionally \"Title by Author\"", + "items": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" +} - removed
Input schema / properties / workIdRemoved value: -{ - "minLength": 1, - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "workId" -]New value: +[ + "books" +]
- Changed
get_my_taste2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limitAdded value: +{ + "default": 40, + "description": "Most steering entries to return, strongest first", + "maximum": 500, + "minimum": 1, + "type": "integer" +}
- Changed
get_series1 field changed- added
Input schema / properties / id / descriptionAdded value: +"A series id, a URL slug, or the series name"
1 tool update
- Added
get_my_taste
1 tool update
- Changed
add_to_library4 fields changed- changed
Input schema / properties / rating / descriptionPrevious value: -"Whole stars, 1 to 5"New value: +"Stars, 0.5 to 5 in half-star steps" - changed
Input schema / properties / rating / minimumPrevious value: -1New value: +0.5 - added
Input schema / properties / rating / multipleOfAdded value: +0.5 - changed
Input schema / properties / rating / typePrevious value: -"integer"New value: +"number"
1 tool update
- Changed
add_to_library2 fields changed- removed
Input schema / properties / readingStatus / defaultRemoved value: -"NOT_STARTED" - added
Input schema / properties / readingStatus / descriptionAdded value: +"The shelf to put the book on. Omit to leave it where it is, or NOT_STARTED for a book the reader has not opened yet."
12 tool updates
- First observed
add_to_library - First observed
get_author - First observed
get_book - First observed
get_my_book - First observed
get_my_library - First observed
get_reading_index - First observed
get_series - First observed
recommend_from_description - First observed
recommend_from_titles - First observed
remove_from_library - First observed
search_books - First observed
what_to_read_next
Related MCP Connectors
Search books and authors, fetch editions, browse subjects, and resolve cover images.
Search a catalog of 1.7 million books and find books by mood, vibe, pace or genre. Read-only.
- LeafleOAuthnet.nanosheep
Personalised book recommendations, filtered to what's on your public library's shelf right now.
Search books and authors across Open Library, the Internet Archive open catalog.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables searching for books by title, author, or keyword, retrieving edition details by ISBN, and accessing author profiles and canonical work records through the Open Library API.18 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables personalized book recommendations by managing reading profiles and preferences, with tools to add genres, authors, and track books, then get AI-powered suggestions.31-
- AlicenseAqualityAmaintenanceEnables an LLM to search and research Goodreads books, ratings, and reviews using public data, without login or writes.12171 PyPIGPL 3.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to help users manage their reading experience by searching books, tracking reading progress, managing bookmarks, and generating personalized recommendations and summaries.-
Glama MCP Gateway
Add one secure layer between your agents and this server.