List Of Books

List Of Books MCP server gives AI assistants accurate book-series reading orders and author bibliographies from a catalog of 500,000+ books.

เซิร์ฟเวอร์ MCP แบบโฮสต์

npx add-mcp 'https://www.listofbooks.net/api/public/mcp'

ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ

เอกสาร

Quick start

Create a free key, then call any endpoint with GET. Send the key as Authorization: Bearer <key> or X-API-Key: <key>. Send it in a header only. Never put it in a query string, because query strings end up in access logs.

export LOB_API_KEY="lob_your_key_here"

Base URL: https://www.listofbooks.net/api/public/v1. Every 200 answer is { results, withheld, moreAt }.

results

The matches. An empty list means nothing matched.

results[].url

The listofbooks.net page the result came from. Link to it when you show the result.

withheld

Matches left out because the daily limit of distinct pages was reached.

moreAt

Where to keep browsing on listofbooks.net.

Search series

Find book series by name. Up to 5 matches, each with a link to its reading-order page.

  • query Required. 3 to 200 characters, with at least 3 letters or digits.
curl -G "https://www.listofbooks.net/api/public/v1/search-series" \
  --data-urlencode "query=harry potter" \
  -H "Authorization: Bearer $LOB_API_KEY"
{
  "results": [
    {
      "title": "Harry Potter",
      "kind": "series",
      "url": "https://www.listofbooks.net/series/harry-potter?utm_source=api&utm_medium=rest"
    }
  ],
  "withheld": 0,
  "moreAt": "https://www.listofbooks.net/series?utm_source=api&utm_medium=rest"
}

Search authors

Find authors by name. Up to 5 matches, each with a link to the author page.

  • query Required. 3 to 200 characters, with at least 3 letters or digits.
curl -G "https://www.listofbooks.net/api/public/v1/search-authors" \
  --data-urlencode "query=rowling" \
  -H "Authorization: Bearer $LOB_API_KEY"
{
  "results": [
    {
      "name": "J. K. Rowling",
      "url": "https://www.listofbooks.net/authors/j-k-rowling?utm_source=api&utm_medium=rest"
    }
  ],
  "withheld": 0,
  "moreAt": "https://www.listofbooks.net/series?utm_source=api&utm_medium=rest"
}

Get a reading order

The books of the best-matching series, in reading order, or in publication order when the series has no separate reading order.

  • series Required. 3 to 200 characters, with at least 3 letters or digits.
curl -G "https://www.listofbooks.net/api/public/v1/get-reading-order" \
  --data-urlencode "series=harry potter" \
  -H "Authorization: Bearer $LOB_API_KEY"
{
  "results": [
    {
      "title": "Harry Potter",
      "url": "https://www.listofbooks.net/series/harry-potter?utm_source=api&utm_medium=rest",
      "author": "J. K. Rowling",
      "order": "publication",
      "totalBooks": 7,
      "books": [
        {
          "position": 1,
          "title": "Harry Potter and the Philosopher's Stone",
          "year": 1997
        },
        {
          "position": 2,
          "title": "Harry Potter and the Chamber of Secrets",
          "year": 1998
        },
        {
          "position": 3,
          "title": "Harry Potter and the Prisoner of Azkaban",
          "year": 1999
        }
      ],
      "booksOmitted": 0
    }
  ],
  "withheld": 0,
  "moreAt": "https://www.listofbooks.net/series?utm_source=api&utm_medium=rest"
}

Shortened here to 3 of the 7 books.

List an author's series

The best-matching author and the titles of the series they wrote, up to 25.

  • author Required. 3 to 200 characters, with at least 3 letters or digits.
curl -G "https://www.listofbooks.net/api/public/v1/get-author-series" \
  --data-urlencode "author=rowling" \
  -H "Authorization: Bearer $LOB_API_KEY"
{
  "results": [
    {
      "name": "J. K. Rowling",
      "url": "https://www.listofbooks.net/authors/j-k-rowling?utm_source=api&utm_medium=rest",
      "series": [
        {
          "title": "Harry Potter",
          "bookCount": 7
        }
      ],
      "seriesOmitted": 0
    }
  ],
  "withheld": 0,
  "moreAt": "https://www.listofbooks.net/series?utm_source=api&utm_medium=rest"
}

Find the series of a book

The series a book belongs to, the position of the book in it, and the order of the series.

  • title Required. 1 to 200 characters, with at least one letter or digit.
  • author Required. 1 to 200 characters, with at least one letter or digit.
curl -G "https://www.listofbooks.net/api/public/v1/find-series-for-book" \
  --data-urlencode "title=Harry Potter and the Goblet of Fire" \
  --data-urlencode "author=J. K. Rowling" \
  -H "Authorization: Bearer $LOB_API_KEY"
{
  "results": [
    {
      "title": "Harry Potter",
      "url": "https://www.listofbooks.net/series/harry-potter?utm_source=api&utm_medium=rest",
      "order": "publication",
      "position": 4,
      "totalBooks": 7,
      "books": [
        {
          "position": 3,
          "title": "Harry Potter and the Prisoner of Azkaban",
          "year": 1999,
          "isCurrent": false
        },
        {
          "position": 4,
          "title": "Harry Potter and the Goblet of Fire",
          "year": 2000,
          "isCurrent": true
        },
        {
          "position": 5,
          "title": "Harry Potter and the Order of the Phoenix",
          "year": 2003,
          "isCurrent": false
        }
      ],
      "booksOmitted": 0
    }
  ],
  "withheld": 0,
  "moreAt": "https://www.listofbooks.net/series?utm_source=api&utm_medium=rest"
}

Shortened here to 3 of the 7 books.

MCP server

The same 5 lookups as tools for AI agents. The server speaks Streamable HTTP at https://www.listofbooks.net/api/public/mcp. Listing the tools needs no key. Calling a tool needs Authorization: Bearer <key>.

Cursor and other clients with custom headers

Add this to the MCP settings of a client that takes a server URL and headers, such as Cursor, and replace the key.

{
  "mcpServers": {
    "listofbooks": {
      "url": "https://www.listofbooks.net/api/public/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Claude Code

Run this once. It reads the key from the environment variable you set above.

claude mcp add --transport http listofbooks \
  https://www.listofbooks.net/api/public/mcp \
  --header "Authorization: Bearer $LOB_API_KEY"

Claude Desktop

Claude Desktop does not send a key header to a remote server, so it connects through the mcp-remote bridge, which needs Node.js. Open Settings, Developer, Edit Config, add this to claude_desktop_config.json, replace the key and restart Claude Desktop.

{
  "mcpServers": {
    "listofbooks": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.listofbooks.net/api/public/mcp",
        "--header",
        "Authorization:${LOB_AUTH_HEADER}"
      ],
      "env": {
        "LOB_AUTH_HEADER": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Tools

  • search_series Find book series by name. Up to 5 matches, each with a link to its reading-order page.Input: query
  • search_authors Find authors by name. Up to 5 matches, each with a link to the author page.Input: query
  • get_reading_order The books of the best-matching series, in reading order, or in publication order when the series has no separate reading order.Input: series
  • get_author_series The best-matching author and the titles of the series they wrote, up to 25.Input: author
  • find_series_for_book The series a book belongs to, the position of the book in it, and the order of the series.Input: title, author

A missing or invalid key answers with a JSON-RPC error whose data holds the same error code as the REST API. A limit or a failure comes back as a tool result with isError.

Pricing

Start free. Contact us when you need more.

  • 10 calls per minute
  • 60 calls per hour
  • 200 calls per day
  • 50 distinct series or author pages per day
  • REST API and MCP server

Requires a visible link back to each result page

Get a free key

Paid

For products that need more calls or no link back.

Custom

  • Higher limits, agreed with you
  • No attribution requirement
  • Priority email support
  • The same REST API and MCP server

Contact us

Free compared with Paid

FreePaid
API key
REST API and MCP server
Calls10/min, 60/hour, 200/dayHigher, agreed with you
Distinct pages per day50Higher, agreed with you
Link back to each result pageRequiredNot required
SupportContact formPriority email

Errors and rate limits

An error answer is { "error": { "code", "message" } }. Switch on the code, not the message.

{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit reached: 10 calls per minute. Retry after 2026-11-13T06:45:00.000Z. Do not retry sooner. Browse https://www.listofbooks.net/series?utm_source=api&utm_medium=rest for more."
  }
}
  • 400 invalid_parameters A query parameter is missing, unknown, repeated or out of bounds.Fix the request. The message names the parameter.
  • 401 missing_api_key The request carries no API key.Send the key as Authorization: Bearer <key> or X-API-Key.
  • 401 api_key_in_query The key was sent in the URL query string, which the API never reads.Move the key to the Authorization: Bearer <key> or X-API-Key header. A URL is logged along the way, so replace a key that was sent in one.
  • 401 invalid_api_key The key is not valid, or it was revoked.Check the key, or create a new one in your account.
  • 403 forbidden The request did not come through the public API address.Call https://www.listofbooks.net.
  • 404 not_found No such endpoint.Use one of the endpoints listed above.
  • 429 rate_limited The member reached a per-minute, per-hour or per-day call limit.Wait for the Retry-After seconds. All keys of one member share the limits.
  • 429 page_limit_reached The member reached the daily limit of distinct series and author pages.Wait for the Retry-After seconds, or ask for higher limits.
  • 500 internal_error The lookup failed.Retry later.
  • 503 over_capacity The API as a whole reached its capacity.Wait for the Retry-After seconds.
  • 503 busy The service is busy.Wait for the Retry-After seconds.
  • 503 timed_out The lookup took too long.Wait for the Retry-After seconds.

Rate limits

The free plan allows 10 calls per minute, 60 calls per hour, 200 calls per day, 50 distinct series or author pages per day. All keys of one account share these limits.

X-RateLimit-Limit

On 200 and 429 answers, the limit of the window closest to running out (minute, hour or day).

X-RateLimit-Remaining

On 200 and 429 answers, the calls left in that window.

X-RateLimit-Reset

On 200 and 429 answers, when that window resets, in Unix epoch seconds.

Retry-After

On 429 and 503, the seconds to wait before the next call.

What counts toward the limits

A call counts once the service has accepted it, before it looks anything up. These answers count: a 200, then page_limit_reached (429), internal_error (500) and timed_out (503). A 500 from the lookup itself, or a timeout, still uses a call. These do not count: invalid_parameters (400), missing_api_key (401), api_key_in_query (401), invalid_api_key (401), forbidden (403), not_found (404), rate_limited (429) and busy (503), and a 405 (any method but GET, HEAD included). An over_capacity answer counts only when the shared daily page budget raised it, after the call was accepted. When the API is switched off, every endpoint answers 404 with an empty body.

Parallel calls

The service handles 2 catalog calls at once per server process. Parallel calls from one key can therefore get busy (503) with a Retry-After header. A busy answer does not count. Call one at a time, or wait for Retry-After before you retry.

Frequently asked questions

Keys, limits and links.

Is the API free?

Yes. Register with an email address and a password, create a key in your account and call the API. The free plan allows 10 calls per minute, 60 per hour and 200 per day.

How do I get an API key?

Create a free account on the sign-up page, confirm your email address and open the API keys page in your account. You can have up to 2 keys. The key is shown once, so copy it when you create it.

What are the limits?

10 calls per minute, 60 per hour, 200 per day, and 50 distinct series or author pages per day. All keys of one account share them. Successful REST answers carry X-RateLimit headers, and 429 and 503 answers carry Retry-After.

What do I have to credit?

Show a visible link to the listofbooks.net page each result came from, using the url field of the result. Paid plans have no attribution requirement.

How do I get higher limits or priority support?

Contact us and tell us what you are building and how many calls you need. We agree higher limits with you, and paid plans include priority email support. There is no checkout.

Which MCP clients work?

Any client that supports Streamable HTTP servers with a custom header, such as Cursor, VS Code and Claude Code. Claude Desktop connects through the mcp-remote bridge, which the MCP section shows. Listing the tools needs no key. Calling a tool needs your key, sent as Authorization: Bearer or X-API-Key.

Is there a machine-readable description?

Yes. The OpenAPI 3.1 document is at https://www.listofbooks.net/openapi.json.