For Developers & AI

Open API over 15,000+ rare pre-modern texts translated to English. No auth needed to start — sign in for a free key to lift rate limits and help us see what you're building.

The easiest path: just ask Claude

You don't need to install anything to use this collection with an AI. Open Claude (or any assistant with web access) and ask it to look something up on sourcelibrary.org — it will search, read pages, and quote with citation links. No SDK, no key, no setup.

“Use sourcelibrary.org to find what Paracelsus says about the spagyric process. Quote a few passages with citation URLs.”

“Search sourcelibrary.org for early modern texts on the harmony of the spheres — give me three with page links.”

“On sourcelibrary.org, read the first 20 pages of Fludd's Utriusque Cosmi Historia and summarize the cosmological model.”

For richer, structured access — semantic search, 50-page bulk reads, image search, DOI-backed citations — install the MCP server below or call the API directly.

30-second start (API)

One endpoint, no key required to begin. It speaks JSON-RPC over HTTP, so anything that can POST JSON can talk to it.

curl
curl -X POST https://sourcelibrary.org/api/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0", "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search_concept",
      "arguments": { "query": "prima materia", "limit": 5 }
    }
  }'
Browser (fetch)
fetch('https://sourcelibrary.org/api/mcp', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0', id: 1,
    method: 'tools/call',
    params: {
      name: 'search_concept',
      arguments: { query: 'prima materia', limit: 5 }
    }
  })
}).then(r => r.json()).then(console.log)

CORS is open (Access-Control-Allow-Origin: *) — paste the snippet above into any browser console and it works.

Building something? Grab a free key.

The endpoints work without one — keys lift rate limits, give your traffic attribution, and help us learn what people are building so we can keep this open and free. Takes a minute.

Loading...

What you can build

A researcher studying Renaissance natural philosophy wants to trace how the concept of “spiritus mundi” evolves from Ficino through Agrippa to Fludd. With the MCP server connected to Claude, they search across all three authors' translated works in a single conversation, pull exact passages with page citations, and compile a comparative analysis with DOI-backed references — work that would take days in a physical archive.

The same tools work for building research apps, enriching datasets with primary source references, or giving AI systems grounded access to pre-modern texts that aren't in their training data.

MCP Server

Gives Claude (and any MCP client) direct access to the full collection — search, read, quote, and browse 150,000+ illustrations. The endpoint is plain JSON-RPC over HTTP, so you can also call it from any HTTP client without an MCP library (see the snippets above). Pick whichever path fits.

Remote MCP Server (Streamable HTTP)

No install needed — connect any MCP client directly.

https://sourcelibrary.org/api/mcp
Claude.ai & Claude Desktop (Connectors)No code — works in the chat you already use
  1. Open claude.ai → Settings → Connectors (Claude Desktop uses the same Connectors settings).
  2. Click Add custom connector.
  3. Name it Source Library — keep this exact name; shared pages and artifacts that call the library look your connector up by it.
  4. URL: https://sourcelibrary.org/api/mcp — leave the OAuth fields empty (no authentication), then save.
  5. In any chat, open the tools menu, switch the connector on, and ask away — try the prompts below.
Claude Code (one command)Add -H "Authorization: Bearer YOUR_KEY" for higher limits
claude mcp add source-library https://sourcelibrary.org/api/mcp
Other MCP clients (Cursor, Windsurf, custom)Any client that speaks Streamable HTTP
{
  "mcpServers": {
    "source-library": {
      "url": "https://sourcelibrary.org/api/mcp"
    }
  }
}
Local via npm (stdio-only clients)Legacy — prefer the remote URL above
claude mcp add source-library -- npx -y @source-library/mcp-server

Tools

search_libraryFull-text search across books and page content
search_translationsSearch inside translated text across the whole library
search_conceptSemantic / conceptual passage search — matches paraphrases and adjacent ideas, not just keywords
search_within_bookSearch inside a specific book's pages
list_booksBrowse with filters — language, year, category, translation status
get_bookBook metadata: summary, chapters, edition info, DOI
get_book_textRead 50+ pages in one call — OCR, translation, or both
get_quoteExact text of a single page with citation URL
search_imagesSearch 150,000+ historical illustrations by subject, symbol, type

Try asking Claude

“Search for references to ‘prima materia’ across the collection. Which authors discuss it, and how do their treatments differ?”

“Read the full translation of Fludd's History of Both Worlds, pages 1–50. Summarize the cosmological framework.”

“What does Copernicus say about the Sun's centrality in De Revolutionibus? Find the key passages with citation URLs.”

“Find all alchemical emblems depicting the ouroboros. What texts are they from?”

Command Line

Same tools as the MCP server, but standalone with colored terminal output. Add --json for scripts.

# Install
npm install -g @source-library/mcp-server

# Search the collection
source-library search "Paracelsus" --language=German

# Search inside translations
source-library translations "harmony of the spheres"

# Read a book
source-library text history-of-both-worlds-macrocosm-fludd --from=1 --to=50

# Get exact text for quoting
source-library quote history-of-both-worlds-macrocosm-fludd 57

# Browse illustrations
source-library images --subject=alchemy --type=emblem

# JSON output for piping
source-library search "alchemy" --json | jq .results

REST API

Direct HTTP access, no authentication. The MCP server and CLI use these same endpoints.

Base URL: https://sourcelibrary.org/api
GET/search

Full-text search across books and page content

qstringSearch query (required)
languagestringFilter by language
year_from / year_tonumberPublication year range
sortstringrelevance, date_asc, date_desc, title
GET /search?q=philosopher's stone&language=Latin
GET/books/:id/text

Get full book text (OCR, translation, or both) in a single call

contentstringocr, translation, or both (default)
from / tonumberPage range (inclusive)
formatstringjson (structured) or plain (concatenated text)
GET /books/history-of-both-worlds-macrocosm-fludd/text?content=translation&from=1&to=50
GET/books/:idBook metadata, summary, DOI
GET/books/libraryBrowse with language/category/collection filters
GET/books/:id/searchSearch within a book's pages
GET/books/:id/quoteSingle-page text for verbatim quoting
GET/verify?book_id=&page=Flat alias of /books/:id/quote — verbatim page text + citation block, for web agents with URL allow-lists
GET/gallerySearch 150,000+ historical illustrations
GET/catalog/csvDownload the full catalogue as CSV

Bulk dataset access

Pulling OCR text, translations, or page-level data in bulk? That tier is keyed — use the form above to request one, or email us with what you're building. Reviewed within 24 hours.

Citation URLs

Every page includes a citation URL linking directly to the source. Published editions have DOIs via Zenodo.

Page

https://sourcelibrary.org/book/history-of-both-worlds-macrocosm-fludd?page=57

Book

https://sourcelibrary.org/book/history-of-both-worlds-macrocosm-fludd

With DOI

Author, Title, trans. Source Library (Year), p. N. DOI: 10.5281/zenodo.xxxxx

/llms.txt

Complete API documentation formatted for LLM consumption.

Pipeline Architecture

How books flow through 10 processing stages: Lambda workers, SQS queues, Gemini AI, backpressure controls. Live counts, diagrams, cost breakdowns.