Search the Wayback Machine and IA library (40M+ items), fetch snapshots, item metadata, and text.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The URL to look up in the Wayback Machine.
Lookup mode: "closest" returns the single nearest snapshot to the given timestamp; "history" returns the paginated full capture list via the CDX API.
End of date range filter in YYYYMMDD format (history mode only). Example: "20231231".
Start of date range filter in YYYYMMDD format (history mode only). Example: "20200101".
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.
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 once. Omitted or blank, it is "timestamp:8", one capture per day. Pass "timestamp:14" for one row per distinct capture second.
Target timestamp in YYYYMMDDHHMMSS format (or any prefix thereof). Required for mode=closest. Example: "20200101" for January 1, 2020.
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 filters on continuation or repeat their original values. Page size may change. Wildcard and legacy raw continuations can omit collapsed captures.
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.
Tool list last changed Oct 25, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| to | string | End of date range filter in YYYYMMDD format (history mode only). Example: "20231231". |
| url* | string | The URL to look up in the Wayback Machine. |
| from | string | Start of date range filter in YYYYMMDD format (history mode only). Example: "20200101". |
| mode* | string | Lookup mode: "closest" returns the single nearest snapshot to the given timestamp; "history" returns the paginated full capture list via the CDX API. |
| 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. |
| collapse | any | 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 once. Omitted or blank, it is "timestamp:8", one capture per day. Pass "timestamp:14" for one row per distinct capture second. |
| timestamp | string | Target timestamp in YYYYMMDDHHMMSS format (or any prefix thereof). Required for mode=closest. Example: "20200101" for January 1, 2020. |
| 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 filters on continuation or repeat their original values. Page size may change. Wildcard and legacy raw continuations can omit collapsed captures. |
| status_filter | any | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"mode"
],
"properties": {
"to": {
"type": "string",
"description": "End of date range filter in YYYYMMDD format (history mode only). Example: \"20231231\"."
},
"url": {
"type": "string",
"minLength": 1,
"description": "The URL to look up in the Wayback Machine."
},
"from": {
"type": "string",
"description": "Start of date range filter in YYYYMMDD format (history mode only). Example: \"20200101\"."
},
"mode": {
"enum": [
"closest",
"history"
],
"type": "string",
"description": "Lookup mode: \"closest\" returns the single nearest snapshot to the given timestamp; \"history\" returns the paginated full capture list via the CDX API."
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 150000,
"minimum": 1,
"description": "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."
},
"collapse": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"type": "string",
"pattern": "^timestamp:\\d{1,2}$",
"description": "Collapse precision string."
}
],
"description": "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 once. Omitted or blank, it is \"timestamp:8\", one capture per day. Pass \"timestamp:14\" for one row per distinct capture second."
},
"timestamp": {
"type": "string",
"description": "Target timestamp in YYYYMMDDHHMMSS format (or any prefix thereof). Required for mode=closest. Example: \"20200101\" for January 1, 2020."
},
"resume_key": {
"type": "string",
"description": "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 filters on continuation or repeat their original values. Page size may change. Wildcard and legacy raw continuations can omit collapsed captures."
},
"status_filter": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"type": "string",
"pattern": "^\\d{3}$",
"description": "3-digit HTTP status code."
}
],
"description": "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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| 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. |
| 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. |
| identifier* | string | Internet Archive item identifier, e.g. "prideprejudice00aust" (Pride and Prejudice). Obtain from ia_search_items results. |
| 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 notice names. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"identifier"
],
"properties": {
"format": {
"type": "string",
"description": "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."
},
"max_files": {
"type": "integer",
"default": 50,
"maximum": 300000,
"minimum": 1,
"description": "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."
},
"identifier": {
"type": "string",
"minLength": 1,
"description": "Internet Archive item identifier, e.g. \"prideprejudice00aust\" (Pride and Prejudice). Obtain from ia_search_items results."
},
"file_offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "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 notice names."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The URL whose archived content to retrieve. |
| timestamp* | string | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"timestamp"
],
"properties": {
"url": {
"type": "string",
"minLength": 1,
"description": "The URL whose archived content to retrieve."
},
"timestamp": {
"type": "string",
"description": "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."
}
},
"additionalProperties": false
}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".
| Argument | Type | Description |
|---|---|---|
| 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. Lower values reduce token usage. |
| identifier* | string | Internet Archive item identifier, e.g. "prideprejudice00aust" (Pride and Prejudice). Obtain from ia_search_items results. |
| 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"identifier"
],
"properties": {
"max_chars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "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. Lower values reduce token usage."
},
"identifier": {
"type": "string",
"minLength": 1,
"description": "Internet Archive item identifier, e.g. \"prideprejudice00aust\" (Pride and Prejudice). Obtain from ia_search_items results."
},
"char_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Character offset to start reading from (default 0). For sequential pages use next_continuation as continuation instead. Omit char_offset when using continuation."
},
"continuation": {
"type": "string",
"description": "Opaque next_continuation from the previous page. Omit char_offset when using it; blank is omitted."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| 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). |
| 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 rejected. |
| 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 has no relevance sort. Except under random, results tied under the sort are ordered by identifier, so consecutive pages neither repeat nor skip an item. |
| query* | string | 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 the filters below also count toward. |
| creator | string | Filter by creator name, e.g. "Charles Dickens". |
| 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". |
| 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. |
| 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 videos mean movies, images means image, and collections means collection. Any other value is rejected. |
| collection | string | Filter to items within a specific collection identifier, e.g. "gutenberg" or "librivoxaudio". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "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)."
},
"rows": {
"type": "integer",
"default": 50,
"maximum": 10000,
"minimum": 1,
"description": "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 rejected."
},
"sort": {
"type": "string",
"description": "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 has no relevance sort. Except under random, results tied under the sort are ordered by identifier, so consecutive pages neither repeat nor skip an item."
},
"query": {
"type": "string",
"maxLength": 2047,
"minLength": 1,
"description": "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 the filters below also count toward."
},
"creator": {
"type": "string",
"description": "Filter by creator name, e.g. \"Charles Dickens\"."
},
"date_to": {
"type": "string",
"description": "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": {
"type": "string",
"description": "Filter by language code or name, e.g. \"eng\" or \"English\"."
},
"date_from": {
"type": "string",
"description": "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."
},
"mediatype": {
"type": "string",
"description": "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 videos mean movies, images means image, and collections means collection. Any other value is rejected."
},
"collection": {
"type": "string",
"description": "Filter to items within a specific collection identifier, e.g. \"gutenberg\" or \"librivoxaudio\"."
}
},
"additionalProperties": false
}