# io.github.smeet666/mcp-archiveorg (mcpb · mcp-archiveorg-1.5.0.mcpb)

Search inside digitised books, browse the Internet Archive catalogue and read Wayback captures.

- Trust score: 40/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-12

## Components

- mcpb · `mcp-archiveorg-1.5.0.mcpb`: 40/100 (this document), [markdown](https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg.md), [page](https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg)
- npm · `mcp-archiveorg`: 79/100, [markdown](https://verifymcp.io/servers/smeet666-mcp-archiveorg/mcp-archiveorg.md), [page](https://verifymcp.io/servers/smeet666-mcp-archiveorg/mcp-archiveorg)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/smeet666/mcp-archiveorg/releases/download/v1.5.0/mcp-archiveorg-1.5.0.mcpb`
- Version: `1.5.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-08-12.

- **Supply Chain Security**: 13/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - No install/post-install scripts declared.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2441 tokens (~406/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 86% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

- Download bundle: `https://github.com/smeet666/mcp-archiveorg/releases/download/v1.5.0/mcp-archiveorg-1.5.0.mcpb`

## 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-08-11 (score 40, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-08-09 (score 40)

First indexed and scored.

## MCP tools (6)

### `search_inside` (~406 tokens)

Search inside scanned pages

Search the text inside digitised books, newspapers and documents on the Internet Archive. This reads what optical recognition took off the scanned pages, so it finds a phrase that appears nowhere in a title or a catalogue record. Put a phrase in double quotes to hold the words together in that order. The index folds accents, case and punctuation before it matches, so the letters are not held: a quoted "bûcher" comes back on pages printing Bücher and Bucher. Read an excerpt before repeating a quoted query as the spelling a page carries. Without quotes the words are matched separately, which finds far more. 'total' counts the documents that match, and they page: ask for page 2, 3 and so on to see beyond the first answer. It is not a count of how many times the phrase occurs. The index reports no page number, so a match names the item and the passage, never a leaf. Follow source_url and search the item to find where the passage sits. When 'inside_container' is true the passage came from a document bundled inside the item, and the title, creator and year describe the container rather than the text that matched: read 'matched_file' for what actually holds it. Use search_items or search_books instead when looking for a work by its title, author or subject.

Input parameters:

- `limit` (integer): Matches to return.
- `max_excerpt_chars` (integer): Budget for one passage. Read it together with 'max_excerpts_per_match': the size of the answer is the product of the two and the number of matches.
- `max_excerpts_per_match` (integer): Passages to keep per match. The index finds several in a long work, and the later ones rarely say anything the first did not.
- `page` (integer): Which page of matches, from 1. Paging stops at 100.
- `query` (string, required): Words or a quoted phrase, such as '"call me ishmael"'.

Output parameters:

- `hits` (array)
- `notes` (array)
- `page` (integer)
- `query` (string)
- `total` (integer): Documents that match, not the number returned and not a count of occurrences. Raise 'page' to read further into it.

### `search_items` (~374 tokens)

Search the catalogue

Search the Internet Archive catalogue: films, books, recordings, images, software and datasets. This matches titles, creators and descriptions, so a compilation whose notes mention a name ranks alongside that person's own work: read 'creator' on each row before treating a result as theirs. It does not read the contents of a scan; use search_inside for a phrase within a book. Set 'media_type' whenever the kind of thing is known, because one title exists across several media and mixing them makes a result list unreadable. 'oldest', 'newest', 'year_from' and 'year_to' all read one field: the date a depositor typed into the record. An item with no date carries a placeholder the index sorts as a real one, a date written as a fragment is filed at the year that fragment reads as, and the field holds no era, so a Babylonian tablet of 1712 BCE answers a search of 1700 to 1750. Read an order or a range as a statement about that field. Every row carries an 'identifier', which get_item takes.

Input parameters:

- `limit` (integer)
- `media_type` (string): Narrow to one kind of thing. Strongly recommended.
- `page` (integer)
- `query` (string, required): Words to look for in titles, creators and descriptions.
- `sort` (string): 'downloads' surfaces what people actually read, which relevance alone often buries. 'oldest' and 'newest' rank on a declared date, not on when a thing was made.
- `year_from` (integer): Earliest year, inclusive, on the record's declared date, which carries no era.
- `year_to` (integer): Latest year, inclusive, on the record's declared date, which carries no era.

Output parameters:

- `items` (array)
- `notes` (array)
- `page` (integer)
- `query` (string)
- `total` (integer): Items matching across the catalogue, not the number returned.

### `get_item` (~237 tokens)

Read an item

Read one Internet Archive item by its identifier, as returned by search_items or search_inside. Sections are opt-in: 'basic' is the default and covers what a description needs. 'files' lists the downloadable files, which on a scanned film or book run to dozens of derivatives, so filter by format when a particular one is wanted. 'full_metadata' returns every field the Archive publishes for the item, which is large and rarely needed. 'file_count' and 'total_bytes' are always reported, whether or not the file list was asked for.

Input parameters:

- `file_format` (string): Keep only files of this format, such as 'PDF' or 'MP3'. Matched case-insensitively.
- `identifier` (string, required): Archive identifier, such as 'nasa'. It is the last part of an item's address rather than the address itself, and it is matched exactly, capitals included.
- `max_description_chars` (integer)
- `max_files` (integer): Ceiling on files returned.
- `sections` (array): Which parts to return. Each one beyond 'basic' adds to the size of the answer.

Output parameters:

- `collections` (array): Collections the item sits in.
- `date`
- `description`
- `file_count` (integer): Files the item holds, whatever this answer returned.
- `files` (array)
- `full_metadata` (object)
- `item` (object)
- `language`
- `license_url`: Terms the uploader attached, when they attached any.
- `notes` (array)
- `publisher`
- `total_bytes`

### `get_snapshot` (~180 tokens)

Read a page as it was

Find the Wayback Machine capture of a web page closest to a given date. Give 'at' to ask for a moment in time; leave it out for the most recent capture. The answer always states 'days_from_requested', because the closest capture can be years away from the date asked for: read it before describing what the page said on that date. It also states the address the capture is of, which the Wayback Machine can resolve to a neighbouring form of the one asked about. This finds the capture and links to it. It does not return the page's contents.

Input parameters:

- `at` (string): Date to aim for, as YYYY-MM-DD or a full ISO 8601 timestamp. Omit for the newest capture.
- `url` (string, required): Address to look up, such as 'lemonde.fr' or a full URL.

Output parameters:

- `notes` (array)
- `requested_at`
- `requested_url` (string)
- `snapshot` (object)

### `list_snapshots` (~279 tokens)

List captures of a page

List Wayback Machine captures of a web page, oldest first, with the dates they were taken. Answers how long a page has been archived and how often, which get_snapshot cannot. A capture whose content repeats the row before it is left out of the index answer. The index also holds one site under several addresses at once, such as its www form, its https form and a form carrying credentials, and returns them interleaved, so two consecutive rows can differ because the address differs rather than because the page did. Every row names the address it captured; read that before counting the captures of any one of them. A capture records when the crawler came, not when the page changed: the change happened somewhere between two dates. This route is slow, tens of seconds on a heavily archived address, and it is paged for that reason. To walk further back, pass the 'next_cursor' from the previous answer as 'cursor'. The index counts rows rather than positions, so there is no page number and no arithmetic to do: a null 'next_cursor' means the end of what it holds.

Input parameters:

- `cursor` (string): The 'next_cursor' from a previous answer. Omit to start at the oldest capture.
- `limit` (integer): Captures to return.
- `url` (string, required): Address to look up.

Output parameters:

- `first`: Earliest capture in this answer, not in the whole history.
- `last`: Latest capture in this answer, not in the whole history.
- `next_cursor`: Pass back as 'cursor' to read the window after this one. Null at the end of the history.
- `notes` (array)
- `returned` (integer): Captures in this answer.
- `snapshots` (array)
- `url` (string)

### `search_books` (~646 tokens)

Search works and editions

Find a book on Open Library, the Internet Archive's catalogue of works, either by name or by description. Pass 'query' when you know what you are looking for: a title, an author. Free text matches parts of words and reads titles and authors together, so a name also finds works by authors whose name merely contains it: read 'authors' on each row before treating a result as that author's work. Pass the criteria instead when you do not, and they combine: 'subject' for what a work is catalogued under, 'place' for where it is set, 'time' for the period it treats, 'person' for who it is about, plus ranges on the year of first publication and on the page count. 'sort' by rating or by readers answers 'what is worth reading', which relevance alone does not. 'first_published_year' is the year Open Library derives from its edition records, and a reissue or a mistyped edition can put it centuries from the real date; 'newest' and 'oldest' rank on that field, so the rows carrying the doubtful years lead the order. Answers who wrote a book, when it first appeared and how many editions exist, which the item catalogue describes poorly because it holds one upload at a time. 'archive_identifiers' lists up to 3 scans of the work: pass one to get_item, or use it to read the book itself. 'scan_count' says how many the work has. A scan is one edition, and a work first printed centuries ago is often held only as a later reissue or a translation, so read the scan's own record before dating what it holds. Use this to identify a work, and search_inside to find a phrase within one.

Input parameters:

- `language` (string): Three-letter code of the language, such as 'eng' or 'fre'.
- `limit` (integer)
- `page` (integer)
- `pages_max` (integer): Longest acceptable work. The count is a median across editions.
- `pages_min` (integer): Shortest acceptable work.
- `person` (string): Who the work is about, such as 'Napoleon'.
- `place` (string): Where the work is set, such as 'Shanghai'.
- `query` (string): Title or author, as free text. Optional when a criterion below is given.
- `sort` (string): 'rating' is how readers scored it, 'readers' is how many recorded reading it, and both answer a question relevance cannot. 'newest' and 'oldest' rank on 'first_published_year', which the index takes…
- `subject` (string): What the work is catalogued under, such as 'grief' or 'spy stories'. Also carries prizes and lists, such as 'Booker Prize'.
- `time` (string): The period the work treats, such as '20th century'.
- `year_from` (integer): Earliest first publication.
- `year_to` (integer): Latest first publication.

Output parameters:

- `books` (array)
- `notes` (array)
- `page` (integer)
- `query`: The free text the caller sent, as it was sent. Null when the search was made of criteria alone.
- `searched_for` (string): What this answer answers, in words: the free text and every criterion applied.
- `total` (integer): Works matching, not the number returned.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg#diagnostics

## Score history

- 2026-08-12: 40
- 2026-08-11: 40
- 2026-08-10: 40
- 2026-08-09: 40

## Links

- Repository: https://github.com/smeet666/mcp-archiveorg
- Changelog RSS feed: https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg.xml
- Changelog JSON feed: https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg.json
- HTML version of this page: https://verifymcp.io/servers/smeet666-mcp-archiveorg/https-github-com-smeet666-mcp-archiveorg-releases-download-v1-5-0-mcp-archiveorg
