{"apiVersion":"v1","directorySlug":"sourcelibrary-mcp-dc133c5288","title":"Source Library","description":"Digitizing and translating ancient texts for scholars, seekers and AI systems.","pageUrl":"https://www.mcpbundles.com/skills/sourcelibrary-mcp-dc133c5288","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://sourcelibrary.org/api/mcp","hostedMcpUrl":null,"toolCount":15,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"org.sourcelibrary/sourcelibrary-mcp-dc133c5288","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"search_library","description":"RETURNS A LIST OF BOOKS (works on a topic) — NOT passages. PICK THIS to discover which works exist on a subject. → For quotable text use search_translations (exact words) or search_concept (by meaning); if the user already named an author/work, call get_book directly (or list_books to find the ID) — the AI summary + chapter outline is usually the right first answer. Searches titles, authors, subjects, and (as a secondary signal) translated text. Query tips: single distinctive words or short phra","inputSchema":{"type":"object","required":["query"],"properties":{"sort":{"enum":["relevance","date_asc","date_desc","title"],"type":"string"},"limit":{"type":"number"},"query":{"type":"string"},"offset":{"type":"number"},"year_to":{"type":"number"},"language":{"type":"string"},"year_from":{"type":"number"},"has_translation":{"type":"boolean"}}},"title":"Search Library","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_library","displayName":"Search Library"},{"name":"search_translations","description":"RETURNS QUOTABLE PASSAGES (page-level snippets + citation URLs), matched by KEYWORD/term. PICK THIS to find a quote or textual evidence on a topic across the whole library. → If the modern word won't literally appear in historical texts, use search_concept (matches by meaning); to list which BOOKS cover a topic use search_library; to dig inside one known book use search_within_book; if the user named an author/work, get_book first (its AI summary is usually the right first read). Query tips: sin","inputSchema":{"type":"object","required":["query"],"properties":{"lang":{"type":"string"},"limit":{"type":"number"},"query":{"type":"string"},"offset":{"type":"number"},"book_id":{"type":"string"},"year_to":{"type":"number"},"language":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"year_from":{"type":"number"},"exclude_languages":{"type":"array","items":{"type":"string"}}}},"title":"Search Translations","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_translations","displayName":"Search Translations"},{"name":"search_concept","description":"RETURNS QUOTABLE PASSAGES matched by MEANING (cosine similarity on Gemini embeddings, 768d) — paraphrases and adjacent phrasings match even with zero keyword overlap. PICK THIS when the modern term won't literally appear in historical texts — e.g. \"distributed cognition\" maps to passages about active intellect, art of memory, wax tablet metaphors; \"social contract\" maps to pre-Hobbesian discussions of consent and authority. → For exact words/distinctive terms use search_translations (cheaper, mo","inputSchema":{"type":"object","required":["query"],"properties":{"lang":{"type":"string"},"limit":{"type":"number"},"query":{"type":"string"},"year_to":{"type":"number"},"language":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"year_from":{"type":"number"},"max_per_book":{"type":"number"},"exclude_languages":{"type":"array","items":{"type":"string"}}}},"title":"Search by Concept","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_concept","displayName":"Search by Concept"},{"name":"search_within_book","description":"SEARCHES INSIDE ONE BOOK (requires book_id). PRIMARILY KEYWORD: it runs a lexical search over the book's pages plus a narrow scoped-semantic pass (top ~10), interleaved by relevance. PICK THIS when you know the wording you are looking for, or want every page of one book mentioning a term. → IF YOU ARE SEARCHING FROM A PARAPHRASE, a half-remembered line, or a modern restatement, USE search_concept INSTEAD — it is the meaning-matching tool and it searches the whole corpus, including translations w","inputSchema":{"type":"object","required":["book_id","query"],"properties":{"lang":{"type":"string"},"query":{"type":"string"},"book_id":{"type":"string"}}},"title":"Search Within Book","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_within_book","displayName":"Search Within Book"},{"name":"list_books","description":"BROWSES/FILTERS THE CATALOG by metadata (canonical author via author_id, author/title fragment via search, language, category, year range, translation recency) — no content/topic matching. PICK THIS to see WHAT EXISTS by an author or in a tradition, or to enumerate a date range. Returns books with title, author (string + canonical author_id + author_url), language, year, and translation progress. → For a relevance-ranked topic search use search_library; for passages on a theme use search_transla","inputSchema":{"type":"object","properties":{"sort":{"enum":["recent-translation","recent","title-asc","title-desc"],"type":"string"},"limit":{"type":"number"},"search":{"type":"string"},"work_id":{"type":"string"},"year_to":{"type":"number"},"category":{"type":"string"},"language":{"type":"string"},"author_id":{"type":"string"},"year_from":{"type":"number"},"edition_key":{"type":"string"},"has_edition":{"type":"string"}}},"title":"List Books","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_books","displayName":"List Books"},{"name":"get_book","description":"READ PIPELINE step 1 — DISCOVER. START HERE for any named work or author. Returns the book's AI-generated summary, chapter list, edition metadata, DOI, page counts, IIIF manifest, and the cover image (inline, so you and the user can see the book). LANGUAGE: `language` is what is printed on THIS EDITION's leaves, which is frequently not the language the work was written in. Where they differ the response also carries `work_language`, `text_role` (original / period-translation / modern-translation","inputSchema":{"type":"object","required":["book_id"],"properties":{"book_id":{"type":"string"}}},"title":"Get Book","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_book","displayName":"Get Book"},{"name":"get_book_text","description":"READ PIPELINE step 2 — READ. Read a book's text. Call get_book first (step 1) for the chapter list, then come here. Preferred: use the chapter param to read one chapter at a time (includes [Page N] markers for citation). Alternatively, use from/to for explicit page ranges (e.g. from=1 to=50). When you find passages worth quoting, hand the page numbers to get_quote / get_quotes (step 3) for verbatim text + a citation link. TRUNCATION: the response always includes truncated: true/false. When trunc","inputSchema":{"type":"object","required":["book_id"],"properties":{"to":{"type":"number"},"from":{"type":"number"},"lang":{"type":"string"},"part":{"type":"number"},"format":{"enum":["json","plain"],"type":"string"},"book_id":{"type":"string"},"chapter":{"type":"number"},"content":{"enum":["ocr","translation","both"],"type":"string"}}},"title":"Read Book Text","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_book_text","displayName":"Read Book Text"},{"name":"get_quote","description":"READ PIPELINE step 3 — CITE. Get the exact verbatim text of a single page plus its citation apparatus. ALWAYS use before putting text in quotation marks. The response headline is citation_link (the stable sourcelibrary.org/q/… shortlink) — present it to the user alongside the quote. Render as:\n> [exact translation text, verbatim]\n> — [Author], p. [N]. [citation_link]\nPAGE BREAKS: this corpus is paginated from physical leaves, and nearly one prose page-boundary in five has a sentence running acro","inputSchema":{"type":"object","required":["book_id","page"],"properties":{"lang":{"type":"string"},"page":{"type":"number"},"book_id":{"type":"string"},"context":{"type":"boolean"},"include_image":{"type":"boolean"}}},"title":"Get Quote","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_quote","displayName":"Get Quote"},{"name":"list_editions","description":"Every edition of one work that the library holds — the other witnesses to the same text, across languages and centuries. Give it a book_id (easiest: the id of any edition you already found) or a work_id. USE THIS when a quotation needs checking against more than one witness, when you want the original-language text behind a translation, or when comparing how a passage reads across editions — differences between witnesses are often the finding. Returns language, date, page count and translation c","inputSchema":{"type":"object","properties":{"book_id":{"type":"string"},"work_id":{"type":"string"}}},"title":"List Editions of a Work","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_editions","displayName":"List Editions of a Work"},{"name":"get_quotes","description":"READ PIPELINE step 3 — CITE, in batch. Get verbatim text + citation_link for SEVERAL pages of a single book in one round-trip, to assemble a multi-passage dossier. Specify either pages (an explicit array, e.g. [12, 40, 41]) or an inclusive from/to range. Max 25 pages per call. Each entry carries its own citation_link to present alongside the quote, and — on non-Latin-script pages that have one — a romanized layer to show between the original and the translation (AI apparatus, not a transcription","inputSchema":{"type":"object","required":["book_id"],"properties":{"to":{"type":"number"},"from":{"type":"number"},"lang":{"type":"string"},"pages":{"type":"array","items":{"type":"number"}},"book_id":{"type":"string"},"include_image":{"type":"boolean"}}},"title":"Get Quotes (batch)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_quotes","displayName":"Get Quotes (batch)"},{"name":"search_images","description":"Search 200,000+ historical illustrations, emblems, engravings, diagrams, AND 24,000+ artworks (paintings, prints, sculptures). Filter by type, subject, figure, symbol, year. Results interleave two collections: illustrations extracted from book pages (each with a page number and book link) and standalone museum artworks (type: \"artwork\"). The first few results also return as inline images YOU can see. Hosts that support MCP Apps render an in-chat image gallery for this tool automatically; on othe","inputSchema":{"type":"object","properties":{"type":{"type":"string"},"limit":{"type":"number"},"query":{"type":"string"},"figure":{"type":"string"},"offset":{"type":"number"},"symbol":{"type":"string"},"book_id":{"type":"string"},"subject":{"type":"string"},"year_to":{"type":"number"},"iconclass":{"type":"string"},"year_from":{"type":"number"},"include_thumbnail_base64":{"type":"boolean"}}},"title":"Search Images","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_images","displayName":"Search Images"},{"name":"submit_feedback","description":"Submit feedback, bug reports, or feature requests to the Source Library team. Before proposing NEW functionality, read https://sourcelibrary.org/llms.txt and https://sourcelibrary.org/developers — several past submissions proposed building things that already exist (IIIF manifests, Content Search, DTS), which wastes reviewer time. State in the report which docs you checked. Bug reports with record IDs and reproducing queries are the most actionable kind.","inputSchema":{"type":"object","required":["message"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"message":{"type":"string"}}},"title":"Submit Feedback","logicalName":"submit_feedback","displayName":"Submit Feedback","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"share_findings","description":"Share a research dossier back to the Source Library team — a title, an optional summary, and an ordered list of citations (the passages your thesis rests on). Each citation is a reference { book_id, page, note }, NOT copied text: the library re-renders the canonical quote from the reference, so links stay authoritative. Use this when the user has assembled a thesis backed by passages across one or more books and wants to contribute it back. Like submit_feedback, this goes to the team for review","inputSchema":{"type":"object","required":["title","citations"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"summary":{"type":"string"},"citations":{"type":"array","items":{"type":"object","required":["book_id","page"],"properties":{"note":{"type":"string"},"page":{"type":"number"},"book_id":{"type":"string"}}}}}},"title":"Share Findings","logicalName":"share_findings","displayName":"Share Findings","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"propose_collection","description":"Propose a themed collection of books to the Source Library team — a title, a rationale (why these books belong together and what thread connects them), and an ordered list of book ids. Get book ids from search_library / list_books / get_book. Like submit_feedback and share_findings, this goes to the team for REVIEW — it does NOT create a public collection instantly; a curator reviews and approves it. Use this when the user has identified a coherent set of books worth grouping and wants to contri","inputSchema":{"type":"object","required":["title","rationale","book_ids"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"book_ids":{"type":"array","items":{"type":"string"}},"rationale":{"type":"string"},"suggested_slug":{"type":"string"}}},"title":"Propose a Collection","logicalName":"propose_collection","displayName":"Propose a Collection","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_locus","description":"Turn a CANONICAL CITATION into the actual leaves that carry it. Aristotle is cited by Bekker number (1094a8, 1447a) and Plato by Stephanus number (Rep. 328b) — the references scholarship has used for centuries, which survive re-typesetting and are shareable in a way a scan page never is. USE THIS FIRST whenever a passage arrives as a canonical reference rather than a page: do not try to derive the page yourself from a book's pagination, which is what produced a wrong guess before this tool exist","inputSchema":{"type":"object","required":["reference"],"properties":{"work":{"type":"string"},"system":{"type":"string"},"reference":{"type":"string"}}},"title":"Find a Canonical Reference (Bekker / Stephanus)","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_locus","displayName":"Find a Canonical Reference (Bekker / Stephanus)"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Source-Library&config=eyJ1cmwiOiAiaHR0cHM6Ly9zb3VyY2VsaWJyYXJ5Lm9yZy9hcGkvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Source-Library%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsourcelibrary.org%2Fapi%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Source-Library%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsourcelibrary.org%2Fapi%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Source+Library&connectorUrl=https%3A%2F%2Fsourcelibrary.org%2Fapi%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Source-Library\" --url \"https://sourcelibrary.org/api/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/sourcelibrary-mcp-dc133c5288","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/sourcelibrary-mcp-dc133c5288/tools/{tool}","mcpServerUrl":"https://sourcelibrary.org/api/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/sourcelibrary-mcp-dc133c5288?live=1"}