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

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

## 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): agie

## 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 / Cosmos (~/.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.

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