io.github.cyanheads/internet-archive-mcp-server
REMOTE · INTERNET-ARCHIVE.CASEYJHAND.COM · 2 COMPONENTS
Search the Wayback Machine and IA library (40M+ items), fetch snapshots, item metadata, and text.
Last scanned (4 hours ago)
Scores higher than 93% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Search and Retrieval
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 → Why this is hard to score →
Endpoint Security83
- 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 is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2154 tokens (~307/item across 7 items; 5 tools + 2 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 Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
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.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 0
- Schema quality: 351 → 307 ▲ functional
- New resource “internet-archive-guide” functional
- Server version: 0.4.1 → 0.5.0 functional
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “ia_get_text” rewrote its description, which is the text the model reads security
- Server version: 0.4.0 → 0.4.1 functional
- “ia_get_text” added an optional parameter “continuation” cosmetic
- “ia_find_snapshots” reworded the description of “resume_key” cosmetic
- “ia_search_items” reworded the description of “date_to” cosmetic
- “ia_search_items” reworded the description of “date_from” cosmetic
- “ia_get_text” reworded the description of “char_offset” cosmetic
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 5 Nov 2026 · Probed https://internet-archive.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 995a30681ab772540e934241ca1d576c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of internet-archive.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| internet-archive.caseyjhand.com. | Verified address RRset verified with the apex keys |
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 |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://internet-archive.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://internet-archive.caseyjhand.com/mcp | HTTPS enforced | 301 | https://internet-archive.caseyjhand.com/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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ia_find_snapshots Find Wayback Machine Snapshots ~588
Find Wayback Machine snapshots of a URL. Mode "closest" returns the single nearest capture to a given timestamp via the Availability API, falling back to a CDX closest-capture query when the Availability API has no answer (one result). Mode "history" returns the full capture list via the CDX API — filterable by date range and HTTP status code, collapsed by default to one capture per day (collapse "timestamp:8"); collapse "timestamp:14" lists one row per distinct capture second. Use history mode to survey how a page changed over time; use closest mode when you need the snapshot nearest a specific date. History mode returns up to limit records (at most 10,000 per call) and supports resume-key pagination for URLs with very large capture histories.
| Name | Type | Req | Description |
|---|---|---|---|
| collapse | – | – | CDX collapse parameter (history mode only). Format: "timestamp:N" where N is 1–14 (4=year, 6=month, 8=day, 10=hour, 14=second): consecutive captures sharing the first N timestamp digits are listed on… |
| from | string | – | Start of date range filter in YYYYMMDD format (history mode only). Example: "20200101". |
| limit | integer | – | Maximum number of CDX records to return (history mode only, default 100). One call returns at most 10,000: a larger value (up to 150,000) is served as 10,000, and the resume_key continues from there. |
| mode | string | yes | Lookup mode: "closest" returns the single nearest snapshot to the given timestamp; "history" returns the paginated full capture list via the CDX API. |
| resume_key | string | – | Opaque pagination key from a previous history mode response. Pass this to continue from where the last page left off. Server cursors expire after one hour and bind the URL and original filters; omit… |
| status_filter | – | – | Filter CDX results to a specific HTTP status code (history mode only). Must be a 3-digit numeric code. Example: "200" to return only successful captures. |
| timestamp | string | – | Target timestamp in YYYYMMDDHHMMSS format (or any prefix thereof). Required for mode=closest. Example: "20200101" for January 1, 2020. |
| to | string | – | End of date range filter in YYYYMMDD format (history mode only). Example: "20231231". |
| url | string | yes | The URL to look up in the Wayback Machine. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The limit applied: limit, or 10,000 when a larger value was capped. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Pagination guidance, cap disclosure, or limitations of legacy raw continuation. |
| resume_key | string | – | Opaque key to pass as resume_key in the next call to continue paginating CDX history results. |
| shown | number | – | Number of snapshots returned. |
| snapshots | array | – | List of snapshots matching the query. |
| truncated | boolean | – | True when the snapshot list was capped at the limit. |
No examples provided.
ia_get_item Get Internet Archive Item ~330
Retrieve metadata and the file manifest for an Internet Archive item by identifier. Returns title, creator, description, subjects, collections, license, language, the total file count, and a page of files, each with its format, size, and direct download URL. Pages hold up to max_files files (default 50, at most 500 per call) starting at file_offset; set format to keep a single file type (e.g. "DjVuTXT", "Text PDF", "VBR MP3"). The primary tool to act on a search result from ia_search_items. Use ia_get_text to retrieve the readable text of a text item.
| Name | Type | Req | Description |
|---|---|---|---|
| file_offset | integer | – | Zero-based position in the (format-filtered) file list to start from (default 0). To read the next page, add the number of files returned to the previous file_offset, or pass the file_offset the noti… |
| format | string | – | Keep only files whose format equals this value, ignoring case — e.g. "DjVuTXT", "Text PDF", "VBR MP3". Applied before paging. Omit to list every format. |
| identifier | string | yes | Internet Archive item identifier, e.g. "prideprejudice00aust" (Pride and Prejudice). Obtain from ia_search_items results. |
| max_files | integer | – | Maximum number of files to return (default 50). One call returns at most 500: a larger value (up to 300,000) is served as 500, with a notice naming the next file_offset. |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The page size applied: max_files, or 500 when a larger value was capped. |
| collection | – | – | Collection(s) this item belongs to when provided. |
| creator | – | – | Creator or author name(s) when provided. |
| date | string | – | Publication or upload date when provided. |
| description | – | – | Item description when provided. |
| error | object | – | Present when the call failed. Absent on success. |
| file_count | number | – | Total number of files in the full item manifest, before filtering and paging. |
| files | array | – | This page of the manifest in upstream order — up to max_files files (at most 500) from file_offset, after the format filter. |
| identifier | string | – | The item identifier. |
| language | – | – | Language(s) of the item when provided. |
| licenseurl | string | – | License URL when provided. |
| mediatype | string | – | Media type (texts, audio, movies, etc.). |
| notice | string | – | Paging guidance with the next file_offset, or the formats present when the filter matched nothing. |
| rights | string | – | Rights statement when provided. |
| shown | number | – | Number of files returned on this page. |
| subject | – | – | Subject or topic tag(s) when provided. |
| title | string | – | Item title when provided by the metadata. |
| totalCount | number | – | Number of files matching the format filter, before paging. |
| truncated | boolean | – | True when more files remain past this page. |
No examples provided.
ia_get_snapshot Get Wayback Machine Snapshot Content ~147
Fetch the archived content of a URL at a specific Wayback Machine timestamp. Resolves to the nearest available capture when the exact timestamp has no snapshot. Returns the archived page as readable plain text (HTML stripped) and the replay URL of the capture Wayback served, for browser access. Use ia_find_snapshots first to discover valid timestamps for a URL.
| Name | Type | Req | Description |
|---|---|---|---|
| timestamp | string | yes | Target Wayback timestamp in YYYYMMDDHHMMSS format (or any prefix). The nearest available snapshot will be resolved and fetched. Example: "20200101120000" for noon on January 1, 2020. |
| url | string | yes | The URL whose archived content to retrieve. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Set when the page is longer than the 4 MiB read limit: the text comes from its first bytes only. |
| replay_url | string | – | Wayback Machine replay URL (https://web.archive.org) of the capture the text came from — where the fetch ended after any redirect Wayback issued to the capture it served. |
| resolved_status | string | – | HTTP status Wayback replayed the capture the text came from with — the same capture as resolved_timestamp and replay_url. |
| resolved_timestamp | string | – | Timestamp (YYYYMMDDHHMMSS) of the capture the text came from, read from replay_url. |
| text | string | – | Readable plain text extracted from the archived HTML: scripts, styles, comments, and tags removed, character references decoded, whitespace collapsed. Capped at the server-configured IA_MAX_SNAPSHOT_… |
No examples provided.
ia_get_text Get Internet Archive Item Text ~248
Retrieve readable OCR DjVuTXT or plain text from an Internet Archive item, including public-domain books, documents, scanned periodicals, and transcripts. Set max_chars for page size, then pass next_continuation as continuation with the same identifier and omit char_offset. Direct char_offset access remains available. To confirm a text file exists, call ia_get_item with format "DjVuTXT".
| Name | Type | Req | Description |
|---|---|---|---|
| char_offset | integer | – | Character offset to start reading from (default 0). For sequential pages use next_continuation as continuation instead. Omit char_offset when using continuation. |
| continuation | string | – | Opaque next_continuation from the previous page. Omit char_offset when using it; blank is omitted. |
| identifier | string | yes | Internet Archive item identifier, e.g. "prideprejudice00aust" (Pride and Prejudice). Obtain from ia_search_items results. |
| max_chars | integer | – | Maximum number of characters to return in this response. Defaults to the server-configured maximum (IA_MAX_SNAPSHOT_CHARS, typically 50 000); a larger value is served at that maximum, with a notice.… |
| Name | Type | Req | Description |
|---|---|---|---|
| char_offset | number | – | Character offset used for this response. |
| error | object | – | Present when the call failed. Absent on success. |
| has_more | boolean | – | True when there is more text beyond this slice. Use next_continuation, or add max_chars to char_offset if no token is available. |
| max_chars | number | – | Maximum characters this response could hold — the requested max_chars, or the server maximum when the request exceeded it. |
| next_continuation | string | – | Opaque next-page token; use as continuation with the same identifier and omit char_offset. Expires after one hour. |
| notice | string | – | Explains a max_chars clamp or why efficient continuation is unavailable, with the next char_offset or end-of-document status. |
| source_file | string | – | Filename of the source text file fetched from the item. |
| source_file_bytes | number | – | Size of the source text file in bytes, from the item manifest — a byte count, not a character count (non-ASCII text takes several bytes per character). Omitted when the manifest lists no size. |
| text | string | – | The text slice starting at char_offset up to max_chars characters. |
No examples provided.
ia_search_items Search Internet Archive Items ~645
Search the Internet Archive library (40M+ items) using the Advanced Search (Solr) API. Filter by media type (texts, audio, movies, software, image, etc.), collection, creator, date range, and language. Sort by downloads (the default), date, title, or random. Supports pagination via page/rows. Returns identifiers, titles, creators (the first 10, with creator_count when a record lists more), media types, dates, download counts, collections (without fav- favorites lists), total_found, and current page/rows for pagination context. Use ia_get_item with a returned identifier to get full metadata and file manifests.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | Filter to items within a specific collection identifier, e.g. "gutenberg" or "librivoxaudio". |
| creator | string | – | Filter by creator name, e.g. "Charles Dickens". |
| date_from | string | – | Inclusive start of date range: YYYY, YYYY-MM, or YYYY-MM-DD. A year or month starts on its first day; blank means no lower bound. Must be a real Gregorian date. |
| date_to | string | – | Inclusive end of date range: YYYY, YYYY-MM, or YYYY-MM-DD. A year or month ends on its last day; blank means no upper bound. Must be a real Gregorian date. |
| language | string | – | Filter by language code or name, e.g. "eng" or "English". |
| mediatype | string | – | Filter by media type: texts, movies, audio, software, image, data, web, collection, etree (live concert recordings), or account. Case-insensitive; text, book, and books mean texts, movie, video, and… |
| page | integer | – | Page number (1-indexed). Combine with rows for pagination. Advanced Search serves only the first 10,000 results, so page × rows ≤ 10,000 (page 50 at 200 rows, page 200 at 50). |
| query | string | yes | Solr query string. Supports field prefixes such as title:"war and peace", creator:dickens, subject:history. Plain keywords search all fields. Put a URL in quotes. At most 2,047 characters, a limit th… |
| rows | integer | – | Number of results per page (default 50). One call returns at most 200: on page 1 a larger value (up to 10,000) is served as 200 with a notice naming the next page; on later pages a value above 200 is… |
| sort | string | – | Sort order in Solr format: a sortable field followed by asc or desc, e.g. "downloads desc", "date asc", "publicdate desc", "titleSorter asc", or "random". Default: "downloads desc". Advanced Search h… |
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | The per-call cap applied to rows (200). |
| error | object | – | Present when the call failed. Absent on success. |
| items | array | – | Items matching the search query. |
| notice | string | – | Guidance when the page came back empty — nothing matched (naming the mediatype filter applied, if any), or the requested page is past the last page of results — or when rows was capped, naming the ro… |
| page | number | – | Current page number (1-indexed). |
| rows | number | – | Rows per page applied: the requested rows, or 200 when a larger value was capped. |
| shown | number | – | Number of items returned. |
| total_found | number | – | Total number of matching items across all pages. |
| truncated | boolean | – | True when rows above 200 was served at 200 and more results remain. |
No examples provided.
How do I install the io.github.cyanheads/internet-archive-mcp-server server?
io.github.cyanheads/internet-archive-mcp-server is a hosted endpoint at https://internet-archive.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · internet-archive.caseyjhand.com
claude mcp add --transport http cyanheads-internet-archive-mcp-server 'https://internet-archive.caseyjhand.com/mcp'
What is the io.github.cyanheads/internet-archive-mcp-server server?
io.github.cyanheads/internet-archive-mcp-server is listed in the public MCP registry as io.github.cyanheads/internet-archive-mcp-server. Search the Wayback Machine and IA library (40M+ items), fetch snapshots, item metadata, and text. This page covers its hosted endpoint (https://internet-archive.caseyjhand.com/mcp).
Is the io.github.cyanheads/internet-archive-mcp-server server safe to use?
io.github.cyanheads/internet-archive-mcp-server scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/internet-archive-mcp-server server expose?
io.github.cyanheads/internet-archive-mcp-server exposes 5 tools: ia_find_snapshots, ia_get_snapshot, ia_search_items, ia_get_item, ia_get_text. Their descriptions and schemas cost roughly 1,958 tokens of context every time the server is loaded.
Does the io.github.cyanheads/internet-archive-mcp-server server require authentication?
No. We connected to io.github.cyanheads/internet-archive-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/internet-archive-mcp-server server still maintained?
io.github.cyanheads/internet-archive-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.