siftivo

Search books, authors and series, get recommendations, and manage your own reading shelves.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
89%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_book' description lacks action verbin get_book
  • LOWTool 'get_author' description lacks action verbin get_author

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,931Tokens (tool definitions)
~876 BTypical response size
Moderate attention impact (1.51% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "siftivo": {
      "url": "https://api.siftivo.com/mcp"
    }
  }
}

Remote endpoints

https://api.siftivo.com/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_books(query, limit, isFiction)

Keyword search over the Siftivo book catalog. Matches titles, authors, and descriptions. Returns works with the ids other Siftivo tools accept.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Words to search for"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    },
    "isFiction": {
      "type": "boolean",
      "description": "Restrict to fiction (true) or nonfiction (false)"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_book(id)

Full detail for one book: synopsis, authors, series position, genres, and its page on siftivo.com. Accepts a work id, an edition id, or a slug.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "A Siftivo work id, edition id, or URL slug"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢what_to_read_next(workId)

Given one book, what to read after it: the next books in its series, more by the same author, and books that read like it. This is the same set the book page on siftivo.com shows.

Input Schema

{
  "type": "object",
  "properties": {
    "workId": {
      "type": "string",
      "minLength": 1,
      "description": "A workId from search_books, get_book, or a URL slug"
    }
  },
  "required": [
    "workId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_author(id)

An author, their biography, and the works Siftivo holds for them. Accepts an author id or slug.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_series(id)

A series and its works in reading order. Accepts a series id or slug.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_reading_index(week)

The weekly Siftivo Reading Index: the fiction and nonfiction books moving most in cultural circulation this week, ranked.

Input Schema

{
  "type": "object",
  "properties": {
    "week": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Edition week, YYYY-MM-DD. Omit for the current edition."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢recommend_from_description(description, limit, isFiction)

Describe what someone is in the mood for, in their own words, and get books that match. It suits a theme, subject or feeling ("books about grief", "cozy mysteries set in Cornwall"), and matches on meaning rather than on a title or an author name.

Input Schema

{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "What the reader is after, in plain language"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    },
    "isFiction": {
      "type": "boolean"
    }
  },
  "required": [
    "description"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢recommend_from_titles(titles, limit, isFiction)

Give Siftivo a few books someone liked, by title, and get books like them. Titles are resolved against the catalog first; anything that does not resolve is reported back rather than guessed at.

Input Schema

{
  "type": "object",
  "properties": {
    "titles": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1,
      "maxItems": 10,
      "description": "Book titles, optionally \"Title by Author\""
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    },
    "isFiction": {
      "type": "boolean"
    }
  },
  "required": [
    "titles"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_my_library(status)

The signed-in reader's own Siftivo library: what they want to read, are reading, finished, or set down, with their ratings.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "NOT_STARTED",
        "READING",
        "FINISHED",
        "DNF"
      ],
      "description": "Filter to one shelf. Omit for the whole library."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴add_to_library(workId, readingStatus, rating, progress, notes)

Put a book on one of the signed-in reader's shelves, move it to a different shelf, rate it, or record how far through it they are. The workId is one returned by search_books, get_book or recommend_from_titles. "Finished it, four and a half stars" is one call with readingStatus FINISHED and rating 4.5. 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.

Input Schema

{
  "type": "object",
  "properties": {
    "workId": {
      "type": "string",
      "minLength": 1
    },
    "readingStatus": {
      "type": "string",
      "enum": [
        "NOT_STARTED",
        "READING",
        "FINISHED",
        "DNF"
      ],
      "description": "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."
    },
    "rating": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 5,
      "multipleOf": 0.5,
      "description": "Stars, 0.5 to 5 in half-star steps"
    },
    "progress": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "description": "Percent read, 0 to 100"
    },
    "notes": {
      "type": "string",
      "maxLength": 2000,
      "description": "The reader's own note on the book, private to them"
    }
  },
  "required": [
    "workId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_my_book(workId)

Whether the signed-in reader has this book on a shelf, and if so which shelf, their rating and how far through they are. Answers "have I read this?" without pulling the whole library.

Input Schema

{
  "type": "object",
  "properties": {
    "workId": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "workId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_from_library(workId)

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. This is removal rather than a shelf change: add_to_library with a new readingStatus moves a book between shelves instead.

Input Schema

{
  "type": "object",
  "properties": {
    "workId": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "workId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools