Skip to main content
Glama
1llum1n4t1s

Retroweb MCP

by 1llum1n4t1s

@kagayoi/retroweb-mcp

npm version

90 年代〜2000 年代前半の個人サイトを Web アーカイブから発掘するための MCP サーバ。 日本語圏と海外(英語圏・欧州・豪州)の双方に対応する。

Google をはじめとする現行の検索エンジンは、この年代の個人サイトをほとんど索引していない。 本サーバは検索を強化するのではなく、当時の発見経路(ディレクトリ・リンク集・Web リング)を アーカイブ上で再生することで、検索エンジンに一切載っていないページへ到達する。

何ができるか(実測)

discover_sites にジオシティーズのエリアを 1 つ渡すと、148 件の個人サイトが出る。 実際に発掘できた例:

サイト

内容

陽光の円舞曲

アンジェリーク二次創作。キリ番 12345、since 1999

‐せんちめんたる‐

詩サイト。"Sorry! This page is Japanese only!"、3000HIT

大濠高校模型同好会

高校の同好会。"Internet Explorer、800*600以上推奨"

いずれも現行の検索エンジンでは到達できない。さらに各サイトの外部リンクを辿ると、 village.infoweb.ne.jp/~sinobi/ www.sol.dti.ne.jp/~m-otsuka/ といった別ホストへ芋づる式に広がる。

海外も同じ経路が使える。discover_sites(url="www.geocities.com/SoHo", from="1997", to="2001")163 サイトSoHo/Exhibit/5905/ SoHo/Square/1549/ など)が出る。

Related MCP server: MCP Wayback Machine Server

ツール

ツール

用途

discover_sites

主力。ホスト配下に存在した個人サイトをユーザー単位で列挙する

wayback_cdx_search

アーカイブ済み URL をファイル単位で列挙する。広い指定は分割走査し coverage を返す

wayback_snapshot

指定時点に最も近いスナップショットを解決する

wayback_fetch_page

保存済みページ本文を取得(Shift_JIS / EUC-JP / Latin-1 自動判別)

wayback_outlinks

1 ページから外部リンクを抽出する低レベル操作

crawl_link_neighborhood

芋づる発掘の主力。起点から最大 3 段を予算付きで自動探索する

legacy_hosts

当時のホスティング・ISP・ディレクトリの辞書(94 件 / region で日本・海外を切替)

build_retro_queries

site: 絞り込みと当時の言い回しによる検索クエリ生成(日英)

wiby_search

海外専用。旧式ページだけを索引する検索エンジンの全文検索(後述)

retro_search_strategy

探索手順そのものを返す。迷ったら最初に呼ぶ(region で分岐)

warp_search_url

国立国会図書館 WARP の検索 URL 生成(取得は不可、後述)

marginalia_search_url

Marginalia の検索 URL 生成(英語専用、後述)

検索に出ない周辺サイトを自動で掘る

リンク集・人力ディレクトリ・Web リングの URL が 1 件でも分かれば、 crawl_link_neighborhood が最寄りの Wayback スナップショットを解決し、リンクを幅優先で辿る。

{
  "seeds": ["http://www.example.ne.jp/~someone/links.html"],
  "timestamp": "1999",
  "maxDepth": 2,
  "pageBudget": 8,
  "keywords": ["自作CG", "イラスト"]
}

結果の sites にはサイト根、発見元ページ、アンカーテキスト、起点からの route、 確認できたスナップショットが入る。score のキーワード判定は URL とアンカーテキストだけで、 本文検索や現行検索エンジンの非掲載判定ではない。coverage.truncatedtrue の場合は reasons を見て、上限を増やすか高得点の候補を次の seeds にして探索を分割する。

海外サイトの探索

日本語圏との違いは 3 点で、いずれもツール側が吸収している。

1. ホストと URL の階層が違う

日本語圏

海外

無料ホスティング

ジオシティーズ、isweb、FC2WEB

GeoCities 本家、Angelfire、Tripod、Xoom、FortuneCity、AOL

ISP スペース

@nifty、BIGLOBE、ベッコアメ

英 Demon / Virgin、独 T-Online、仏 Wanadoo / Multimania、蘭 XS4ALL

発見の入口

Yahoo!ディレクトリ、ReadMe!、日記才人

DMOZ、dir.yahoo.com、WebRing、RingSurf

ユーザー領域の畳み方も違う。日本版ジオシティーズが /<エリア>/<番地>/ の 2 階層なのに対し、 本家は /<Neighborhood>/<Suburb>/<番地>/ の 3 階層があり(実測: /Area51/Vault/1005/)、 Angelfire は /<地区コード>/<ユーザー>/ と中間ディレクトリを挟む。

discover_sites はこれを規則とデータの両面で処理する。番地形は規則で畳み、 規則で決まらないホストは同じ階層に何種類の子ディレクトリがぶら下がったかを数え、 閾値を超えたものを「地区」とみなして 1 段深く畳み直す (実測: www.angelfire.com/amiga/partyclub-vs/ のように個人単位へ割れる)。 ホスト名の辞書を持たなくても未知のホストで機能する。

2. 当時の言い回しが訳語では当たらない

build_retro_queries(region="intl") は英語圏の定型文へ切り替える。

日本語圏

海外

工事中

"Under Construction"

キリ番 / アクセスカウンター

"You are visitor number"

足跡帳

"Sign my guestbook"

Netscape Navigator 推奨

"Best viewed with Netscape" / "Netscape Now"

相互リンク募集

"Cool Links" / "webring"

除外する商業ドメインも地域で入れ替わる(Yahoo!ショッピング・楽天 ↔ eBay・Etsy・Pinterest)。

3. 海外にだけ全文検索の抜け道がある

wiby_search は、昔ながらの手打ちページだけを人手で索引している検索エンジン Wiby を叩く。 本サーバで唯一、内容から探せる経路(実測: amiga demoscene で 12 件)。

ただし索引対象は「今も生きている旧式ページ」であってアーカイブではないため、 消えたサイトを探すには wayback_* と併用する。日本語の索引はほぼ無く、英語専用。 1 リクエスト 12 件固定で、o= 等のオフセット指定は空ボディを返すためページングできない。

設計上の判断

動かないものは実装しない方針を取っている。以下は実 API を叩いて確認した結果。

対象

実測結果

判断

Wayback CDX

正常動作

主力に採用

Wayback CDX(ホスト全体の prefix 検索)

limit 付きの素のクエリは索引を端から舐めるため 60 秒で 504

ページ分割 API(showNumPages / page=)へ切り替え

Wayback Availability

レート制限時に 429 ではなく HTTP 200 + 空オブジェクトを返す

CDX へ自動フォールバック

現行検索の site: 絞り込み

当時のホストは索引から消えており、検索側が絞り込みを緩めて生きているショッピングサイトを返す(site:geocities.co.jp → Yahoo!ショッピング)

終了済みホストのみ使用+商業ドメインを -site: で除外

NDL WARP

結果は JS 描画で HTML に無し。/api/search は CloudFront が 403

スクレイプ断念、URL 生成のみ

Marginalia

公式に英語専用。サービス移行中で HTML 構造が不安定

スクレイプ断念、URL 生成のみ

Wiby

/json/?q= が JSON を返す。12 件固定で o= は空ボディ(ページング不可)、0 件は空配列

ツール化(海外向けの全文検索)

常に空を返すツールは、無いより有害なため作らない。

広い指定でも落とさない(CDX ページ分割 API)

wayback_cdx_search または discover_siteswww.geocities.co.jp のようなホスト名だけを渡すと、CDX は索引の 先頭から該当行を探し続け、Internet Archive 側の nginx が 60 秒で 504 を返す。 limit を下げても始点が変わらないので解決しない。

そこで総ブロック数を先に取りshowNumPages、実測 3.5 秒で 23001)、 page= を付けて 1 ブロックずつ読む。1 リクエストの処理量が索引 1 区画に限定されるため、 対象がどれだけ広くても 1〜2 秒で返る。

ブロックは URL キー順に並ぶので、先頭から順に読むと辞書順で先頭のエリアに偏る。 範囲全体へ等間隔にブロックを散らし、件数の予算も各ブロックへ均等に配る。 結果はホスト全体からの標本になるため、両ツールとも coverage.sampled で網羅でないことを明示する。

実測(www.geocities.co.jp、1997〜2002): 23001 ブロック中 12 ブロックを読み、 12 エリアにまたがる 226 サイトを 6 秒で列挙。

site: 検索が商業サイトへ流れる問題

ジオシティーズ本体が現行検索の索引から消えた結果、site:geocities.co.jp を投げると 検索エンジンが絞り込みを緩め、生きている shopping.geocities.jp(Yahoo!ショッピング) ばかりを返す。ドメイン指定を直すだけでは閉じないので、二重に対処している。

  1. ホスト辞書の各エントリに searchIndexretro / modern)を持たせ、 現在も事業サイトが動いているドメインは既定のクエリから外す(94 件中 26 件)。 build_retro_queriesincludeModernHosts: true で戻せる。

  2. 全クエリの末尾に -site:shopping.geocities.jp など商業ドメインの除外句を付ける。

なおこの経路自体の期待値は低い。当時のホストはほぼ索引から消えているため、 実際に届くのは discover_sitescrawl_link_neighborhood の芋づるのほう。

文字コード

当時の日本語ページは Shift_JIS / EUC-JP が主流で、meta charset を持たないものも多い (1997 年の Yahoo! JAPAN トップは meta 無し)。res.text() は UTF-8 決め打ちのため そのままでは全文が化ける。本サーバはヘッダ → meta → バイト分布からの推定の順で判定し、 明示された有効な charset(windows-1252 / cp1252 / latin1 / iso-8859-15 など)は推定より優先する。

海外ページを対象にすると、この推定が逆向きに誤爆する。

  • 西欧語ページはアクセント記号が数個散っているだけで、単独の高位バイト(ü=0xFC)が Shift_JIS の 2 バイト目を拾って化ける。→ 高位バイトの密度を見て、疎なら windows-1252 に倒す (日本語ページは本文が丸ごと多バイトなので 1〜3 割を占める)。 「ほぼ ASCII なら UTF-8」という近道も外した。実測の 2001 年 home.t-online.de は 1139 バイト中 3 バイトだけが高位バイトで、UTF-8 として読むと U+FFFD になる。

  • UTF-8 の é(0xC3 0xA9)は EUC-JP の 2 バイト範囲に収まるため、EUC-JP と誤判定される。 → 高位バイトのほぼ全てが妥当な UTF-8 列なら、多数決の前に UTF-8 で確定させる。

  • 欧州のページは &eacute; &uuml; のような名前付き実体参照を多用する。未対応だと "la page demand&eacute;e" のまま本文に出る。→ 基底文字+結合記号の NFC 合成で表を生成し、 記号・約物と併せて復号する。

セットアップ

npm の最新版を使う場合:

claude mcp add retroweb -- npx --yes @kagayoi/retroweb-mcp@latest

MCP クライアントへ直接設定する場合:

{
  "mcpServers": {
    "retroweb": {
      "command": "npx",
      "args": ["--yes", "@kagayoi/retroweb-mcp@latest"]
    }
  }
}

ローカル clone から開発する場合:

pnpm install && pnpm build

ローカル build を Claude Code へ登録:

claude mcp add retroweb -- node C:/Users/IMT/dev/Retroweb-MCP/dist/index.js

skills/retroweb/SKILL.md に探索手順の Skill を同梱している。

検証

pnpm smoke

各外部 API を 1 回ずつ実際に叩いて件数を出す。外部サービスの仕様変更で ツールが黙って空を返すようになったことを検知するためのもの。

pnpm e2e

MCP プロトコル越しにサーバを起動し、ツール登録・実地の発掘・エラー処理を通しで確認する。

いずれも実ネットワークに接続するため、Internet Archive のレート制限で 一時的に失敗することがある。連続失敗する場合は時間を置いて再実行する。

ライセンス

MIT

Available Tools

10 tools
build_retro_queriesレトロサイト向け検索クエリ生成A

現行の検索エンジン(Google / Bing 等)に投げるための、当時のホストを site: で絞り込んだクエリ群と、90年代特有の言い回し(リンクフリー、キリ番、相互リンク募集、工事中 など)を組み合わせた検索語を生成する。素のキーワードより命中率が上がる。生成されたクエリは WebSearch ツールへそのまま渡して使う。

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes探したい主題。例: '東方 CG 集' '個人 日記'
categoriesNosite: に含めるホスト種別。省略時は全部
includePeriodPhrasesNo当時の言い回しを組み合わせたクエリも生成する(既定 true)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses the core behavior (combining site: filters and period phrases) and intended consumption, but does not describe the output format beyond 'query group' or explain how categories/includePeriodPhrases alter results. It omits details like whether output is a list or string, which leaves some behavioral transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action and resource, and contains no redundant filler. Every sentence earns its place: purpose, advantage, and direct usage instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 params, no output schema) and strong schema coverage, the description covers the essential context: what it does, why it helps, and how to use the result. Minor gaps like exact return structure or category effects are acceptable because the schema explains them. It is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all parameters. The description adds general context (e.g., site: filtering links to categories, 90s phrases to includePeriodPhrases) but does not add concrete syntax or format details beyond what the schema already provides. This meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'generates' search queries (検索語を生成する) for current search engines, combining site: host filters with 90s-specific phrases. It explicitly frames the output as input for WebSearch, distinguishing it from sibling tools that perform retrieval or archival. The verb and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context by stating the generated queries should be passed directly to the WebSearch tool and claims a higher hit rate than raw keywords. It implies when to use (for retro-site searches) but does not name alternative tools or give explicit 'when not to use' guidance, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_sites個人サイトの一覧を発掘A

あるホストやエリア配下に『どんな個人サイトが存在したか』を列挙する。ジオシティーズのエリア(例 www.geocities.co.jp/Playtown-Bingo)やプロバイダのユーザー領域を指定すると、ユーザーごとのサイト単位に畳んで一覧化する。wayback_cdx_search はファイル単位で返るため 1 サイトの画像群に埋もれてしまうが、こちらはページを跨いで収集しサイト単位にまとめるため、無名サイトの発見にはこちらを使う。検索エンジンに一切載っていない 90年代の個人ホームページを見つける主力ツール。

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo終了年。例 '2002'
urlYesホストまたはエリアの prefix。例: 'www.geocities.co.jp/Playtown-Bingo' 'homepage1.nifty.com'
fromNo開始年。例 '1998'
limitNo返すサイト数(既定 100)
htmlOnlyNoHTML のみ対象にする(既定 true)。false で画像等も数える
maxRecordsNoCDX から読み取るレコード上限(既定 3000)。多いほど網羅的だが遅い

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool collects across pages and aggregates by user site, and that it is the main tool for finding sites not in search engines. It does not mention rate limits or return format, but the aggregation behavior and comparison to CDX search provide substantive behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, each earning its place: it states the core function, gives examples, compares to a sibling tool, and states its strategic importance. It is dense, front-loaded, and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description adequately explains what the tool returns (a site-level list) and provides example usage. It covers the main context (Geocities areas, 90s personal pages) and differentiates from sibling tools. A minor gap is that it does not describe the structure of the returned list, but overall it is context-rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the baseline is 3. The description reinforces how the url prefix is interpreted and that results are grouped by site, but it does not add new per-parameter meaning beyond what the schema already provides. It earns a solid baseline score without exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb '列挙する' (enumerate) and clearly specifies the resource: personal sites under a host/area. It explicitly contrasts with wayback_cdx_search (file-level vs site-level), making the tool's unique purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool: for discovering unknown 90s personal sites by specifying a host or area. It names the alternative (wayback_cdx_search) and explains why that alternative is less suitable (file-level results get buried). This is clear, actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

legacy_hosts90年代日本語サイトのホスト辞書A

90年代〜2000年代前半の日本語個人サイトが置かれていた無料ホームページサービス・プロバイダスペース・ランキングサイトの一覧を返す。ジオシティーズ、@nifty、BIGLOBE、ベッコアメ、Infoseek isweb など。CDX 探索の起点選びや site: 絞り込みに使う。

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo種別で絞る。community は発見の入口(ランキング・ディレクトリ・リング)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It states '返す' (returns), implying a read-only operation, but does not explicitly mention side effects, authentication, or whether it performs network calls. For a simple lookup tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. It front-loads the core purpose, gives concrete examples, and then states use cases. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one optional enum parameter, no output schema, and no annotations, the description is sufficiently complete. It explains what the tool returns and how to use it. No critical gaps remain for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not mention the 'category' parameter at all, but the schema's own description already explains it well ('種別で絞る。community は発見の入口'). Description adds no extra parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: '一覧を返す' (returns a list) of legacy hosting services. It provides concrete examples (Geocities, @nifty, BIGLOBE) that distinguish it from sibling search/wayback tools, making its purpose immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: 'CDX 探索の起点選びや site: 絞り込みに使う' (used for choosing starting points for CDX exploration and site: filtering). This provides clear context but does not explicitly mention alternatives or when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

marginalia_search_urlMarginalia 検索 URL 生成(独立系・非商業サイト優遇)A

商業性の低い個人サイトや古いページを優遇する独立系検索エンジン Marginalia の検索 URL を組み立てる。【制約】Marginalia は公式に英語専用で、日本語クエリでは結果が返らない。またサービス移行中で HTML 構造が不安定なため、結果の自動取得は行わずブラウザでの閲覧を前提とする。日本語の古いサイト本体を探す用途には使えない(wayback_* ツールを使うこと)。

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes検索語(英語のみ有効)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It transparently reveals that Marginalia is English-only, Japanese queries fail, the service is mid-migration with unstable HTML, and automated fetching should be avoided. This is rich, candid context beyond minimal expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, front-loading the core purpose in the first sentence, followed by clearly marked constraints. Every sentence earns its place, providing necessary context without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is highly complete: it explains what the tool does, its constraints, how to use it (browser-based), and when to use alternatives. There are no obvious gaps for an AI agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the single 'query' parameter as '検索語(英語のみ有効)', and the description reinforces this English-only constraint. Since schema description coverage is 100%, the description adds no significant new parameter-level meaning beyond restating the constraint; the baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'assemble the search URL' for the Marginalia search engine. It clearly differentiates from siblings by describing Marginalia's niche (favoring low-commercial personal sites and old pages) and explicitly contrasting with wayback_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: it states the tool is for generating Marginalia search URLs, and provides clear exclusions—Japanese queries yield no results, results should not be auto-fetched (browser viewing is expected), and for Japanese old-site bodies one should use wayback_* tools instead. This directly names alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retro_search_strategyレトロサイト発掘の探索手順A

90年代の日本語個人サイトなど、検索エンジンに載っていない古いマイナーサイトを探すための手順書を返す。どのツールをどの順で使うか迷ったとき、最初にこれを呼ぶ。

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo探したい主題(あれば手順を具体化する)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It transparently states that the tool returns a procedure document rather than performing the search itself, and explicitly says to call it first. It does not detail the document's structure or failure modes, but for this simple meta-tool the description is sufficiently honest about its nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences, front-loading the core purpose and then immediately giving usage direction. Every clause earns its place; no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description fully covers what it does, when to use it, and what it returns. It provides enough context for an agent to invoke it correctly without needing further details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter 'topic' is already fully described as '探したい主題(あれば手順を具体化する)'. The main description adds no extra meaning beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb '返す' and clearly states it provides a '手順書' for discovering obscure retro Japanese personal sites, which distinguishes it from sibling tools that directly execute searches or fetch pages. It also explicitly frames itself as a strategic entry point with 'どのツールをどの順で使うか迷ったとき、最初にこれを呼ぶ'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context: 'どのツールをどの順で使うか迷ったとき' (when unsure which tool to use in what order) and instructs the agent to call this first. It does not name specific alternative tools or exclusion criteria, but the guidance is direct and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

warp_search_url国立国会図書館 WARP 検索 URL 生成A

日本語サイト特化の国立国会図書館ウェブアーカイブ(WARP)の検索 URL を組み立てる。【制約】WARP は検索結果を JavaScript で描画し内部 API も 403 でブロックされているため、HTTP 取得では結果を読めない。本ツールは URL とブラウザでの閲覧手順を返すのみ。また WARP の収集開始は 2002 年で 90 年代のページはほぼ対象外。

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes検索語、または調べたいサイトの URL
includeInLibraryNo館内限定公開の資料も対象に含める

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that WARP search results are JavaScript-rendered and the internal API returns 403, meaning HTTP retrieval is impossible, and that the tool only returns a URL and instructions. It also mentions the 2002 coverage limit. This is strong transparency, though it does not cover every possible edge case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with the purpose stated first, followed by constraints clearly marked with 【制約】. Each sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple URL-building tool, the description is complete: it explains what the tool does, what it returns, and key constraints. It lacks an explicit output schema but compensates by describing the returned content (URL and instructions). Minor ambiguity about whether the URL targets the WARP search interface or a specific result page could be clarified, but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (keyword, includeInLibrary) are already documented in the schema. The description does not add additional parameter-level details beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('組み立てる') and resource ('国立国会図書館ウェブアーカイブ(WARP)の検索 URL'), and clearly scopes it to Japanese sites. It distinguishes itself from sibling tools by explicitly saying it only returns a URL and browsing instructions, not fetching results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is for generating WARP search URLs, and it warns that HTTP fetching will not work due to JS rendering and 403 blocking, implying users should use a browser. It also notes the 2002 collection start, suggesting limitations for 1990s pages, though it does not explicitly name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wayback_fetch_pageアーカイブ済みページ本文取得A

保存済みの古いページ本文を取得する。Wayback のツールバーを含まない生 HTML を取るため、当時のページの内容確認やテキスト化に適する。文字化けする場合は raw=true で生 HTML を確認する。

ParametersJSON Schema
NameRequiredDescriptionDefault
rawNotrue で生 HTML、false(既定)でプレーンテキスト化
urlYes当時の元 URL(web.archive.org 付きでも可)
maxCharsNo最大文字数(既定 8000)
timestampYes14 桁タイムスタンプ。cdx 検索の結果をそのまま渡す

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns raw HTML without the Wayback toolbar and gives a practical tip about using raw=true when text is garbled. This adds meaningful behavioral context beyond just 'fetch', though the default output format is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main purpose, followed by suitability and a troubleshooting tip. Every sentence earns its place and there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only fetch tool with four parameters and no output schema, the description covers the purpose, a key behavioral detail (no toolbar), a use case, and a parameter-specific tip. It does not mention error behavior or the exact return format, but the schema already documents parameter details and the tool is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the raw parameter in a usage context (use raw=true when garbled), which is not present in the schema. This tips the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb '取得する' (fetch) with a clear resource '保存済みの古いページ本文' (archived page body). It distinguishes itself from sibling tools like wayback_cdx_search (searching snapshots) and wayback_outlinks (extracting links), and even mentions the absence of the Wayback toolbar, which is a specific trait.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by stating it is suitable for confirming page content and converting to text, which implies when to use it. It does not explicitly name alternatives or exclusions, but the context is sufficient for an AI agent to choose this over related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wayback_snapshotWayback スナップショット確認A

指定 URL が Internet Archive に保存されているか、指定時点に最も近いスナップショットを 1 件調べる。昔のサイトの URL に心当たりがあるとき、それが今も辿れるかを最小コストで確認する用途。

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes確認したい当時の URL
timestampNo希望時点。'1999' や '20000401' の形式。省略時は最新

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns the closest snapshot relative to the given timestamp and only one result. However, it does not describe the return format, error behavior if no snapshot exists, or any rate constraints. With no annotations provided, the description carries the full burden, and this omission leaves some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and contains no filler. Every clause serves a purpose, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage context, and the snapshot selection rule, but it lacks an explicit statement of what the tool returns (e.g., snapshot URL vs. metadata) and how it signals absence. Given no output schema and no annotations, this is a noticeable gap, though the tool is simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides complete descriptions for both parameters (url and timestamp), including timestamp formats and default behavior. The description does not add parameter-specific semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states that the tool checks whether a URL is archived in the Internet Archive and retrieves the single snapshot closest to a specified time. This is a specific verb-resource-scope combination, clearly distinguishing it from sibling tools like wayback_fetch_page or wayback_cdx_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: when an old URL is known and you want to verify at minimal cost whether it is still accessible. This implies a lightweight check versus more resource-intensive fetch tools, though it does not explicitly name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedbuild_retro_queries
    • First observeddiscover_sites
    • First observedlegacy_hosts
    • First observedmarginalia_search_url
    • First observedretro_search_strategy
    • First observedwarp_search_url
    • First observedwayback_cdx_search
    • First observedwayback_fetch_page
    • First observedwayback_outlinks
    • First observedwayback_snapshot

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a distinct role in retro-web research: fetching content, extracting links, enumerating archives, grouping sites, generating queries, and building search URLs. While wayback_cdx_search and discover_sites both enumerate archived data, they operate at different granularities, and the two URL builders target different archives with explicit constraints. The only minor ambiguity is between the search-URL generators, but their descriptions clearly separate WARP and Marginalia.

Naming Consistency3/5

The tool names mix conventions: five tools use a wayback_ prefix, while others use verb-first (discover_sites, build_retro_queries) or noun-first patterns (legacy_hosts, marginalia_search_url). All names are readable snake_case and there is some internal grouping, but the lack of a uniform verb_noun structure or a consistent namespace reduces predictability.

Tool Count5/5

With 10 tools, the server is well-scoped for its niche. Each tool addresses a specific step in discovering and retrieving old Japanese personal sites, and the inclusion of a strategy guide adds value without bloat. The count falls comfortably within the ideal range for a domain-specific server.

Completeness5/5

The set covers the full workflow: identifying candidate hosts (legacy_hosts), enumerating archived URLs (wayback_cdx_search), grouping them into sites (discover_sites), fetching content (wayback_fetch_page), following links (wayback_outlinks), verifying specific snapshots (wayback_snapshot), and generating live-web queries (build_retro_queries). It also includes alternative search resources (warp, marginalia) despite constraints, leaving no critical gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides access to the Internet Archive Wayback Machine to list snapshots, fetch archived web pages, and search archive.org items. Enables retrieval of historical website content and metadata through natural language queries.
    3
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Internet Archive's Wayback Machine to save web pages, retrieve archived versions, search historical snapshots, and check archive statistics without requiring API keys.
    694 npm
    Creative Commons Attribution Non Commercial Share Alike 4.0 International
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the Internet Archive's Wayback Machine. Search archived snapshots, extract page text from a specific date, track how a site has changed over time, check if broken links are recoverable, and perform research across Internet Archive collections.
    6
    3
    MIT