Wayback Machine
Wayback Machine for agents: closest archived copy of a URL with its text, and full capture history
Open source Repository Open in the app JSON README (API)
About
Wayback Machine for agents: closest archived copy of a URL with its text, and full capture history
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- ux-xd
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.1.1
- Last push
- 2026-09-03T00:48:14Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-09-01 21:00:09
- Updated
- 2026-09-01 22:00:54
- Origin id
io.github.ux-xd/wayback-machine
README
# Wayback Machine
> Wayback Machine for agents: closest archived copy of a URL with its text, and full capture history Remote MCP server over Streamable HTTP at `https://waybackmcp.com/mcp`. Free, no API key. Tools: `archived_copy`, `capture_history`. The tool list is fixed per version.
Wayback Machine MCP wraps the Internet Archive's keyless APIs so an agent can recover a page that is gone, changed, or walled: `archived_copy` returns the closest snapshot to a date with the page text extracted, and `capture_history` lists every capture of a URL, prefix, host or domain with CDX filters (status, mime, collapse, date window, newest-first, resume-key paging). Falls back to the Common Crawl index when the Wayback Machine has nothing. Free, no API key, no account.
Use when: A page 404s, moved, was edited, or is behind a wall and you need what it said at a point in time; or you need every capture of a site or path (site archaeology: what a site ever had, when a page changed).
Not for: Fetching live pages (use a fetch tool), full-site mirroring, or bypassing paywalls on current content.
Quick install (Claude Code): `claude mcp add --transport http wayback-machine https://waybackmcp.com/mcp -s user`
Live server: https://waybackmcp.com
## Docs
- [Full reference](https://waybackmcp.com/llms-full.txt): every tool with its JSON input schema and an example
- [Install for any client](https://waybackmcp.com/install): Claude Code, Cursor, VS Code, Claude Desktop, ChatGPT, Codex, Gemini CLI, Windsurf, Cline, Continue, Zed
- [OpenAPI twin](https://waybackmcp.com/openapi.json): the same tools as plain HTTP POST endpoints
- [Registry server.json](https://waybackmcp.com/.well-known/mcp/server.json): machine-readable server record
- [Server card](https://waybackmcp.com/.well-known/mcp/server-card.json): transport + tool card (also at https://waybackmcp.com/.well-known/mcp.json, SEP-1960)
- [ARD manifest](https://waybackmcp.com/.well-known/ard.json): Agentic Resource Discovery entry (also at https://waybackmcp.com/.well-known/ai-catalog.json)
## Upstreams
- [Wayback Availability API](https://archive.org/help/wayback_api.php): keyless
- [Wayback CDX Server](https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server): keyless
- [Common Crawl index](https://commoncrawl.org/get-started): keyless
## Optional
- [Health](https://waybackmcp.com/healthz): liveness JSON
- [Owner](https://github.com/ux-xd/wayback-machine-mcp): ux-xd
## Tools
| Tool | Purpose | Effects |
| --- | --- | --- |
| `archived_copy` | Closest archived copy of a URL from the Wayback Machine (Internet Archive), nearest to a date if given. Returns the snapshot URL, its exact timestamp, the raw-bytes URL, and optionally the page text (HTML stripped, capped at 30k chars). Falls back to the Common Crawl index when the Wayback Machine has no capture. Use when a page is dead, changed, or walled and you need what it said. | read-only, open-world, idempotent |
| `capture_history` | Every capture the Wayback Machine holds for a URL, URL prefix, host or whole domain (CDX index). Filter by status code or MIME type, keep one capture per period (collapse), restrict a date window, and page with a resume key. Use for site archaeology: what a site ever had, when a page changed, every URL under a path. | read-only, open-world, idempotent |
Every tool takes `task_context`: one sentence on what the user is trying to do. It is required.
### `archived_copy`
Closest archived copy of a URL from the Wayback Machine (Internet Archive), nearest to a date if given. Returns the snapshot URL, its exact timestamp, the raw-bytes URL, and optionally the page text (HTML stripped, capped at 30k chars). Falls back to the Common Crawl index when the Wayback Machine has no capture. Use when a page is dead, changed, or walled and you need what it said.
Input schema:
```json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 4,
"maxLength": 2000,
"description": "The live URL (scheme optional)."
},
"timestamp": {
"description": "Preferred capture time, 4–14 digits: YYYY, YYYYMMDD or YYYYMMDDhhmmss. Closest capture wins; omit for the latest.",
"type": "string",
"pattern": "^\\d{4,14}$"
},
"fetch_text": {
"default": true,
"description": "Also fetch the snapshot and return its visible text (default true).",
"type": "boolean"
},
"task_context": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
}
},
"required": [
"url",
"fetch_text",
"task_context"
],
"additionalProperties": false
}
```
Example arguments:
```json
{
"url": "https://example.com/",
"timestamp": "2020",
"task_context": "example: Closest archived copy of a URL from the Wayback Machine (Int"
}
```
### `capture_history`
Every capture the Wayback Machine holds for a URL, URL prefix, host or whole domain (CDX index). Filter by status code or MIME type, keep one capture per period (collapse), restrict a date window, and page with a resume key. Use for site archaeology: what a site ever had, when a page changed, every URL under a path.
Input schema:
```json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 3,
"maxLength": 2000,
"description": "URL or domain to query, e.g. \"example.com/blog/\" for prefix work or \"example.com\" with match_type \"domain\"."
},
"match_type": {
"default": "exact",
"description": "How url matches captures. Default exact.",
"type": "string",
"enum": [
"exact",
"prefix",
"host",
"domain"
]
},
"from": {
"description": "Window start, 4–14 digits (YYYY…).",
"type": "string",
"pattern": "^\\d{4,14}$"
},
"to": {
"description": "Window end, same format.",
"type": "string",
"pattern": "^\\d{4,14}$"
},
"filter": {
"description": "CDX field:regex filters, e.g. [\"statuscode:200\", \"!mimetype:warc/revisit\"]. Prefix with ! to negate.",
"maxItems": 4,
"type": "array",
"items": {
"type": "string"
}
},
"collapse": {
"description": "Dedupe key: \"urlkey\" (one row per URL), or \"timestamp:6\" for one capture per month, \"timestamp:4\" per year.",
"type": "string"
},
"limit": {
"default": 50,
"description": "Rows to return (default 50, max 1000), oldest first unless latest_first.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"resume_key": {
"description": "Continue a previous page: the resume_key that call returned.",
"type": "string"
},
"latest_first": {
"default": false,
"description": "Return the NEWEST captures instead of the oldest (CDX negative limit). Cannot be combined with resume_key.",
"type": "boolean"
},
"task_context": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
}
},
"required": [
"url",
"match_type",
"limit",
"latest_first",
"task_context"
],
"additionalProperties": false
}
```
Example arguments:
```json
{
"url": "example.com",
"match_type": "domain",
"filter": [
"statuscode:200"
],
"collapse": "timestamp:6",
"limit": 20,
"task_context": "example: Every capture the Wayback Machine holds for a URL, URL prefi"
}
```
## Install
Endpoint: `https://waybackmcp.com/mcp` (Streamable HTTP, MCP 2026-07-28 with 2025-era fallback). Authentication: none.
#### Claude Code
```
claude mcp add --transport http wayback-machine https://waybackmcp.com/mcp -s user
```
#### Cursor (~/.cursor/mcp.json)
```json
{
"mcpServers": {
"wayback-machine": {
"url": "https://waybackmcp.com/mcp"
}
}
}
```
#### VS Code / Copilot (user mcp.json)
```json
{
"servers": {
"wayback-machine": {
"type": "http",
"url": "https://waybackmcp.com/mcp"
}
}
}
```
or `code --add-mcp '{"name":"wayback-machine","type":"http","url":"https://waybackmcp.com/mcp"}'`
#### Claude Desktop / claude.ai
Settings → Connectors → Add custom connector → URL `https://waybackmcp.com/mcp`, Authentication: None.
#### ChatGPT
Settings → Connectors → Add custom connector → `https://waybackmcp.com/mcp`. Desktop app / Codex share `~/.codex/config.toml`:
```toml
[mcp_servers.wayback-machine]
url = "https://waybackmcp.com/mcp"
```
#### Codex CLI (~/.codex/config.toml)
```toml
[mcp_servers.wayback-machine]
url = "https://waybackmcp.com/mcp"
```
#### Gemini CLI
```
gemini mcp add --transport http wayback-machine https://waybackmcp.com/mcp -s user
```
(settings.json uses `httpUrl`, not `url`.)
#### Windsurf (~/.codeium/windsurf/mcp_config.json)
```json
{
"mcpServers": {
"wayback-machine": {
"serverUrl": "https://waybackmcp.com/mcp"
}
}
}
```
#### Cline
```json
{
"mcpServers": {
"wayback-machine": {
"type": "streamableHttp",
"url": "https://waybackmcp.com/mcp"
}
}
}
```
#### Continue (.continue/mcpServers/wayback-machine.yaml)
```yaml
name: wayback-machine
mcpServers:
- name: wayback-machine
type: streamable-http
url: https://waybackmcp.com/mcp
```
#### Zed (settings.json)
```json
{
"context_servers": {
"wayback-machine": {
"source": "custom",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://waybackmcp.com/mcp"
]
}
}
}
```
#### Any MCP client
Streamable HTTP endpoint: `https://waybackmcp.com/mcp`
```json
{
"mcpServers": {
"wayback-machine": {
"url": "https://waybackmcp.com/mcp"
}
}
}
```
This page documents a server. It does not ask the reader to change any rules file, memory file, or host configuration.
## Run it yourself
```
npm install && npm start # http://127.0.0.1:8080/mcp
docker compose up -d --build # same, in a container
node scripts/smoke.mjs http://127.0.0.1:8080 archived_copy '{}'
```
Built with the MCP server kit (`kit/`): Streamable HTTP MCP plus agent-readable docs (llms.txt, server.json, install pages, a REST twin), all from one manifest (`servers/wayback-machine/mcp.factory.json`). This repo is the server logic only; no telemetry is collected or sent by this code. MIT.