Health: ActiveRecent health check succeeded.Last checked 8/10/2026, 11:58:02 PM
Source Library
Enrichment pendingWe havenโt run our AI enrichment pass on this listing yet, so the overview, use cases, and FAQ below may be sparse or missing. We work through the catalog over time โ check back soon.
Explore thousands of digitized historical texts with AI-enhanced translations and scholarly curation.
๐ฏ About Source Library
Source Library is an open digital library dedicated to making early printed books and primary sources readable and citable. We specialize in alchemy, Hermetica, Kabbalah, Rosicrucianism, and early modern scienceโtexts that bridge historical scholarship with contemporary exploration.
๐ Why Source Library?
โจ Originals First โ Read the original language text with AI-enhanced translations alongside
๐ Citable Scholarship โ Every book gets a DOI and scholarly metadata (USTC alignment, edition tracking)
๐ Discovery โ Collections, galleries of illustrations, and semantic search surface overlooked texts
โ Rigorous QA โ Manual verification, image quality scoring, and OCR validation before publication
The platform ingests ~15K pages monthly from Internet Archive, Gallica, Bodleian, Wellcome, and other digital heritage partners.
๐ Quick Start
๐ป Development Environment
bash
# ๐ด Clone and install
git clone https://github.com/Embassy-of-the-Free-Mind/sourcelibrary-v2.git
cd sourcelibrary-v2
npm install
# โ๏ธ Configure environment (see .env.example for required variables)
# Must include: MongoDB Atlas connection, Google Gemini API key, Vercel Blob token
# โถ๏ธ Start dev server
npm run dev
๐ Publishing โ Set visible: true, mint DOI, push to search index
Batch endpoints process up to 5 pages/request using Gemini Batch API (50% cheaper).
๐ API Routes (Key)
Base URL:https://sourcelibrary.org (production) or http://localhost:3000 (local dev with .env.local configured).
Common 404 mistake: paths like /api/bph/books or /api/bph/books/[id]do not exist. BPH catalogue APIs live under /api/embed/bph/.... There is also no top-level /api/[tenant]/books route โ tenant book listings use /api/books/library or the embed routes below.
Public read APIs (no auth required today)
Endpoint
Method
Purpose
/api/search?q=<query>
GET
Full-text search across books and page translations
/api/books?limit=100&offset=0
GET
Simple book list (global catalogue; visible: true, indexed only)
/api/books/library?limit=100&skip=0
GET
Rich browse API โ search, sort, filters, collections
The /api/[tenant]/books/[id]/... paths that exist in the codebase are editor/processing routes (batch OCR, index rebuild, etc.) โ not public catalogue listings.
Authenticated / internal APIs
These require a signed-in session cookie, editor role, or (for some dataset endpoints) a Bearer API key. Calling them without auth returns 401 or 403.
All examples below hit production and need no API key. Replace the base URL with http://localhost:3000 when running locally (MongoDB + env vars required).
curl
bash
# Search translated text
curl -s "https://sourcelibrary.org/api/search?q=quintessence&limit=5" | jq .
# List books (global catalogue)
curl -s "https://sourcelibrary.org/api/books?limit=5" | jq .
# Browse with filters and sort
curl -s "https://sourcelibrary.org/api/books/library?limit=5&sort=recent-translation&has_translation=true" | jq .
# BPH catalogue โ note /api/embed/bph/, NOT /api/bph/
curl -s "https://sourcelibrary.org/api/embed/bph/books?limit=5&translated=true" | jq .
# BPH via tenant_slug on the library endpoint
curl -s "https://sourcelibrary.org/api/books/library?tenant_slug=bph&limit=5" | jq .
# Book metadata (id or slug)
curl -s "https://sourcelibrary.org/api/books/know-thyself-reger-von-ehrenhart" | jq .
# Citable quote for a page
curl -s "https://sourcelibrary.org/api/books/6836f8ee811c8ab472a49e36/quote?page=57" | jq .
# Gallery search
curl -s "https://sourcelibrary.org/api/gallery?subject=alchemy&limit=5" | jq .
Pretty-printing with jq is optional; omit | jq . to see raw JSON.
Postman
Create a new GET request.
Set URL to e.g. https://sourcelibrary.org/api/embed/bph/books
On the Params tab add query keys: limit = 24, sort = title, translated = true
Leave Auth as No Auth for the public endpoints above.
// From the UI or via API
POST /api/books
{
"ia_id": "thehermetic00fludd",
"title": "The Hermetic and Alchemical Writings",
"author": "Arthur Edward Waite",
"language": "en",
"ustc_id": "123456"
}
The system:
๐ฅ Fetches page images from IA IIIF
โ๏ธ Detects splits and generates crop coordinates
๐ค Queues for OCR and translation
๐ Publishes when processing completes
โ๏ธ Processing a Split Book
๐ฅ๏ธ Visit /book/[id]/split
๐ฑ๏ธ Adjust split line visually (drag or Gemini AI auto-detection)
โ Click "Apply Split" โ creates two virtual pages with crop coordinates
๐ธ Original images preserved; OCR runs on cropped versions
โ๏ธ Batch OCR with Gemini Batch API
typescript
POST /api/books/[id]/batch-ocr-async
{
"page_ids": ["page-1", "page-2", "page-3"],
"language": "la"
}
Returns a job ID; Gemini processes offline, saves results when complete. 50% cheaper than standard API.
๐ Generating a Scholarly Edition
typescript
POST /api/books/[id]/editions
{
"title": "The Emerald Tablet: First Complete English Translation",
"translator": "Jane Doe",
"language": "en",
"format": "epub"
}
System generates:
๐ Scholarly front matter (introduction, translator bio, etc.)
๐ฑ EPUB with TOC and metadata
๐ DOI via Zenodo integration
๐ Citation metadata (BibTeX, RIS)
๐งช Testing
๐ Run Tests
bash
# Unit tests
npm run test:unit
# Integration tests
npm run test:integration
# End-to-end tests (Playwright)
npm run test:e2e
# Coverage report
npm run test:coverage
# Watch mode
npm run test:watch
โ E2E Test Examples
๐ฅ Book import โ Validate IA ingestion pipeline
Add the following block to your claude_desktop_config.json under mcpServers: "mcpServers": { "source-library": { "command": "npx", "args": ["-y", "source-library"] } }
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
GitHub stars14
GitHub Star CountTotal stargazers on GitHub representing community popularity (14 stars).
Last commitToday
Last Repository CommitThe most recent commit or push recorded for this server's GitHub repository.Last commit on Aug 10, 2026
41Quality signal: Fair ยท 41/100How this signal is calculated โพ
Server availabilityNot measured
Not scored for repo-hosted servers โ we can't reach the running server, only its GitHub page. Hosted MCP endpoints are health-checked live.
Verified ownership10/20
Documentation & tools15/30
Adoption & activity6/15
Community engagement0/10
A guidance signal from public completeness & health data โ not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.
โ Spotlight Slot
Feature Your MCP Server
Get maximum visibility for your server across our directory, search results, and detail pages.