Source Library
REMOTE · SOURCELIBRARY.ORG · SCANNED AUG 3
Search 15K rare pre-modern texts translated to English: philosophy, religion, science, literature.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3132 tokens (~240/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · sourcelibrary.org
claude mcp add --transport http embassy-of-the-free-mind-sourcelibrary https://sourcelibrary.org/api/mcp
[mcp_servers.embassy-of-the-free-mind-sourcelibrary] url = "https://sourcelibrary.org/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"embassy-of-the-free-mind-sourcelibrary": {
"type": "remote",
"url": "https://sourcelibrary.org/api/mcp",
"enabled": true
}
}
} openclaw mcp add embassy-of-the-free-mind-sourcelibrary --url https://sourcelibrary.org/api/mcp --transport streamable-http
mcp_servers:
embassy-of-the-free-mind-sourcelibrary:
url: "https://sourcelibrary.org/api/mcp" {
"mcpServers": {
"embassy-of-the-free-mind-sourcelibrary": {
"type": "http",
"url": "https://sourcelibrary.org/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 65
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://sourcelibrary.org/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=sourcelibrary.org | CN=YE2,O=Let's Encrypt,C=US | 12 Jul 2026 | 10 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 54ca6a22978e3303ab668259c9c56a5994e |
| SANs: *.sourcelibrary.org, sourcelibrary.org | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of sourcelibrary.org. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| org. | present | 26974 | 8 | Verified |
| sourcelibrary.org. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data: https://translate.google.com https://translate.googleapis.com https://www.googletagmanager.com https://analytics.ahrefs.com https://eu-assets.i.posthog.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://translate.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https://images.sourcelibrary.org https://*.r2.dev https://*.public.blob.vercel-storage.com https://*.amazonaws.com https://iiif.archive.org https://archive.org https://dl.ndl.go.jp https://gallica.bnf.fr https://api.digitale-sammlungen.de https://www.e-rara.ch https://digi.vatlib.it https://*.bodleian.ox.ac.uk https://cudl.lib.cam.ac.uk https://diglib.hab.de https://iiif.wellcomecollection.org https://upload.wikimedia.org https://*.loc.gov https://babel.hathitrust.org https://bl.digirati.io https://images.lib.cam.ac.uk https://www.e-codices.unifr.ch https://cdm21059.contentdm.oclc.org https://iiif.universiteitleid |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(self), microphone=(self), geolocation=() |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://sourcelibrary.org/api/mcp | Verified | 200 | |
| http (plaintext) | http://sourcelibrary.org/api/mcp | HTTPS enforced | 301 | https://sourcelibrary.org/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_book Get Book ~136
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, and IIIF manifest. The summary is typically a multi-paragraph orientation covering the book's argument, structure, and significance — often answering the question without further searching. Then: get_book_text to read a chapter or page range (step 2), get_quote / get_quotes to lock specific pages with full citation apparatus (step 3). search_within_book locates passages inside this book.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | yes | The book ID |
No output schema declared.
No examples provided.
get_book_text Read Book Text ~399
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 truncated=true, the truncation_note field gives the exact next from/to values to call — this means content was cut short by a page-budget limit, NOT that the book ended. An AI agent MUST NOT infer end-of-book from pages_returned alone; check truncated first. Budget limits apply to anonymous callers (~50 pages per 24h); sign in at sourcelibrary.org/auth/signin or get an API key at sourcelibrary.org/developers for higher limits.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | yes | The book ID |
| chapter | number | — | Chapter index (0-based). Preferred over from/to — returns pre-structured chapter text with embedded [Page N] markers. |
| content | string | — | Which text to include: ocr (original language), translation (English), or both (default) |
| format | string | — | json (default, structured with per-page fields) or plain (concatenated text with page markers) |
| from | number | — | Start page number (inclusive). Use with to for explicit page ranges. |
| part | number | — | Part number (1-based) for large chapters split into multiple parts |
| to | number | — | End page number (inclusive). Recommended chunk size: 50 pages. If the response has truncated=true, use the next from/to from truncation_note. |
No output schema declared.
No examples provided.
get_quote Get Quote ~130
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: > [exact translation text, verbatim] > — [Author], p. [N]. [citation_link] For several pages of one book at once, use get_quotes.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | yes | The book ID |
| page | number | yes | Page number |
No output schema declared.
No examples provided.
get_quotes Get Quotes (batch) ~176
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.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | yes | The book ID |
| from | number | — | Start page (inclusive) of a range. Use with to. |
| pages | array | — | Explicit list of page numbers (e.g. [12, 40, 41]). Use this OR from/to. |
| to | number | — | End page (inclusive) of a range. Use with from. |
No output schema declared.
No examples provided.
list_books List Books ~149
BROWSES/FILTERS THE CATALOG by metadata (author/title fragment, language, category, translation recency) — no content/topic matching. PICK THIS to see WHAT EXISTS by an author or in a tradition. Returns books with title, author, language, year, and translation progress. → For a relevance-ranked topic search use search_library; for passages on a theme use search_translations (exact words) or search_concept (by meaning).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
| language | string | — | — |
| limit | number | — | Max results (default 100, max 200) |
| search | string | — | Filter by title or author |
| sort | string | — | — |
No output schema declared.
No examples provided.
propose_collection Propose a Collection ~220
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 contribute that curation back.
| Name | Type | Req | Description |
|---|---|---|---|
| book_ids | array | yes | Ordered list of book ids to include (1-200). Get ids from search_library / list_books / get_book. |
| string | — | — | |
| name | string | — | — |
| rationale | string | yes | Why these books belong together and what connects them (max 5000 chars) |
| suggested_slug | string | — | Optional URL slug suggestion, e.g. "renaissance-astronomy" |
| title | string | yes | Title of the proposed collection (2-200 chars) |
No output schema declared.
No examples provided.
search_concept Search by Concept ~565
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, more precise); to list which BOOKS cover a topic use search_library; if the user named an author/work, get_book first (semantic search is expensive — reserve it for cross-corpus discovery). Similarity calibration: 0.70+ is a strong match, 0.55–0.70 is worth reading but verify, below 0.55 is mostly conceptual drift. Set max_per_book to diversify results across many books rather than cluster on one source. Each passage carries a snippet_type — quote only "translation" snippets, never "summary". Cross-cultural tip: for pre-modern or non-Western topics, also try source-tradition vocabulary — e.g. for seminal economy try "jing preservation" or "bindu yoga" or "istimnāʾ"; for masturbation try "mollities" (Latin) or "hastamaithuna" (Sanskrit) or "shouyin" (Chinese). The corpus is indexed via period translations that use tradition-internal terminology, so adjacent/euphemistic terms often surface material that modern English keywords miss.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_languages | array | — | Exclude these languages, e.g. ["Latin", "French", "German", "English"] to surface non-Western sources. |
| language | string | — | Filter by a single original language |
| languages | array | — | Filter to any of these languages, e.g. ["Sanskrit", "Arabic", "Chinese"]. Use instead of language when targeting multiple traditions. |
| limit | number | — | Max passages (default 15, max 50) |
| max_per_book | number | — | Cap on passages from any single book. Useful when one book dominates the conceptual neighborhood; set to 1–2 for diverse author/work coverage. |
| query | string | yes | 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 cor… |
| year_from | number | — | Restrict to books published in or after this year (filters out modern editions and translations). |
| year_to | number | — | Restrict to books published in or before this year. |
No output schema declared.
No examples provided.
search_images Search Images ~154
Search 110,000+ historical illustrations, emblems, engravings, diagrams, AND 23,000+ artworks (paintings, prints, sculptures). Filter by type, subject, figure, symbol, year.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | — | — |
| figure | string | — | — |
| limit | number | — | Max results (default 20, max 50) |
| query | string | — | Text search (e.g., "ouroboros", "tree of life") |
| subject | string | — | — |
| symbol | string | — | — |
| type | string | — | Image type (woodcut, engraving, emblem, diagram) |
| year_from | number | — | — |
| year_to | number | — | — |
No output schema declared.
No examples provided.
search_library Search Library ~296
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 phrases work best ("memory palace", "ouroboros"); quoted phrases match exactly. Each result includes total_matches (full count) + returned (this page) + offset for pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| has_translation | boolean | — | Only return books with translations |
| language | string | — | Filter by original language (e.g., Latin, German, Greek) |
| limit | number | — | Max results per page (default 10, max 100) |
| offset | number | — | Pagination offset (use with limit to page through total_matches; default 0) |
| query | string | yes | Search query — prefer single distinctive concepts ("alchemy", "tree of life") over long natural-language phrases. Wrap in "double quotes" for exact phrase. |
| sort | string | — | — |
| year_from | number | — | Publication year range start |
| year_to | number | — | Publication year range end |
No output schema declared.
No examples provided.
search_translations Search Translations ~505
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: single distinctive terms ("memory palace", "wax tablet") work best; multi-word natural-English queries ("unity of the intellect") may return fewer results because matching is term-based, not phrase-based. Each snippet has a snippet_type — "translation"/"ocr" means it is a verbatim extract from the source text; "summary" means it is AI-generated description (do not quote those as the author's words). Response includes total_matches, returned, and offset for pagination. Cross-cultural tip: for pre-modern or non-Western topics, search source-tradition vocabulary rather than modern English terms — e.g. for seminal economy search "jing" or "bindu" or "istimnāʾ", not "semen retention"; for female homoeroticism search "tribade" or "sahq", not "lesbian". The corpus is indexed via period translations that use tradition-internal terminology.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | — | Search within a specific book |
| exclude_languages | array | — | Exclude these languages, e.g. ["Latin", "French", "German", "English"] to surface non-Western sources. |
| language | string | — | Filter by a single original language |
| languages | array | — | Filter to any of these languages, e.g. ["Sanskrit", "Arabic", "Chinese"]. Use instead of language when targeting multiple traditions. |
| limit | number | — | Max results per page (default 20, max 50) |
| offset | number | — | Pagination offset (use with limit to page through total_matches; default 0) |
| query | string | yes | Search term — prefer single distinctive concepts ("harmony of the spheres", "active intellect") over long natural-language phrases. Multi-word queries match all terms (not phrase); wrap in "double qu… |
| year_from | number | — | — |
| year_to | number | — | — |
No output schema declared.
No examples provided.
search_within_book Search Within Book ~153
SEARCHES INSIDE ONE BOOK (requires book_id) — runs keyword AND scoped semantic search in parallel over that book's pages and merges them, so it handles both literal terms ("ouroboros") and conceptual queries ("the marriage of opposites"). PICK THIS once you have a candidate book and want every relevant page in it. → To find the book first, use search_library or search_concept (then pass its book_id here). Faster than a global re-search because it's scoped to one book's 100-500 pages. Returns OCR and translation snippets with page numbers, ready to cite.
| Name | Type | Req | Description |
|---|---|---|---|
| book_id | string | yes | The book ID to search within |
| query | string | yes | Search query |
No output schema declared.
No examples provided.
share_findings Share Findings ~197
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 (not an instant public page).
| Name | Type | Req | Description |
|---|---|---|---|
| citations | array | yes | Ordered list of supporting passages (1-50). Get book_id + page from get_quote / search_translations. |
| string | — | — | |
| name | string | — | — |
| summary | string | — | Optional prose summarizing the argument (max 5000 chars) |
| title | string | yes | Title of the dossier / thesis (2-300 chars) |
No output schema declared.
No examples provided.
submit_feedback Submit Feedback ~52
Submit feedback, bug reports, or feature requests to the Source Library team.
| Name | Type | Req | Description |
|---|---|---|---|
| string | — | — | |
| message | string | yes | Your feedback (2-5000 chars) |
| name | string | — | — |
No output schema declared.
No examples provided.