List Of Books
El servidor MCP List Of Books proporciona a los asistentes de IA el orden de lectura preciso de las series de libros y bibliografías de autores a partir de un catálogo de más de 500 000 libros.
Servidor MCP alojado
npx add-mcp 'https://www.listofbooks.net/api/public/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
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.
queryRequired. 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.
queryRequired. 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.
seriesRequired. 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.
authorRequired. 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.
titleRequired. 1 to 200 characters, with at least one letter or digit.authorRequired. 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_seriesFind book series by name. Up to 5 matches, each with a link to its reading-order page.Input: querysearch_authorsFind authors by name. Up to 5 matches, each with a link to the author page.Input: queryget_reading_orderThe books of the best-matching series, in reading order, or in publication order when the series has no separate reading order.Input: seriesget_author_seriesThe best-matching author and the titles of the series they wrote, up to 25.Input: authorfind_series_for_bookThe 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
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
Free compared with Paid
| Free | Paid | |
|---|---|---|
| API key | ||
| REST API and MCP server | ||
| Calls | 10/min, 60/hour, 200/day | Higher, agreed with you |
| Distinct pages per day | 50 | Higher, agreed with you |
| Link back to each result page | Required | Not required |
| Support | Contact form | Priority 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_parametersA query parameter is missing, unknown, repeated or out of bounds.Fix the request. The message names the parameter. - 401
missing_api_keyThe request carries no API key.Send the key asAuthorization: Bearer <key>orX-API-Key. - 401
api_key_in_queryThe key was sent in the URL query string, which the API never reads.Move the key to theAuthorization: Bearer <key>orX-API-Keyheader. A URL is logged along the way, so replace a key that was sent in one. - 401
invalid_api_keyThe key is not valid, or it was revoked.Check the key, or create a new one in your account. - 403
forbiddenThe request did not come through the public API address.Call https://www.listofbooks.net. - 404
not_foundNo such endpoint.Use one of the endpoints listed above. - 429
rate_limitedThe member reached a per-minute, per-hour or per-day call limit.Wait for theRetry-Afterseconds. All keys of one member share the limits. - 429
page_limit_reachedThe member reached the daily limit of distinct series and author pages.Wait for theRetry-Afterseconds, or ask for higher limits. - 500
internal_errorThe lookup failed.Retry later. - 503
over_capacityThe API as a whole reached its capacity.Wait for theRetry-Afterseconds. - 503
busyThe service is busy.Wait for theRetry-Afterseconds. - 503
timed_outThe lookup took too long.Wait for theRetry-Afterseconds.
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.