# io.github.cyanheads/internet-archive-mcp-server (remote · internet-archive.caseyjhand.com)

Search the Wayback Machine and IA library (40M+ items), fetch snapshots, item metadata, and text.

- Trust score: 86/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `internet-archive.caseyjhand.com`: 86/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive.md), [page](https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive)
- npm · `@cyanheads/internet-archive-mcp-server`: 39/100, [markdown](https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/cyanheads-internet-archive-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/cyanheads-internet-archive-mcp-server)

## Channel facts

- Endpoint: `https://internet-archive.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

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

### Claude

```bash
claude mcp add --transport http cyanheads-internet-archive-mcp-server 'https://internet-archive.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-internet-archive-mcp-server": {
      "url": "https://internet-archive.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-internet-archive-mcp-server": {
      "type": "http",
      "url": "https://internet-archive.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-internet-archive-mcp-server]
url = "https://internet-archive.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-internet-archive-mcp-server": {
      "type": "remote",
      "url": "https://internet-archive.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-internet-archive-mcp-server --url 'https://internet-archive.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-internet-archive-mcp-server:
    url: "https://internet-archive.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-internet-archive-mcp-server": {
      "Transport": "http",
      "Url": "https://internet-archive.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-internet-archive-mcp-server -t streamable-http -u 'https://internet-archive.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-internet-archive-mcp-server": {
      "type": "http",
      "url": "https://internet-archive.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 86, +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.

### 2026-11-02 (score 85, +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.

### 2026-10-31 (score 84, +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.

### 2026-10-29 (score 83, +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.

### 2026-10-28 (score 82, 0)

- [functional improvement] Schema quality: 351 → 307
- [functional] New resource “internet-archive-guide”
- [functional] Server version: 0.4.1 → 0.5.0

### 2026-10-27 (score 82, +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.

### 2026-10-25 (score 81, +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.

### 2026-10-24 (score 80, 0)

- [security] 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
- [functional] Server version: 0.4.0 → 0.4.1
- [cosmetic] “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”

## MCP tools (5)

### `ia_find_snapshots` (~588 tokens)

Find Wayback Machine Snapshots

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.

Input parameters:

- `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, required): 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, required): The URL to look up in the Wayback Machine.

Output parameters:

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

### `ia_get_snapshot` (~147 tokens)

Get Wayback Machine Snapshot Content

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.

Input parameters:

- `timestamp` (string, required): 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, required): The URL whose archived content to retrieve.

Output parameters:

- `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_…

### `ia_search_items` (~645 tokens)

Search Internet Archive Items

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.

Input parameters:

- `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, required): 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…

Output parameters:

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

### `ia_get_item` (~330 tokens)

Get Internet Archive Item

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.

Input parameters:

- `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, required): 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.

Output parameters:

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

### `ia_get_text` (~248 tokens)

Get Internet Archive Item Text

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

Input parameters:

- `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, required): 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.…

Output parameters:

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

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive#diagnostics

## Score history

- 2026-11-05: 86
- 2026-11-04: 85
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 84
- 2026-10-31: 84
- 2026-10-30: 83
- 2026-10-29: 83
- 2026-10-28: 82
- 2026-10-27: 82
- 2026-10-26: 81
- 2026-10-25: 81
- 2026-10-24: 80
- 2026-10-23: 80
- 2026-10-22: 80
- 2026-10-21: 79
- 2026-10-20: 79
- 2026-10-19: 78
- 2026-10-18: 78
- 2026-10-17: 77
- 2026-10-16: 77
- 2026-10-15: 76
- 2026-10-14: 76
- 2026-10-13: 75
- 2026-10-12: 75

## Common questions

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

### What did VerifyMCP test on the io.github.cyanheads/internet-archive-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/internet-archive-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://internet-archive.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/internet-archive-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-internet-archive-mcp-server/internet-archive
