embassy-of-the-free-mind avatar

Source Library

embassy-of-the-free-mind/sourcelibrary-v2

Connects Claude to the Embassy of the Free Mind's collection of 15,000 rare pre-modern texts, all translated to English. The corpus spans philosophy, religion, science, and literature from before the modern era. Search operations hit the sourcelibrary.org API, which runs on a Next.js stack with MongoDB Atlas for storage and Google Gemini handling OCR and translation of the original manuscripts. Reach for this when you need primary sources from historical periods or want to query obscure philosophical and religious texts that aren't in standard training data. The underlying system processes images through a pipeline that splits two-page spreads, extracts text, translates, and summarizes.

tools
22
transport
HTTP
last updated
Nov 5, 2026

Install

From registry metadata
$ npx add-mcp https://sourcelibrary.org/api/mcp --name sourcelibrary

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http sourcelibrary https://sourcelibrary.org/api/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 22 tools

Verified live against the running server on Nov 6, 2026.

search_libraryRETURNS 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_...8 params

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_...

Parameters* required
has_translationboolean
Only return books with translations
languagestring
Filter by original language (e.g., Latin, German, Greek)
limitnumber
Max results per page (default 10, max 100)
offsetnumber
Pagination offset (use with limit to page through total_matches; default 0)
query*string
Search query — prefer single distinctive concepts ("alchemy", "tree of life") over long natural-language phrases. Wrap in "double quotes" for exact phrase.
sortstring
one of relevance · date_asc · date_desc · title
year_fromnumber
Publication year range start
year_tonumber
Publication year range end
search_translationsRETURNS 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)...15 params

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)...

Parameters* required
authorarray
Keep only passages by these authors, e.g. ["Ficino"] or ["della Porta", "Agrippa"]. Matches by name: every word you give must start a word of the book's author field.
book_idstring
Search within a specific book
diversitystring
Re-order the passages for spread. "author": at most one passage per author and per work in each ten, for a cross-author survey. "tradition": at most 2 per tradition family and per work. Default "of...one of tradition · author · off
exclude_authorsarray
Drop passages by these authors, e.g. ["Agrippa"]. Use it to iterate a survey: run, see who dominates, exclude, run again.
exclude_languagesarray
Exclude these languages, e.g. ["Latin", "French", "German", "English"] to surface non-Western sources.
langstring
ISO code of the EDITION to read, e.g. "es". Default "en". Most books have only English — call get_book and read `editions`, or list_books with has_edition, to find the ones that do not. The respons...
languagestring
Filter by a single original language
languagesarray
Filter to any of these languages, e.g. ["Sanskrit", "Arabic", "Chinese"]. Use instead of language when targeting multiple traditions.
limitnumber
Max results per page (default 20, max 50)
max_per_authornumber
Hard cap on passages from one author; the rest are DROPPED (unlike diversity, which only re-orders). Set 1 for "N quotes from N different authors".
max_per_worknumber
Hard cap on passages from one WORK (all printings and editions of it count together, via work_id), so seven printings of De occulta philosophia are one witness, not seven.
offsetnumber
Pagination offset (use with limit to page through total_matches; default 0)
query*string
A distinctive term ("harmony of the spheres", "active intellect") or the sentence you are looking for. A multi-word query matches pages printing ANY of its words, ranked so that pages printing them...
year_fromnumber
year_tonumber
search_conceptRETURNS 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...14 params

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...

Parameters* required
authorarray
Keep only passages by these authors, e.g. ["Ficino"] or ["della Porta", "Agrippa"]. Matches by name: every word you give must start a word of the book's author field.
diversitystring
How the passages are spread. Default "tradition": each ten holds at most 2 passages per tradition family and per work, so a concept query returns several traditions and not one tradition's nearest...one of tradition · author · off
exclude_authorsarray
Drop passages by these authors, e.g. ["Agrippa"]. Use it to iterate a survey: run, see who dominates, exclude, run again.
exclude_languagesarray
Exclude these languages, e.g. ["Latin", "French", "German", "English"] to surface non-Western sources.
langstring
ISO code of the EDITION to read, e.g. "es". Default "en". Most books have only English — call get_book and read `editions`, or list_books with has_edition, to find the ones that do not. The respons...
languagestring
Filter by a single original language
languagesarray
Filter to any of these languages, e.g. ["Sanskrit", "Arabic", "Chinese"]. Use instead of language when targeting multiple traditions.
limitnumber
Max passages (default 15, max 50)
max_per_authornumber
Hard cap on passages from one author; the rest are DROPPED (unlike diversity, which only re-orders). Set 1 for "N quotes from N different authors".
max_per_booknumber
Cap on passages from any single book. Useful when one book dominates the conceptual neighborhood; for one passage per author or per work use max_per_author / max_per_work.
max_per_worknumber
Hard cap on passages from one WORK (all printings and editions of it count together, via work_id), so seven printings of De occulta philosophia are one witness, not seven.
query*string
A concept or natural-language description — full sentences are fine (e.g. "tools that extend the mind beyond the body"). Unlike search_translations, this does NOT require words that appear in the c...
year_fromnumber
Restrict to books published in or after this year (filters out modern editions and translations).
year_tonumber
Restrict to books published in or before this year.
search_within_bookSEARCHES 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 mentio...4 params

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 mentio...

Parameters* required
book_id*string
The book ID to search within
langstring
ISO code of the EDITION to read, e.g. "es". Default "en". Most books have only English — call get_book and read `editions`, or list_books with has_edition, to find the ones that do not. The respons...
offsetnumber
Pagination offset. Each call returns up to 50 pages; when truncated is true, call again with next_offset (default 0).
query*string
Search query
list_booksBROWSES/FILTERS THE CATALOG by metadata (canonical author via author_id, title/author/summary words via search, language, category, year range, translation recency) — no page-text matching. PICK THIS to see WHAT EXISTS by an author or in a tradition, or to enumerate a date ran...12 params

BROWSES/FILTERS THE CATALOG by metadata (canonical author via author_id, title/author/summary words via search, language, category, year range, translation recency) — no page-text matching. PICK THIS to see WHAT EXISTS by an author or in a tradition, or to enumerate a date ran...

Parameters* required
author_idstring
Canonical author slug, e.g. "jan-hus" — filters to exactly that person's books via the author thesaurus (variant slugs resolve to the canonical person). Every book row in results carries its author...
categorystring
edition_keystring
Other digitizations of ONE printing — pass the edition_key from a result row. Only full-quality keys match on both sides, so this answers "what other scans of this exact edition do you hold?" and n...
has_editionstring
ISO code — return only books READABLE in that language, e.g. "es". Different from `language`, which is the language printed on the leaves of the scan: a Latin book with a Spanish edition matches la...
languagestring
limitnumber
Max results (default 100, max 200)
offsetnumber
Pagination offset. When truncated is true, call again with next_offset; a full page is not the whole holding (default 0).
searchstring
Relevance-ranked word match over title (original, display and English), author, original-script name forms (e.g. Greek), AND the book's AI summary. A hit can name your term in neither title nor aut...
sortstring
one of recent-translation · recent · title-asc · title-desc
work_idstring
Every witness of one WORK, across editions, languages and centuries — pass the work_id from a result row or from get_book. Use this instead of a title search whenever you already hold the identifie...
year_fromnumber
Earliest edition year (inclusive). Matches only books with a known numeric year — ~60% of the library.
year_tonumber
Latest edition year (inclusive).
get_bookREAD 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...1 params

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...

Parameters* required
book_id*string
The book ID
get_book_textREAD 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...8 params

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...

Parameters* required
book_id*string
The book ID
chapternumber
Chapter index (0-based). Preferred over from/to — returns pre-structured chapter text with embedded [Page N] markers.
contentstring
Which text to include: ocr (original language), translation (English), or both (default)one of ocr · translation · both
formatstring
json (default, structured with per-page fields) or plain (concatenated text with page markers)one of json · plain
fromnumber
Start page number (inclusive). Use with to for explicit page ranges.
langstring
ISO code of the EDITION to read, e.g. "es". Default "en". Resolved PER PAGE: a page with no text in that language comes back as English, labelled `translation_lang: "en"` (json) or `[Translation —...
partnumber
Part number (1-based) for large chapters split into multiple parts
tonumber
End page number (inclusive). Recommended chunk size: 50 pages. If the response has truncated=true, use the next from/to from truncation_note.
get_quoteREAD 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...5 params

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...

Parameters* required
book_id*string
The book ID
contextboolean
Also return the full text of the previous and next pages, so a sentence spanning the page break can be read whole. Set this when continuity.continues_from_previous or continues_on_next came back tr...
include_imageboolean
Also return the scan of the cited leaf as an inline image (display size, ≤1200px). Set this when the user would benefit from SEEING the page — an illustrated leaf, a title page, a diagram, disputed...
langstring
ISO code of the EDITION to quote, e.g. "es". Default "en". `quote.lang` on every response says which edition was actually served — where no such edition exists the English translation comes back wi...
page*number
Page number
list_editionsEvery 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, w...2 params

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, w...

Parameters* required
book_idstring
Any edition you already have. Its work is looked up and the siblings returned.
work_idstring
A work identifier, if you already have one (from get_book).
check_duplicateDOES THE LIBRARY HOLD THIS WORK? Call this BEFORE telling the user the library lacks a book, and before proposing one for acquisition. A miss from list_books or search_library is NOT evidence of absence: list_books matches words and search_library ranks by relevance, so a held...6 params

DOES THE LIBRARY HOLD THIS WORK? Call this BEFORE telling the user the library lacks a book, and before proposing one for acquisition. A miss from list_books or search_library is NOT evidence of absence: list_books matches words and search_library ranks by relevance, so a held...

Parameters* required
authorstring
Author in any form ("Athanasius Kircher", "Kircher, Athanasius"). Strongly improves matching.
ia_idstring
Internet Archive identifier, for an exact same-scan match.
languagestring
Language hint for the cross-lingual title match (optional).
titlestring
Title in any language, original or English, e.g. "Musurgia universalis".
urlstring
A library URL or IIIF manifest for a specific copy (title then optional).
yearnumber
Edition year, if known. Separates "same edition" from "another edition".
get_quotesREAD 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....6 params

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....

Parameters* required
book_id*string
The book ID
fromnumber
Start page (inclusive) of a range. Use with to.
include_imageboolean
Also return page scans as inline images (display size). The first 5 pages of the batch get inline image blocks; every entry still carries its page_image_url in the JSON.
langstring
ISO code of the EDITION to quote, e.g. "es". Default "en". Resolved per page — one batch can mix editions, so read `quote.lang` on each entry rather than assuming the whole dossier is in one language.
pagesarray
Explicit list of page numbers (e.g. [12, 40, 41]). Use this OR from/to.
tonumber
End page (inclusive) of a range. Use with from.
search_imagesSearch 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 an...11 params

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 an...

Parameters* required
book_idstring
Only return images extracted from this book's pages. Excludes the museum-artwork collection (artworks do not belong to books).
figurestring
EXACT, case-sensitive match on a figure tag ("Jesus Christ", "putti"). Look it up with list_image_facets.
include_thumbnail_base64boolean
Embed each result's image as a thumbnail_data_uri (data:image/jpeg;base64,…, ~1000px) directly in the JSON. ONLY useful when your harness consumes tool results programmatically (API/SDK agents that...
limitnumber
Max results (default 20, max 50)
offsetnumber
Skip this many book-illustration results — page through a large result set instead of raising limit. The response echoes offset and returns next_offset while more remain. Offsets > 0 return the gal...
querystring
Text search (e.g., "ouroboros", "tree of life")
subjectstring
EXACT, case-sensitive match on an extracted subject tag ("alchemy", "medicinal plants"); a near-miss matches nothing. Look the string up with list_image_facets first, or put loose words in query in...
symbolstring
EXACT, case-sensitive match on a symbol tag ("ouroboros", "triangle"). Look it up with list_image_facets.
typestring
Image type (woodcut, engraving, emblem, diagram). Best-effort: the medium metadata on museum artworks is unnormalized, so treat results as ranked rather than strictly filtered.
year_fromnumber
CAUTION: reliable only for book illustrations (source_type "book_illustration"). On museum-artwork records the year field is dirty — some works carry the date a photograph or upload was made (e.g....
year_tonumber
See year_from — same reliability caution applies.
list_image_facetsList the legal values of search_images' type, subject, figure and symbol filters, with how many images carry each. Those filters are EXACT string matches on tags an AI extractor wrote, and each vocabulary runs to thousands of strings (e.g. "musical notes", "Jesus Christ", "med...3 params

List the legal values of search_images' type, subject, figure and symbol filters, with how many images carry each. Those filters are EXACT string matches on tags an AI extractor wrote, and each vocabulary runs to thousands of strings (e.g. "musical notes", "Jesus Christ", "med...

Parameters* required
containsstring
Case-insensitive substring to look for, e.g. "dragon". Matches are ordered by image count.
facetstring
Which filter's vocabulary. Omit for the top values of all four.one of type · subject · figure · symbol
limitnumber
Values per facet (default 100 with a facet, 25 without; max 500).
submit_feedbackSubmit 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 manif...3 params

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 manif...

Parameters* required
emailstring
message*string
Your feedback (2-20000 chars). Long structured reports are welcome — the limit was raised from 5,000 because agent reports were pressing against it and being split across submissions.
namestring
share_findingsShare 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...5 params

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...

Parameters* required
citations*array
Ordered list of supporting passages (1-50). Get book_id + page from get_quote / search_translations.
emailstring
namestring
summarystring
Optional prose summarizing the argument (max 5000 chars)
title*string
Title of the dossier / thesis (2-300 chars)
propose_collectionPropose 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_fin...6 params

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_fin...

Parameters* required
book_ids*array
Ordered list of book ids to include (1-200). Get ids from search_library / list_books / get_book.
emailstring
namestring
rationale*string
Why these books belong together and what connects them (max 5000 chars)
suggested_slugstring
Optional URL slug suggestion, e.g. "renaissance-astronomy"
title*string
Title of the proposed collection (2-200 chars)
start_review_shiftStart a volunteer REVIEW SHIFT: the user lends their Claude (you) to Source Library to check one book, page by page, against its scans. Use when the user wants to help Source Library, says "start a shift" or "review pages", or asks how they can contribute. The user does NOT ne...4 params

Start a volunteer REVIEW SHIFT: the user lends their Claude (you) to Source Library to check one book, page by page, against its scans. Use when the user wants to help Source Library, says "start a shift" or "review pages", or asks how they can contribute. The user does NOT ne...

Parameters* required
bookstring
A book the user wants to check: id, slug or sourcelibrary.org reader URL (optional).
languagestring
Prefer books in this original language, e.g. "Latin" (optional; any language works, the user need not read it).
new_bookboolean
True to start a different book instead of resuming the last one.
volunteer_codestring
The code from the user's earlier shift, if they have one. Omit on a first shift; one is issued.
continue_review_shiftNext page of the book being reviewed. Call it straight after finishing a page until the stretch the user chose is done, and again when they ask for more. Pass next.book and next.after from the previous page, and volunteer_code. Returns the same shape as start_review_shift; fol...3 params

Next page of the book being reviewed. Call it straight after finishing a page until the stretch the user chose is done, and again when they ask for more. Pass next.book and next.after from the previous page, and volunteer_code. Returns the same shape as start_review_shift; fol...

Parameters* required
after*number
next.after from the previous page
book*string
next.book from the previous page
volunteer_code*string
start_blind_checkOPTIONAL lane, only for a user who reads the original language and asks to judge pages themselves: up to five random pages from different books, each with scan, transcription and English. Here the USER is the reviewer: ask for THEIR verdict first, before any opinion of yours,...3 params

OPTIONAL lane, only for a user who reads the original language and asks to judge pages themselves: up to five random pages from different books, each with scan, transcription and English. Here the USER is the reviewer: ask for THEIR verdict first, before any opinion of yours,...

Parameters* required
languagestring
Original language the user reads, e.g. "Latin".
pagesnumber
How many pages (1-5, default 5).
volunteer_codestring
submit_page_reviewRecord the verdict on one page of a shift. mode "book-run" (start_review_shift / continue_review_shift): the verdict and findings are YOURS, from reading the scan and both texts; set user_looked true if the user checked anything on the page themselves. mode "blind" (start_blin...17 params

Record the verdict on one page of a shift. mode "book-run" (start_review_shift / continue_review_shift): the verdict and findings are YOURS, from reading the scan and both texts; set user_looked true if the user checked anything on the page themselves. mode "blind" (start_blin...

Parameters* required
assistant_findingsarray
Problems found, each with an exact quote (max 12).
assistant_model*string
Your own model name and version, copied exactly as your instructions or system prompt give it, and whether extended thinking is on. Write "unknown" rather than guess; a wrong name is worse than none.
assistant_verdictstring
Your own verdict (blind mode; in book-run it equals verdict).one of both_sound · translation_drift · transcription_off · both_off · unclear
book_idstring
run.book_id (book run)
first_verdictstring
blind: the user's verdict before your reading, if it changed.one of both_sound · translation_drift · transcription_off · both_off · unclear
item_id*string
page.item_id (book run) or the item's item_id (blind check)
modestring
"book-run" unless the page came from start_blind_check.one of book-run · blind
namestring
How the user wants to be credited (optional).
notestring
Anything a later reader should know (optional, max 2000 chars).
page_numbernumber
page.page_number (book run)
reader_languagesstring
Languages the user says they read, if they said.
shift_idstring
shift_id (blind check only)
text_versionobject
page.text_version, passed back unchanged.
user_lookedboolean
book-run: true if the user checked something on this page themselves.
verdict*string
book-run: your verdict. blind: the user's final verdict.one of both_sound · translation_drift · transcription_off · both_off · unclear
verdict_before_assistantboolean
blind: true if the user committed to a verdict before seeing your reading.
volunteer_code*string
propose_correctionDuring a review shift, propose a correction to a page's transcription (field "ocr") or English (field "translation"). A correction is a list of exact span edits: each "find" must be copied exactly from the text the shift returned and occur once on the page (add surrounding wor...10 params

During a review shift, propose a correction to a page's transcription (field "ocr") or English (field "translation"). A correction is a list of exact span edits: each "find" must be copied exactly from the text the shift returned and occur once on the page (add surrounding wor...

Parameters* required
assistant_model*string
Your own model name and version, copied exactly as your instructions or system prompt give it, and whether extended thinking is on. Write "unknown" rather than guess; a wrong name is worse than none.
base_hash*string
text_version.ocr or text_version.translation from the page
drafted_by*string
one of assistant · volunteer · assistant_accepted · mixed
edits*array
Span edits (1-30).
field*string
"ocr" for the transcription, "translation" for the Englishone of ocr · translation
item_id*string
page.item_id from the shift
namestring
How the user wants to be credited (optional)
notestring
Anything the second reader should know (optional)
shift_idstring
volunteer_code*string
get_locusTurn 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 pag...3 params

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 pag...

Parameters* required
reference*string
The canonical reference: "1094a8", "1094a", "1447", "328b". A leading system name is accepted ("Bekker 1094a"), as is a work name ("Rep. 328b").
systemstring
Optional: "bekker" or "stephanus". Inferred from the work when omitted; do not guess it from the number, since the two ranges overlap.
workstring
The work or dialogue, when the reference needs it (Plato always does): "Republic", "Timaeus", "Laws", "Nicomachean Ethics", "Poetics". Greek or Latin titles as printed in the editions also resolve.

Sponsors

Readme

Source Library Logo

Source Library

A digital library of historical primary sources with AI-aided OCR, translation, and scholarly curation.

License: AGPL v3 Next.js MongoDB Postgres Supabase Gemini API

🌐 Visit Library • 📖 Docs • 🗺️ System Map • 🤝 Contribute


🎬 Experience Source Library

Details

Repository
github.com/embassy-of-the-free-mind/sourcelibrary-v2
Website
sourcelibrary.org/developers
Category
Search & Web Crawling
Transport
HTTP
Registry
MCP registry, active
Resources
2
Tools verified
Nov 6, 2026

Related Search & Web Crawling MCP servers

View all
1pixell-global avatarsayoupixell-global/sayouPersistent knowledge workspace for AI agents. Versioned files, search, and MCP tools.27stars
2smaniches avatarSemantic Scholar MCP Serversmaniches/semantic-scholar-mcpMCP server for the Semantic Scholar API: search 200M+ papers, citations, authors, recommendations.25stars
3cdnsteve avatarRemembrallMCPcdnsteve/remembrallmcpPersistent knowledge memory for AI agents. Hybrid search, code graph, pgvector.24stars
4a-church-ai avataraChurch.aia-church-ai/churchA sanctuary for AI agents and humans: attend a service, reflect, read, search, and ask. No auth.23stars
5verivus-oss avatarsqry - Semantic Code Searchverivus-oss/sqryAST-based semantic code search: 33 tools, 35 languages, call tracing, impact analysis22stars
6himalayas-app avatarHimalayas Remote Jobshimalayas-app/himalayas-mcpRemote jobs: job search, salary data and application tracking, or post a job and hire candidates21stars