# Open Library Extended MCP

> Open Library Extended connects your AI client to a massive academic and literary database, letting you search millions of records. It lets you find books by ISBN, pull full author bibliographies, or explore niche user-created reading lists—all without leaving your chat window.

## Overview
- **Category:** knowledge-management
- **Price:** Free
- **Tags:** books, library-catalog, open-data, bibliography, literature

## Description

Open Library Extended connects your AI client to a massive academic and literary database. You can query millions of records covering everything from classic novels to highly specialized scientific papers without leaving your chat window.

**Searching Books and Authors**

When you need general book or author information, start with `search_books` to look through the entire catalog using keywords and filters like language or publication date. To find a specific person who wrote books, use `search_authors` to search the database by name or other criteria. For deep dives on people, `get_author` pulls up all the detailed information associated with an author's profile, while `get_author_works` lists every single book published by that person.

**Identifying Specific Book Versions and Works**

You can pinpoint books using industry-standard codes. Running `get_books_by_bibkeys` lets you look up records instantly using identifiers like ISBN, OCLC number, or LCCN. If you want general details for one specific physical copy, use `get_edition` to get data on that single printing. Separately, `get_work` fetches the abstract literary concept—the idea itself—which is different from any actual edition. To see every possible printed version of a conceptual Work, run `get_work_editions`. You can also narrow your search by topic; `get_subject` finds books related to a specific academic tag, like 'science fiction.'

**Analyzing Collections and User Activity**

The platform lets you explore curated reading lists. You can use `search_lists` to find user-created book collections across the platform. If you know which list it is, `get_list_metadata` pulls up general descriptive details about that collection's theme or purpose. To see exactly what books are in a public reading list, run `get_list_seeds`; meanwhile, `get_list_editions` finds all the specific printings belonging to one of those curated lists. If you wanna check out someone else’s taste, `get_user_lists` shows every collection created by a patron, and if that user has public logging enabled, `get_user_books` pulls their entire reading log.

**Tracking Database Changes Across the Board**

The server gives you tools to monitor data movement. If you need to see everything that changed in the database recently across all records, use `get_recent_changes`. You can narrow that down by checking only modifications that happened on a single specific day using `get_recent_changes_by_date`.

**Structuring Your Research Flow**

Overall, you'll find that combining these tools gives you total control. For instance, if you know an author and want to see all their works, you run `get_author` followed by `get_author_works`. If you start with a book code, running `get_books_by_bibkeys` gets you the data, but then you might use `get_work_editions` if you suspect there are other printings out there. You'll also find that tracking collections requires two steps: first using `search_lists`, and then drilling down with `get_list_seeds` or `get_list_metadata`. This system lets your agent tackle complex literary research by accessing individual author profiles, abstract works, specific editions, entire user logs, and the latest database changes.

## Tools

### get_author
Retrieves detailed information for a specific author.

### get_author_works
Lists all published works associated with an author's profile.

### get_books_by_bibkeys
Looks up book records using standard identifiers like ISBN, OCLC, or LCCN.

### get_edition
Gets specific details for one physical printing (Edition) of a book.

### get_list_editions
Finds all the editions that belong to a particular user-created list.

### get_list_metadata
Retrieves general descriptive metadata for a specific book list.

### get_list_seeds
Gets the actual items (seeds) contained within a user's public reading list.

### get_recent_changes_by_date
Checks for database changes that occurred on one specific date.

### get_recent_changes
Accesses a stream of recent modifications across the entire Open Library database.

### get_subject
Fetches books related to a given academic subject tag, like 'science fiction'.

### get_user_books
Retrieves the public reading log for any specified patron.

### get_user_lists
Lists all book collections or lists created by a specific user.

### get_work_editions
Fetches all the specific physical printings (Editions) of a given conceptual Work.

### get_work
Gets details for the abstract literary work, separate from any single edition.

### search_authors
Searches the database to find matching authors by name or criteria.

### search_books
Searches the entire catalog for books using keywords and filters.

### search_lists
Searches for user-created book lists across the platform.

## Prompt Examples

**Prompt:** 
```
Search for books about 'Quantum Physics' published in English.
```

**Response:** 
```
I've found several books on Quantum Physics. Top results include 'Quantum Physics for Beginners' and 'The Elegant Universe'. Would you like the details for any of these?
```

**Prompt:** 
```
Get the biography and works of author Mark Twain.
```

**Response:** 
```
Mark Twain (Samuel Langhorne Clemens) was an American writer. I've retrieved his profile (ID: OL18319A) and a list of his famous works like 'The Adventures of Tom Sawyer'. Shall I list more of his works?
```

**Prompt:** 
```
Find all editions for the work with ID OL27258W.
```

**Response:** 
```
I've found 12 editions for this work, ranging from the 1954 original hardcover to recent digital reprints. Would you like to see the specific ISBNs for these editions?
```

## Capabilities

### Search for Books and Authors
Find titles, authors, and works using keywords, filters, or standard identifiers.

### Retrieve Author Biographies and Works
Get a specific author's profile details and the complete list of books they wrote.

### Identify Book Versions by Code
Look up book data using industry-standard identifiers like ISBN, OCLC, or LCCN.

### Analyze Literary Works and Editions
Distinguish between a conceptual work (the idea) and its physical editions (the printing).

### Browse Curated Reading Lists
Discover books organized into public lists created by other users or subjects.

## Use Cases

### The Citation Check
A student needs a source for their paper, but they only have the ISBN. Instead of guessing and hitting general search, they pass the number to `get_books_by_bibkeys`. The server immediately returns validated metadata, letting them cite it correctly.

### Tracing an Author's Career
A researcher wants a complete picture of Mark Twain. They first call `search_authors` to confirm the ID, then use `get_author_works` to pull all titles, and finally check for related works using `get_work_editions` to see which physical printings are available.

### Curating a Reading Challenge
A librarian wants to build a list of 'Best Sci-Fi Books'. They start by calling `search_books` for the genre, and then refine that selection by running `get_subject` with tags like 'science fiction' to create a high-quality collection.

### Validating Print Runs
A developer is building an inventory tracker. They find the conceptual work ID via `get_work`, but need to know if the 1954 hardcover or the 2023 paperback was available. They use `get_work_editions` to get a full list of all physical versions.

## Benefits

- Stop relying on simple search boxes. Use `get_books_by_bibkeys` to guarantee results by supplying a specific ISBN or OCLC number—it's precise retrieval.
- When you need to know the history of a book, use the difference between abstract Works and physical Editions. Tools like `get_work` help separate the idea from the printing.
- Don't just search titles; explore communities using `search_lists`. You can find deep dives into niche subjects by checking books related to specific tags via `get_subject`.
- Build full author profiles instantly. The combination of `get_author` and `get_author_works` gives you the biography alongside their entire bibliography in two steps.
- Audit databases without manual checks. Use `get_recent_changes` or `get_recent_changes_by_date` to see what records were added or modified over time.

## How It Works

The bottom line is, your AI client handles all the complex API calls; you just ask natural language questions about books.

1. Subscribe to the server and give your AI client an optional User Agent string. This identifies your requests.
2. Tell your agent exactly what you need—for example, 'Find all sci-fi books by Isaac Asimov published before 1970.'
3. Your agent runs multiple tools (like `search_books`, then `get_author_works`) and gives you the final structured list of results.

## Frequently Asked Questions

**How do I find books by ISBN using get_books_by_bibkeys?**
You pass a string formatted like 'ISBN:xxxx' to `get_books_by_bibkeys`. This tool instantly verifies the book record using that industry code, giving you all the metadata attached.

**What is the difference between get_work and get_edition?**
`get_work` describes the abstract literary idea (the text itself). `get_edition` gives details for a specific physical printing of that work, including year or publisher.

**Can I find books in a user's list using get_list_seeds?**
Yes. If you know the ID of a book list, `get_list_seeds` retrieves the actual titles (the seeds) that the user added to that collection.

**Do I need search_books or get_subject for genre searching?**
`search_books` is best for keyword matching. Use `get_subject` when you want books grouped by a specific, predefined academic topic or tag (like 'love' or 'history').

**How do I find out what an author wrote?**
First, use `search_authors` to get the Author ID. Then, pass that ID into the `get_author_works` tool. This guarantees you pull all known works for that specific creator.

**How do I use `get_recent_changes` to track modifications across the Open Library database?**
This tool provides a log of record modifications. You can monitor when books, authors, or works change metadata, which is useful for tracking data integrity over time.

**What specific details does `get_list_metadata` return about a user-created list?**
It provides structured information about the collection itself. You get details like the list's name, owner, and creation date without having to fetch all the individual item seeds first.

**If I need books that match both a subject category and an author, should I run `get_subject` or `search_authors` first?**
You must execute the queries in sequence. Run one tool (e.g., `get_subject`) to narrow down results by ID, then pass those IDs into a secondary search function for precise filtering.

**Can I look up a book if I only have its ISBN?**
Yes! Use the `get_books_by_bibkeys` tool and provide the ISBN (e.g., 'ISBN:0451526538'). The agent will return the book metadata associated with that specific identifier.

**How do I see all the different versions or publications of a specific book?**
You can use the `get_work_editions` tool with a Work ID (like 'OL27258W'). This will list the various physical editions and formats linked to that core literary work.

**Can I search for authors by their name instead of an ID?**
Absolutely. Use the `search_authors` tool with a name query. Once you find the correct author, you can use their ID with `get_author` or `get_author_works` for more details.