Skip to main content
Glama

Archivebox Api

CLI or API | MCP | Agent

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

Documentation — Installation, deployment, usage across the API, CLI, MCP, and A2A agent interfaces, and guidance for provisioning the ArchiveBox platform are maintained in the official documentation.


Related MCP server: mcp-archive

Table of Contents


Overview

Archivebox Api is a production-grade Agent and Model Context Protocol (MCP) server designed to interface directly with the Pythonic ArchiveBox API Wrapper and Fast MCP Server for Agentic AI use!


Key Features

  • Consolidated Action-Routed MCP Tools: Minimizes token overhead and eliminates tool bloat in LLM contexts by grouping methods into optimized, togglable tool modules.

  • Enterprise-Grade Security: Complete support for Eunomia policies, OIDC token delegation, and granular execution context tracking.

  • Integrated Graph Agent: Built-in Pydantic AI agent supporting the Agent Control Protocol (ACP) and standard Web interfaces (AG-UI).

  • Native Telemetry & Tracing: Out-of-the-box OpenTelemetry exports and native Langfuse tracing.


Concept Registry

This codebase is aligned with the 5 Core Pillars Architecture of the scion-sdk ecosystem:

Concept ID

Pillar Name

Domain

Implementation Details in archivebox-api

ECO-4.0

Ecosystem & Peripherals

Tool Interface & MCP Factory

Provides FastMCP server wrapper, action routing tools, and dynamic schema exposures.

ECO-4.1

Ecosystem & Peripherals

A2A Network & Consensus

Manages agent peer discovery, routing tables, and consensus.

OS-5.1

Agent OS Infrastructure

Security & Auth

Implements token-based OIDC access control, JWT filters, and Eunomia validation.

AU-OS.governance.wasm-micro-agent-sandbox

Agent OS Infrastructure

Telemetry & Observability

Delivers warning suppressions, JSON progress logging, and error tracing.


Environment Variables

Package environment variables

Variable

Example

Description

HOST

0.0.0.0

PORT

8000

TRANSPORT

stdio

options: stdio, streamable-http, sse

ENABLE_OTEL

True

OTEL_EXPORTER_OTLP_ENDPOINT

http://localhost:8080/api/public/otel

OTEL_EXPORTER_OTLP_PUBLIC_KEY_REF

secret://telemetry/otlp-public-key

OTEL_EXPORTER_OTLP_SECRET_KEY_REF

secret://telemetry/otlp-secret-key

OTEL_EXPORTER_OTLP_PROTOCOL

http/protobuf

EUNOMIA_TYPE

none

options: none, embedded, remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

ARCHIVEBOX_BASE_URL

http://localhost:8000

ARCHIVEBOX_URL

http://localhost:8000

ARCHIVEBOX_URL is a fallback/alternative alias for ARCHIVEBOX_BASE_URL

ARCHIVEBOX_USERNAME

—

ARCHIVEBOX_TLS_PROFILE

—

Optional named runtime TLS profile or secret reference. Peer and hostname verification are mandatory; private trust chains belong in runtime config.

ARCHIVEBOX_TLS_PROFILE_REF

—

DEBUG

False

PYTHONUNBUFFERED

1

ARCHIVEBOX_API_KEY

secret-injected

ARCHIVEBOX_TOKEN

secret-injected

ARCHIVEBOX_PASSWORD

secret-injected

AUTHENTICATIONTOOL

True

CORETOOL

True

CLITOOL

True

WEBTOOL

True

Enables the web-source tools web_fetch and web_extract.

WEB_SOURCETOOL

True

Enables the SDK web-source contract tag (web_fetch, web_extract).

ARCHIVEBOX_EXTRACT_TIMEOUT_S

120

Seconds web_extract waits for a snapshot to complete.

ARCHIVEBOX_MIN_INTERVAL_S

1.0

Minimum seconds between two web-source requests to one site.

KGTOOL

True

ARCHIVEBOX_KG_AUTO_INGEST

1

Inherited scion-sdk variables (apply to every connector)

Variable

Example

Description

MCP_TOOL_MODE

intent

Tool surface: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

Comma-separated tool allow-list

MCP_DISABLED_TOOLS

—

Comma-separated tool deny-list

MCP_ENABLED_TAGS

—

Comma-separated tag allow-list

MCP_DISABLED_TAGS

—

Comma-separated tag deny-list

MCP_CLIENT_AUTH

—

Outbound MCP child auth: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDC client id (service-account auth)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

Runtime secret reference for the OIDC service account

MCP_BASIC_AUTH_USERNAME

—

HTTP Basic username (MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

Runtime secret reference for HTTP Basic auth (MCP_CLIENT_AUTH=basic)

MCP_URL

http://localhost:8000/mcp

URL of the MCP server the agent connects to

PROVIDER

openai

LLM provider for the agent

MODEL_ID

gpt-4o

Model id for the agent

ENABLE_WEB_UI

True

Serve the AG-UI web interface

26 package + 14 inherited variable(s). Auto-generated from .env.example + the shared scion-sdk set — do not edit.

Configure the runtime environment by creating a .env file based on .env.example. Every variable the server reads, grouped by concern.

Connection & Credentials

Variable

Description

Default

ARCHIVEBOX_BASE_URL

Canonical endpoint URL for the backend ArchiveBox API

http://localhost:8000

ARCHIVEBOX_URL

Fallback alias/alternative for ARCHIVEBOX_BASE_URL

http://localhost:8000

ARCHIVEBOX_USERNAME

Username for authentication

—

ARCHIVEBOX_PASSWORD

Password for authentication

—

ARCHIVEBOX_API_KEY

API key for token-less header authentication

—

ARCHIVEBOX_TOKEN

Pre-configured authentication token

—

ARCHIVEBOX_TLS_PROFILE

Named TLS profile for private PKI, mTLS, or proxy policy

—

ARCHIVEBOX_TLS_PROFILE_REF

Secret reference containing the TLS profile

—

MCP server / transport

Variable

Description

Default

TRANSPORT

stdio, streamable-http, or sse

stdio

HOST

Bind host (HTTP transports)

0.0.0.0

PORT

Bind port (HTTP transports)

8000

MCP_TOOL_MODE

Tool surface: condensed, verbose, or both

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

Comma-separated tool allow/deny list

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

Comma-separated tag allow/deny list

—

DEBUG

Verbose logging

False

PYTHONUNBUFFERED

Unbuffered stdout (recommended in containers)

1

Tool toggles

Each action-routed tool can be disabled individually via its toggle env var (set to false): AUTHENTICATIONTOOL, CORETOOL, CLITOOL (see the Available MCP Tools table below).

Telemetry & governance

Variable

Description

Default

ENABLE_OTEL

Enable OpenTelemetry export

True

OTEL_EXPORTER_OTLP_ENDPOINT

OTLP collector endpoint

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

OTLP auth keys

—

OTEL_EXPORTER_OTLP_PROTOCOL

OTLP protocol (e.g. http/protobuf)

—

EUNOMIA_TYPE

Authorization mode: none, embedded, remote

none

EUNOMIA_POLICY_FILE

Embedded policy file

mcp_policies.json

EUNOMIA_REMOTE_URL

Remote Eunomia server URL

—

Agent CLI (full [agent] runtime only)

Variable

Description

Default

MCP_URL

URL of the MCP server the agent connects to

http://localhost:8000/mcp

PROVIDER

LLM provider (e.g. openai)

openai

MODEL_ID

Model id (e.g. gpt-4o)

gpt-4o

ENABLE_WEB_UI

Serve the AG-UI web interface

True


CLI or API Usage

The operator can use the API client programmatically in Python to manage ArchiveBox snapshots:

from archivebox_api import Api

# Initialize client
client = Api(
    url="http://localhost:8000",
    token="your-auth-token",
)

# Fetch snapshots
snapshots = client.get_snapshots()
for snapshot in snapshots.get("results", []):
    print(f"[{snapshot['timestamp']}] {snapshot['url']}")

Refer to docs/index.md for full developer SDK and class references.


MCP Server Setup

Install the connector-focused [mcp] extra. Examples use archivebox-api[mcp] to add FastMCP / FastAPI through scion-sdk[mcp]; the required Agent Utilities core still carries epistemic-graph[full]. The [agent] extra also enables model orchestration.

This server use dynamic Action-Routed tools to optimize token overhead and maximize IDE compatibility.

Tool Catalog

See the auto-generated Available MCP Tools table below for the full, live list of tools.

Dynamic Tool Selection & Visibility

This MCP server supports dynamic toolset selection and visibility filtering at runtime. This allows the operator to restrict the set of exposed tools to prevent blowing up the LLM's context window.

The operator can configure tool filtering via multiple input channels:

  • CLI Arguments: Pass --tools or --toolsets (or their disabled counterparts --disabled-tools and --disabled-toolsets) during startup.

  • Environment Variables: Define standard environment variables:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • HTTP SSE Request Headers: Pass custom headers during transport initialization:

    • x-mcp-enabled-tools / x-mcp-disabled-tools

    • x-mcp-enabled-tags / x-mcp-disabled-tags

  • HTTP SSE Request Query Parameters: Append query parameters directly to the operator's transport connection URL:

    • ?tools=tool1,tool2

    • ?tags=tag1

When query strings or parameters are provided, an LLM-free Knowledge Graph resolution layer (using DynamicToolOrchestrator) matches query intents against known tool tags, names, or descriptions, with safe fallback and automated 24-hour background cache refreshing.


Local IDE Configuration (Cursor / Claude Desktop)

Add the following block to the operator's mcp.json to configure stdio transport via uvx:

{
  "mcpServers": {
    "archivebox-api": {
      "command": "uv",
      "args": [
        "run",
        "--package",
        "archivebox-api",
        "archivebox-mcp"
      ],
      "env": {
        "ARCHIVEBOX_BASE_URL": "http://localhost:8000",
        "ARCHIVEBOX_USERNAME": "admin",
        "ARCHIVEBOX_PASSWORD": "your-password"
      }
    }
  }
}

Agentic AI Graph Agent

This repository features a fully integrated Pydantic AI Graph Agent. It communicates over the Agent Control Protocol (ACP) and interacts smoothly with the Agent Web UI (AG-UI).

Running the Agent CLI

To start the interactive command-line agent:

# Export credentials
export ARCHIVEBOX_BASE_URL="http://localhost:8000"
export ARCHIVEBOX_USERNAME="admin"
export ARCHIVEBOX_PASSWORD="your-password"

# Run agent server
archivebox-agent --provider openai --model-id gpt-4o

Detailed graph node architecture explanations, custom skill configurations, and agentic trace guides are available in docs/index.md.


Security & Governance

Built directly upon the enterprise-ready scion-sdk core, standard security parameters are fully supported:

Access Control & Policy Enforcement

  • Eunomia Policies: Fine-grained, policy-driven tool authorization. Supports none, local embedded (mcp_policies.json), or centralized remote modes.

  • OIDC Token Delegation: Compliant with RFC 8693 token exchange for flowing authenticating user credentials from Web UI / ACP → Agent → MCP.

  • Scoped Credentials: Execution context runs restricted to the specific caller identity.

Runtime Security Grid

Feature

Feature

Enablement

Tool Guard

Sensitivity inspection with human-in-the-loop validation

Enabled by default

Prompt Injection Defense

Input scanning, repetition monitoring, and recursive loop blocks

Enabled by default

Context Safety Guard

Stuck-loop detectors and contextual overflow preemptive alerts

Enabled by default


Installation

Pick the extra that matches what the operator want to run:

Extra

Installs

Use when

archivebox-api[mcp]

Connector-focused MCP server (scion-sdk[mcp] — FastMCP/FastAPI + epistemic-graph[full])

The operator only run the MCP server (smallest install / image)

archivebox-api[agent]

Agent runtime (scion-sdk[agent-runtime,logfire] — model orchestration + epistemic-graph[full])

The operator run the integrated agent

archivebox-api[all]

Everything (mcp + agent + logfire)

Development / both surfaces

# Connector-focused MCP server (includes the shared graph engine)
uv pip install "archivebox-api[mcp]"

# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "archivebox-api[agent]"

# Everything (development)
uv pip install "archivebox-api[all]"      # or: python -m pip install "archivebox-api[all]"

Container images (:mcp vs :agent)

One multi-stage docker/Dockerfile builds two right-sized images, selected by --target:

Image tag

Build target

Contents

Entrypoint

example/archivebox-api:mcp

--target mcp

archivebox-api[mcp] — connector-focused, includes epistemic-graph[full]; no model-orchestration stack

archivebox-mcp

example/archivebox-api@sha256:<digest>

--target agent (default)

archivebox-api[agent] — agent runtime, model orchestration + epistemic-graph[full]

archivebox-agent

docker build --target mcp   -t example/archivebox-api:mcp    docker/   # connector-focused MCP server
docker build --target agent -t example/archivebox-api:agent-local docker/   # agent runtime

docker/mcp.compose.yml runs the connector-focused :mcp server; docker/agent.compose.yml runs the agent (immutable agent digest) with a co-located :mcp sidecar.

Knowledge-graph database (epistemic-graph)

Both [mcp] and [agent] carry the epistemic-graph engine through the required Agent Utilities core dependency (epistemic-graph[full]). The [mcp] extra keeps the server connector-focused; [agent] also enables model orchestration. Local deployments can use the bundled engine. For production or shared state, run epistemic-graph as a dedicated database service and configure the runtime to use it. Deployment recipes (single-node + Raft HA), connection configuration, and architecture diagrams are documented in the epistemic-graph deployment guide.


Documentation

The complete documentation is published as the official documentation site and is the recommended reference for installation, deployment, and day-to-day operation.

Page

Contents

Installation

pip, source, extras, prebuilt Docker image

Deployment

run the MCP and agent servers, Compose, Caddy + Technitium, env config

Usage

the MCP tools, the Api client, the CLI

Backing Platform

deploy ArchiveBox with Docker

Overview

ecosystem role, configuration, architecture

Concepts

concept registry (CONCEPT:ABOX-*)

AGENTS.md is the canonical contributor/agent guidance.


Contribute

Contributions are welcome! Please ensure code quality by running local checks before submitting pull requests:

  • Format code using ruff format .

  • Lint code using ruff check .

  • Validate type-safety with mypy .

  • Run test suites using pytest

Available MCP Tools

The table below is auto-generated from the live server — do not edit by hand.

Condensed action-routed tools (MCP_TOOL_MODE=condensed)

MCP Tool

Toggle Env Var

Description

archivebox_authentication

AUTHENTICATIONTOOL

Manage archivebox authentication operations.

archivebox_cli

CLITOOL

Manage archivebox cli operations.

archivebox_core

CORETOOL

Manage archivebox core operations.

archivebox_ingest_archiveresults

KGTOOL

List ArchiveBox archive results and ingest them as :ArchiveResult nodes.

archivebox_ingest_snapshots

KGTOOL

List ArchiveBox snapshots and natively ingest them into epistemic-graph.

Verbose 1:1 API-mapped tools (MCP_TOOL_MODE=verbose or both)

MCP Tool

Toggle Env Var

Description

archivebox_check_api_token

APITOOL

Validate an API token to make sure it's valid and non-expired

archivebox_cli_add

APITOOL

Execute archivebox add command

archivebox_cli_list

APITOOL

Execute archivebox list command

archivebox_cli_remove

APITOOL

Execute archivebox remove command

archivebox_cli_schedule

APITOOL

Execute archivebox schedule command

archivebox_cli_update

APITOOL

Execute archivebox update command

archivebox_get_any

APITOOL

Get a specific Snapshot, ArchiveResult, or Tag by abid

archivebox_get_api_token

APITOOL

Generate an API token for a given username & password

archivebox_get_archiveresult

APITOOL

Get a specific ArchiveResult by id or abid

archivebox_get_archiveresults

APITOOL

List all ArchiveResult entries matching these filters

archivebox_get_snapshot

APITOOL

Get a specific Snapshot by abid or id

archivebox_get_snapshots

APITOOL

Retrieve list of snapshots

archivebox_get_tag

APITOOL

Get a specific Tag by id or abid

archivebox_get_tags

APITOOL

Retrieve list of tags

5 action-routed tool(s) · 14 verbose 1:1 tool(s). Each is enabled unless its <DOMAIN>TOOL toggle is set false; MCP_TOOL_MODE selects the surface (intent default — the six verb-tools, granular set loaded on demand · condensed action-routed · verbose 1:1 · both). Auto-generated — do not edit.

Additional Deployment Options

archivebox-api can run as a local stdio process or container, or behind a remote network boundary. The Deployment guide carries the detailed transport contract.

  • Local container — launch a reviewed immutable image as a least-privilege stdio child with no listener or published port.

  • Remote URL — connect through an operator-supplied authenticated HTTPS ingress. Keep its URL, outbound identity references, trust profile, and exact MCP_ALLOWED_HOSTS in AgentConfig.

Deploy with scion-sdk-deployment

Provision this package with the consolidated scion-sdk-deployment workflow. It selects an installed-package, editable-source, or immutable-container path; records only runtime secret and TLS-profile references in AgentConfig; and runs doctor, registration, policy, observability, and rollback gates. Ask your agent to "deploy archivebox-api with scion-sdk-deployment".

Install mode

Command

Installed package

uv tool install "archivebox-api[mcp]", then run archivebox-mcp

Editable source

uv pip install -e ".[agent]", then run archivebox-mcp

Immutable container

deploy registry.example.invalid/archivebox-api@sha256:<digest> through the operator-selected orchestrator

The repository embeds no deployment profile, credential value, certificate path, or environment-specific endpoint. Supply those at runtime through AgentConfig and the configured secret provider.

Governed capability contract

This package ships a compact canonical skill surface with specialist procedures kept as referenced workflows. The current MCP tools, skill metadata, connector_manifest.yml, ontology, mappings, shapes, fixtures, migrations, tool-schema fingerprints, and certification metadata form one versioned capability contract. Validate them together; do not rely on stale tool names or historical per-task skill wrappers.

Runtime endpoints, credentials, certificate trust, tenant identity, retention, and observability policy are deployment inputs and are never packaged values. See Configuration, trust, and privacy before enabling a network transport, connector ingestion, Arbora delegation, or trace export.

Available Tools

18 tools
archivebox_check_api_tokenCheck api tokenA

Validate an API token to make sure it's valid and non-expired

Args: token: The API token to validate.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
tokenYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already disclose that this is not read-only, is open-world, is not idempotent, and is not destructive. The description adds useful context by stating that it makes a POST request and can raise ParameterError, though it does not detail side effects, authentication requirements, or rate limits.

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

Conciseness4/5

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

The first sentence is front-loaded and clear, and the docstring-style Args/Returns/Raises sections are compact. The Returns section is somewhat vague, but there is little wasted text.

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?

For a simple one-parameter validation tool with no output schema, the description explains the input and mentions a POST response and ParameterError. However, it does not explain what a successful or failed validation response looks like, which is important for an agent to interpret the result.

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 0%, so the description carries the burden for the single token parameter. It identifies the parameter as the API token to validate, but adds no format, source, or expiration-related semantics beyond the parameter name.

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: validate an API token. It also clarifies that validation covers validity and non-expiration, which distinguishes it from sibling tools such as archivebox_get_api_token.

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

Usage Guidelines3/5

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

The description implies the tool is used when an agent needs to check whether an API token is valid and non-expired, but it does not explicitly state when to use this tool versus alternatives or mention any preconditions or exclusions.

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

archivebox_cli_addCli addB

Execute archivebox add command

Args: urls: List of URLs to archive. tag: Comma-separated tags. depth: Crawl depth. update: Update existing snapshots. update_all: Update all snapshots. index_only: Index without archiving. overwrite: Overwrite existing files. init: Initialize collection if needed. extractors: Comma-separated list of extractors to use. parser: Parser type. extra_data: Additional parameters as a dictionary.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
tagNo
initNo
urlsYes
depthNo
parserNoauto
updateNo
overwriteNo
extra_dataNo
extractorsNo
index_onlyNo
update_allNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds only that it raises ParameterError on invalid input and returns the POST response object; it does not disclose auth requirements, duplicate-URL handling, or what side effects occur on the collection.

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

Conciseness3/5

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

It is a raw docstring dump with Args/Returns/Raises boilerplate; the purpose line is front-loaded, but the heading scaffolding and one-line-per-parameter format add little beyond a flat list. Content density is acceptable for 11 parameters, though not optimized for an agent.

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?

For an 11-parameter mutation tool with no output schema, the description covers parameters and one error type but omits usage context, authentication, and side-effect/duplicate behavior. It is adequate as a signature reference but thin as invocation guidance.

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?

With 0% schema description coverage across 11 parameters, the description is the sole source of parameter meaning and it covers every one (tag, depth, update, update_all, index_only, overwrite, init, extractors, parser, extra_data). The glosses are terse and partly tautological ('depth: Crawl depth', 'update: Update existing snapshots'), but they still add semantics the bare schema lacks.

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

Purpose4/5

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

States a concrete verb and resource ('Execute archivebox add command') and clarifies the target via 'urls: List of URLs to archive,' so an agent knows this archives URLs. It does not distinguish itself from siblings like archivebox_ingest_snapshots or archivebox_cli_update, which is the only gap.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus the many siblings (cli_update, cli_list, cli_remove, ingest_snapshots). The reader must infer from the name alone that this is the ingestion entry point.

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

archivebox_cli_listCli listC

Execute archivebox list command

Args: filter_patterns: List of filter patterns. filter_type: Filter type. status: Filter by status. after: Filter snapshots after timestamp. before: Filter snapshots before timestamp. sort: Sort field. as_json: Output as JSON. as_html: Output as HTML. as_csv: Output as CSV or fields to include. with_headers: Include headers in output. extra_data: Additional parameters as a dictionary.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
sortNobookmarked_at
afterNo
as_csvNotimestamp,url
beforeNo
statusNoindexed
as_htmlNo
as_jsonNo
extra_dataNo
filter_typeNosubstring
with_headersNo
filter_patternsNo

TDQS

C2.5/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and idempotentHint=false for what presents as a list operation, an unusual profile the description never addresses. The description adds only a generic Raises note and a vague 'Response object from the POST request', leaving the mutation risk and return behavior unexplained.

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

Conciseness3/5

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

The Args/Returns/Raises structure is scannable and the one-line purpose is front-loaded, but the parameter lines are repetitive filler that could be compressed. Neither wasteful nor tight.

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

Completeness2/5

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

An 11-parameter tool with no output schema, near-zero annotation detail, and no explanation of what is listed, whether filters combine, or how output format flags interact. The Returns block ('The response object from the POST request') leaves the agent unable to predict the result.

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?

With 0% schema description coverage, the description must carry all 11 parameters, and it does list them. However most glosses merely restate the name ('filter_type: Filter type', 'sort: Sort field', 'as_json: Output as JSON'), and only a few ('after/before: snapshots after/before timestamp', 'as_csv: CSV or fields to include', 'extra_data') add meaning. Partial compensation only.

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

Purpose3/5

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

States a verb and resource ('Execute archivebox list command') but the object of the listing is never named (snapshots? archiveresults?), and it does not distinguish itself from sibling list-like tools such as archivebox_get_snapshots or archivebox_get_any. The purpose is inferable but not sharp.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no condition selecting this over archivebox_get_snapshots, and no note on prerequisites or the fact that all 11 parameters default so the call is safe with no arguments. The agent must guess its place among 17 siblings.

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

archivebox_cli_removeCli removeC
Destructive

Execute archivebox remove command

Args: delete: Delete matching snapshots. after: Filter snapshots after timestamp. before: Filter snapshots before timestamp. filter_type: Filter type. filter_patterns: List of filter patterns. extra_data: Additional parameters as a dictionary.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
afterNo
beforeNo
deleteNo
extra_dataNo
filter_typeNoexact
filter_patternsNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the destructive/safety profile is covered. The description adds the POST-request and ParameterError context, but omits critical behavioral facts such as that delete defaults to true (irreversible by default), whether removal can be undone, and any auth/permission requirements.

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

Conciseness3/5

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

The Args/Returns/Raises structure is clean and the purpose is front-loaded, but several lines restate the parameter name without adding information, so the section is padded rather than dense.

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

Completeness2/5

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

For a destructive, six-parameter tool with no output schema and zero schema descriptions, the definition is too thin: it does not clarify the default-delete behavior, what the returned response contains, or authentication needs. Annotations cover destructiveness, but the parameter and behavioral gaps leave the agent under-informed for a risky operation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry all six parameters, but most entries are tautological ('filter_type: Filter type', 'extra_data: Additional parameters as a dictionary'). It never explains the dangerous default of delete=true, the meaning of filter_type values (default 'exact'), or the timestamp units/format for after/before.

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

Purpose3/5

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

The description states a specific verb+resource ('Execute archivebox remove command') and the Args list hints that it deletes matching snapshots, so the agent can infer it is the deletion counterpart to archivebox_cli_add/cli_list. However, it never explicitly says what is being removed (snapshots) or how it differs from sibling archivebox tools, relying on the name to carry that load.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no mention of alternatives among the many siblings (cli_add, cli_list, cli_update, get_snapshots). The only usage signal is the implicit 'remove' semantics of the name.

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

archivebox_cli_scheduleCli scheduleC

Execute archivebox schedule command

Args: import_path: Path to import file. add: Enable adding new URLs. every: Schedule frequency. tag: Comma-separated tags. depth: Crawl depth. overwrite: Overwrite existing files. update: Update existing snapshots. clear: Clear existing schedules. extra_data: Additional parameters as a dictionary.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
addNo
tagNo
clearNo
depthNo
everyNo
updateNo
overwriteNo
extra_dataNo
import_pathNo

TDQS

C2.4/5.0
Behavior1/5

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

Annotations declare destructiveHint=false, but the description explicitly advertises 'clear: Clear existing schedules' and 'overwrite: Overwrite existing files', which are non-additive/destructive operations. This directly contradicts the destructiveHint annotation, so it is flagged as a contradiction.

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

Conciseness4/5

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

Uses a clear Args/Returns/Raises structure with the command front-loaded, and the length is reasonable for nine parameters. It is somewhat formulaic, but every line carries some information.

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

Completeness2/5

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

For a nine-parameter, zero-schema-coverage command with no output schema, the definition is missing what the schedule operation actually does, required permissions, argument formats, and return structure. The brief Returns line names only 'Response object' and does not compensate for the absent output schema.

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 0%, so the description is the only source for parameter meaning. It lists all nine parameters with brief glosses, but leaves key formats undefined: 'every: Schedule frequency', 'depth: Crawl depth', and 'extra_data: Additional parameters as a dictionary' do not give enough information to invoke those fields correctly.

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

Purpose3/5

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

States 'Execute archivebox schedule command', a specific verb plus command, but only restates the tool name/title and never explains what scheduling does. It differentiates from non-CLI siblings only by the command name, and provides no domain-level description of creating or managing archive schedules.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance or alternatives; it is only an argument list. It never says when to choose this over archivebox_cli_add, archivebox_cli_update, or the non-CLI sibling tools.

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

archivebox_cli_updateCli updateC

Execute archivebox update command

Args: resume: Resume from timestamp. only_new: Update only new snapshots. index_only: Index without archiving. overwrite: Overwrite existing files. after: Filter snapshots after timestamp. before: Filter snapshots before timestamp. status: Filter by status. filter_type: Filter type. filter_patterns: List of filter patterns. extractors: Comma-separated list of extractors. extra_data: Additional parameters as a dictionary.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
afterNo
beforeNo
resumeNo
statusNounarchived
only_newNo
overwriteNo
extra_dataNo
extractorsNo
index_onlyNo
filter_typeNosubstring
filter_patternsNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare it is a non-read-only, non-idempotent, open-world operation, so safety basics are covered. The description adds that it issues a POST request and raises ParameterError, which is useful, but it never says what gets modified, what overwrite actually replaces, or what permissions are needed.

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

Conciseness3/5

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

It is a structured docstring (Args/Returns/Raises) with the purpose front-loaded and appropriately sized for 11 parameters. Still, several Args lines are filler that restate the parameter name, so not every sentence earns its place.

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

Completeness2/5

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

For an 11-parameter mutation tool with no output schema and only annotation-level safety hints, the description leaves major gaps: it never explains the effect of the update on snapshots, how filters combine, or what the response contains beyond 'the response object from the POST request'.

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 0% across 11 parameters, so the description must carry the load, and it does list every parameter. However several glosses are pure tautologies ('status: Filter by status', 'filter_type: Filter type', 'extractors: Comma-separated list of extractors'), giving no format, timestamp units, or expected values beyond what the bare schema shows.

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

Purpose3/5

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

The description states it runs the 'archivebox update' CLI command, which is essentially a restatement of the tool name/title, but the Args list hints at the actual work (re-archiving, indexing, filtering snapshots). It offers no differentiation from siblings such as archivebox_ingest_snapshots or archivebox_cli_add, so an agent cannot tell from the text alone what makes 'update' distinct.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or alternative guidance. The argument names imply scenarios (resume, only_new, status filters) but the agent must infer them; nothing routes it between this tool and the ingest/list/add siblings.

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

archivebox_get_anyGet anyB
Read-onlyIdempotent

Get a specific Snapshot, ArchiveResult, or Tag by abid

Args: abid: The abid of the Snapshot, ArchiveResult, or Tag.

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
abidYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral note (raises ParameterError on invalid parameters), but 'Response object from the GET request' is a non-statement about behavior and no pagination/error/rate-limit context is offered beyond that single raise clause.

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

Conciseness4/5

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

Front-loaded single sentence with the lookup key named up top, followed by brief Args/Returns/Raises blocks. The Returns line is filler, but the overall size is appropriate and non-redundant.

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?

A one-parameter read tool with rich annotations and no output schema needs little, and the description is minimally adequate. The notable gap is the abid semantics and the missing rationale for this generic tool versus its type-specific siblings, which is what an agent most needs here.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for the abid parameter. It only restates the parameter name/title ('The abid of the Snapshot, ArchiveResult, or Tag') without giving format, expected value shape, or how to obtain an abid, which is the key ambiguity for an opaque identifier.

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

Purpose4/5

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

States a specific verb (Get) and resource set (Snapshot, ArchiveResult, or Tag) qualified by the lookup key (abid), so the agent knows exactly what the call retrieves. It does not, however, explain how this generic tool relates to the more specific siblings (archivebox_get_snapshot, archivebox_get_tag, archivebox_get_archiveresult), leaving the differentiation to inference.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. With dedicated sibling getters for each type, the agent has no stated reason for choosing archivebox_get_any over them, nor any exclusion criteria.

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

archivebox_get_api_tokenGet api tokenB

Generate an API token for a given username & password

Args: username: The username for authentication. password: The password for authentication.

Returns: Response: The response object from the POST request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
passwordNo
usernameNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already disclose the key traits (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false). The description adds that it performs a POST and raises ParameterError for invalid params, which is useful, but it omits whether generating a token invalidates prior tokens, how credentials are obtained, or any rate/expiry behavior.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence, which is good, but the Args/Returns/Raises boilerplate is padded and the Returns line ('response object from the POST request') conveys little given there is no output schema to lean on.

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?

Bar is lower here: annotations carry the safety profile, and with only two simple credential parameters there is limited surface to cover. The gaps - no alternative-tool routing and no clarity on token lifecycle or invalid-credential behavior beyond ParameterError - are real but modest for this tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the load, and it barely does: 'username: The username for authentication' and 'password: ... for authentication' are near-tautological. It identifies both as auth credentials but adds no format, sourcing, or nullability meaning.

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

Purpose4/5

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

States a specific verb (Generate an API token) and resource (token for a username & password), so an agent understands what it produces. It does not, however, distinguish itself from the close sibling archivebox_check_api_token, nor does it reconcile the 'get' name with the 'generate' behavior.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of when not to use it. The very relevant alternative archivebox_check_api_token exists in the sibling set but is never referenced, leaving the agent to guess which token tool applies.

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

archivebox_get_archiveresultGet archiveresultB
Read-onlyIdempotent

Get a specific ArchiveResult by id or abid

Args: archiveresult_id: The ID or abid of the ArchiveResult.

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
archiveresult_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds limited context: it reports a ParameterError for invalid parameters and says the return is the GET response object, but it does not describe auth, rate limits, or response shape.

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

Conciseness4/5

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

The key purpose is front-loaded in the first sentence, and the Args/Returns/Raises structure is easy to scan. The Returns line is somewhat tautological ('The response object from the GET request'), but overall the definition is appropriately sized.

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?

For a simple one-parameter read tool with annotations, this is close to sufficient. However, with no output schema, the description does not explain the returned ArchiveResult fields or structure, and the error behavior is only minimally described.

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 0%, so the description must carry parameter meaning. It does clarify that archiveresult_id accepts either 'id or abid', which adds value beyond the schema's plain string type, but it does not explain the distinction or provide format examples.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get a specific ArchiveResult by id or abid.' This distinguishes it from a bulk list operation, though it does not explicitly name the sibling archivebox_get_archiveresults as the alternative.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'specific ArchiveResult by id or abid' – an agent can infer this is for fetching one known record. There is no explicit guidance on when to use this versus archivebox_get_archiveresults, archivebox_get_any, or related lookup tools.

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

archivebox_get_archiveresultsGet archiveresultsB
Read-onlyIdempotent

List all ArchiveResult entries matching these filters

Args: id: Filter by ID. search: Search across snapshot url, title, tags, extractor, output, id. snapshot_id: Filter by snapshot ID. snapshot_url: Filter by snapshot URL. snapshot_tag: Filter by snapshot tag. status: Filter by status. output: Filter by output. extractor: Filter by extractor. cmd: Filter by command. pwd: Filter by working directory. cmd_version: Filter by command version. created_at: Filter by exact creation date (ISO 8601 format). created_at__gte: Filter by creation date >= (ISO 8601 format). created_at__lt: Filter by creation date < (ISO 8601 format). limit: Number of results to return. offset: Offset for pagination. page: Page number for pagination. api_key: API key for QueryParamTokenAuth (optional).

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
idNo
cmdNo
pwdNo
pageNo
limitNo
offsetNo
outputNo
searchNo
statusNo
api_keyNo
extractorNo
created_atNo
cmd_versionNo
snapshot_idNo
snapshot_tagNo
snapshot_urlNo
created_at__ltNo
created_at__gteNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that it may raise ParameterError and that api_key is for QueryParamTokenAuth — mildly useful context but no detail on pagination behavior, auth requirements, or result shape.

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

Conciseness3/5

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

The first line is front-loaded and useful, but the body is autogenerated docstring boilerplate where roughly half the lines restate the parameter name. 'Returns: Response: The response object from the GET request' is pure filler that consumes space without informing.

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?

For an 18-parameter, no-required-parameter listing tool with no output schema, the definition should explain what an ArchiveResult contains and what values status/extractor accept. It covers parameter names but not semantics or return shape; the annotations partially compensate by confirming this is a safe, idempotent read.

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 0% across 18 parameters, so the description carries the full burden. It does enumerate every parameter, and a few entries add real meaning ('search across snapshot url, title, tags, extractor, output, id'; ISO 8601 for the created_at variants; limit/offset/page semantics). But many are tautological restatements ('status: Filter by status', 'output: Filter by output', 'cmd: Filter by command'), and no valid values are given for status, extractor, or cmd, which is the information an agent actually needs to filter.

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

Purpose4/5

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

The opening line gives a clear verb and resource: 'List all ArchiveResult entries matching these filters,' which distinguishes it from the singular archivebox_get_archiveresult and from snapshot/tag listers. It does not explicitly name a sibling or state the boundary condition, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this list endpoint versus archivebox_get_archiveresult (singular fetch) or the snapshot variants. The body is a parameter enumeration with no context, alternatives, or prerequisites, so an agent gets no routing help.

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

archivebox_get_snapshotGet snapshotB
Read-onlyIdempotent

Get a specific Snapshot by abid or id

Args: snapshot_id: The ID or abid of the snapshot. with_archiveresults: Whether to include archiveresults.

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
snapshot_idYes
with_archiveresultsNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only the error behavior (ParameterError on invalid params) and a vague note that the result comes from a GET request; it does not mention auth requirements or what a missing snapshot yields.

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

Conciseness4/5

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

Short and front-loaded, with the core purpose in the first sentence and Args/Raises sections that are tight. The Returns line ('The response object from the GET request') is essentially a tautology but costs only one line.

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?

There is no output schema, so the description should describe the returned snapshot; instead it only says it is the GET response object, which tells the agent nothing about the payload. For a simple two-parameter read with annotations covering the safety profile, this is adequate but leaves the return value and auth expectations unexplained.

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?

With schema description coverage at 0%, the description carries the full burden and does document both parameters: snapshot_id as 'The ID or abid', and with_archiveresults as a flag for including archive results. The meanings added are real but thin, and the default value of with_archiveresults is left to the schema.

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

Purpose4/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 – 'Get a specific Snapshot by abid or id' – which distinguishes it from the plural list-style sibling archivebox_get_snapshots. It does not explicitly name or contrast with other retrieval siblings such as archivebox_get_any or archivebox_get_archiveresult, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The agent is not told when to pick this over archivebox_get_any or archivebox_get_snapshots, nor when the id vs abid form applies.

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

archivebox_get_snapshotsGet snapshotsA
Read-onlyIdempotent

Retrieve list of snapshots

Args: id: Filter by snapshot ID. abid: Filter by snapshot abid. created_by_id: Filter by creator ID. created_by_username: Filter by creator username. created_at__gte: Filter by creation date >= (ISO 8601 format). created_at__lt: Filter by creation date < (ISO 8601 format). created_at: Filter by exact creation date (ISO 8601 format). modified_at: Filter by exact modification date (ISO 8601 format). modified_at__gte: Filter by modification date >= (ISO 8601 format). modified_at__lt: Filter by modification date < (ISO 8601 format). search: Search across url, title, tags, id, abid, timestamp. url: Filter by URL (exact). tag: Filter by tag name (exact). title: Filter by title (icontains). timestamp: Filter by timestamp (startswith). bookmarked_at__gte: Filter by bookmark date >= (ISO 8601 format). bookmarked_at__lt: Filter by bookmark date < (ISO 8601 format). with_archiveresults: Include archiveresults in response. limit: Number of results to return. offset: Offset for pagination. page: Page number for pagination. api_key: API key for QueryParamTokenAuth (optional).

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
idNo
tagNo
urlNo
abidNo
pageNo
limitNo
titleNo
offsetNo
searchNo
api_keyNo
timestampNo
created_atNo
modified_atNo
created_by_idNo
created_at__ltNo
created_at__gteNo
modified_at__ltNo
modified_at__gteNo
bookmarked_at__ltNo
bookmarked_at__gteNo
created_by_usernameNo
with_archiveresultsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds optional api_key authentication and a ParameterError on invalid parameters, but does not describe rate limits or meaningful return behavior beyond a generic 'Response object'.

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

Conciseness4/5

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

The purpose is front-loaded and the Args list is compact and structured. For 22 optional parameters the length is largely justified, though the Returns/Raises boilerplate adds minor noise.

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?

Given 22 optional parameters and no output schema, the description does well on parameter meaning but only says the return is a 'Response object' and does not explain response shape or pagination defaults. Annotations cover safety, but result semantics remain underspecified.

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 0%, so the description must compensate; it documents all 22 parameters with useful filter semantics such as exact match, icontains, startswith, ISO 8601 date operators, and pagination fields. It still leaves the page/offset/limit relationship and the id vs abid distinction somewhat ambiguous, so it is not perfect.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('list of snapshots'), so the basic purpose is clear. It does not distinguish this tool from the singular sibling archivebox_get_snapshot or other get_* tools, so it falls short of full sibling differentiation.

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

Usage Guidelines3/5

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

The filter arguments imply that this tool is for querying/filtering snapshots, but there is no explicit when-to-use guidance, no exclusions, and no named alternative such as archivebox_get_snapshot. The agent must infer the distinction from the tool name and siblings.

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

archivebox_get_tagGet tagB
Read-onlyIdempotent

Get a specific Tag by id or abid

Args: tag_id: The ID or abid of the tag. with_snapshots: Whether to include snapshots.

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
tag_idYes
with_snapshotsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that a ParameterError is raised on invalid parameters and hints that with_snapshots widens the response, but says nothing about auth requirements or what the response actually contains.

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

Conciseness4/5

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

The Args/Returns/Raises structure is front-loaded and compact, with no wasted prose. The Returns line is boilerplate-ish but not bloated.

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?

For a two-parameter read lookup this is roughly adequate: parameters, error behavior and read-only nature are covered. But with no output schema, the vague 'response object from the GET request' leaves the return shape and the effect of with_snapshots underspecified.

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 0%, so the description carries the parameter burden, and it does document both parameters including the useful 'ID or abid' distinction. However it gives no format examples, defaults, or explanation of what including snapshots changes in the payload, so it only partially compensates.

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

Purpose4/5

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

States a specific verb and resource ('Get a specific Tag') and distinguishes the singular lookup from the plural sibling archivebox_get_tags by emphasizing 'a specific Tag by id or abid'. It is clear what the tool returns, though it never explicitly names the list alternative.

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

Usage Guidelines2/5

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

There is no guidance on when to use this lookup versus archivebox_get_tags or archivebox_get_any. The 'id or abid' note is descriptive, not a usage condition or exclusion.

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

archivebox_get_tagsGet tagsB
Read-onlyIdempotent

Retrieve list of tags

Args: limit: Number of results to return. offset: Offset for pagination. page: Page number for pagination. api_key: API key for QueryParamTokenAuth (optional).

Returns: Response: The response object from the GET request.

Raises: ParameterError: If the provided parameters are invalid.

NameRequiredDescriptionDefault
pageNo
limitNo
offsetNo
api_keyNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds useful behavioral context: it is a GET request that requires optional api_key auth and raises ParameterError on invalid input. It does not describe pagination behavior or result shape.

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

Conciseness3/5

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

The Args block is compact and front-loaded, but the trailing 'Returns: Response: The response object from the GET request' is a tautological boilerplate line that adds no information, and the Raises line is only marginally useful.

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?

With no output schema, the description should describe the returned tag list shape, and it does not ('The response object from the GET request' is empty). It does cover all four params and an error case, and annotations cover the safety profile, so it is adequate but with a clear gap on return values.

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 0%, so the description must carry parameter meaning, and it does supply a one-line gloss for all four params (limit, offset, page, api_key). These are minimal and omit units, defaults, or the relationship between offset and page, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Retrieve list of tags'), which cleanly distinguishes it from the singular archivebox_get_tag sibling. It does not, however, explicitly call out that distinction or scope (e.g. all tags vs. filtered), so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the sibling archivebox_get_tag for single-tag lookups, and no indication of when pagination is needed. The agent must infer usage purely from the name.

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

archivebox_ingest_archiveresultsArchivebox Ingest ArchiveresultsB

List ArchiveBox archive results and ingest them as :ArchiveResult nodes.

Best-effort: returns {"ingested": None} when no engine is reachable.

NameRequiredDescriptionDefault
params_jsonNoJSON string of get_archiveresults filters (e.g. snapshot_id, extractor, status).{}

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses one failure mode ('best-effort', returns {"ingested": None} when no engine is reachable), which is real value beyond structured fields. However, it says nothing about the mutation itself: whether repeated ingestion is idempotent, whether it creates duplicate nodes, or what permissions/engine setup are needed.

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

Conciseness4/5

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

Two tight sentences with the core action front-loaded and the degraded-return caveat second. No filler; only minor style noise from the RST-style double-backtick JSON.

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?

An output schema exists, so return values need not be explained, and the description still volunteers the no-engine case. The remaining gap is mutation semantics for a write tool with zero annotation coverage, which leaves the agent under-informed about side effects and repeat-call behavior.

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% and the single params_json parameter is fully documented in the schema with filter examples. The description adds no filter syntax or format detail beyond that, so the baseline 3 for a schema-driven parameter applies.

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

Purpose4/5

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

The description names a specific verb pair (list + ingest) and the exact resource and target node type (':ArchiveResult nodes'), so the agent knows what the tool produces. It does not explicitly differentiate itself from the sibling archivebox_get_archiveresults or archivebox_ingest_snapshots, leaving the ingest-vs-read distinction to be inferred from the name.

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

Usage Guidelines2/5

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

There is no when-to-use guidance. With siblings like archivebox_get_archiveresults (read-only listing) and archivebox_ingest_snapshots (a different ingest target) present, the description should say when ingestion is warranted and which sibling covers the plain read case, but it offers nothing.

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

archivebox_ingest_snapshotsArchivebox Ingest SnapshotsA

List ArchiveBox snapshots and natively ingest them into epistemic-graph.

Pushes :Snapshot (+ :Tag + :hasTag) nodes and per-snapshot :Document page-text, plus any nested :ArchiveResult links, via the fast engine client. Best-effort: returns {"ingested": None} when no engine is reachable.

NameRequiredDescriptionDefault
params_jsonNoJSON string of get_snapshots filters (e.g. tag, search, limit).{}

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/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 and does well: it discloses exactly which nodes are written (:Snapshot, :Tag, :hasTag, per-snapshot :Document page-text, nested :ArchiveResult links), the engine used ('fast engine client'), and the best-effort failure mode ({"ingested": None} when no engine is reachable). It omits auth requirements and idempotency/re-run semantics, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by write-target detail and a failure-mode note; every sentence carries information. Slightly dense with graph-node jargon but not padded.

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?

Output schema exists, so return values needn't be restated, and the description still flags the notable {"ingested": None} case. For a no-annotation ingest tool it covers what is written and how it fails, leaving only auth and repeat-run behavior unstated.

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% and params_json is documented in-schema as 'JSON string of get_snapshots filters'. The description adds no filter syntax or examples beyond that, 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?

States a specific compound verb and resource: 'List ArchiveBox snapshots and natively ingest them into epistemic-graph.' This distinguishes it from sibling archivebox_get_snapshots (list only) and archivebox_ingest_archiveresults (different resource), so an agent can route correctly without opening schemas.

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

Usage Guidelines3/5

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

Usage is implied by the verb ('list and ingest'), but there is no explicit when-to-use, when-not, or named alternative among the many siblings. An agent must infer that this is the ingest path versus the plain get/list tools.

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

web_extractWeb ExtractB
Read-onlyIdempotent

Fetch one web page and extract its main content as markdown with title, author, published date, canonical URL and outbound links.

NameRequiredDescriptionDefault
requestYesOne page to fetch, with the caller's bounds.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful output context (markdown extraction plus specific extracted fields) but says nothing about size limits (max_bytes), timeouts, rate limits, or failure behavior.

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?

A single front-loaded sentence with verb first and no wasted words. The extracted-field list earns its place by telling the caller what the markdown payload contains.

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?

Output schema exists so return values need not be explained, and annotations cover safety, making the description adequate. The material gap is the absence of any disambiguation from the very similar web_fetch sibling, which is exactly what the description should carry.

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 already documents url, job_ref, max_bytes, timeout_s and accepted_types. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States specific verbs (fetch, extract) and resource (one web page), plus the output shape (markdown with title, author, published date, canonical URL, outbound links). However, it never differentiates from the obvious sibling web_fetch, so an agent cannot tell the two apart from the description alone.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of the near-identical sibling web_fetch. The description implies use ('fetch one web page') but gives no condition for choosing this tool over alternatives or when it should not be used.

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

web_fetchWeb FetchA
Read-onlyIdempotent

Fetch one web page under the web-source contract: robots.txt, a per-domain rate limit, max_bytes and accepted_types. text_markdown holds the page body as text.

NameRequiredDescriptionDefault
requestYesOne page to fetch, with the caller's bounds.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, but the description adds operationally meaningful context not in the annotations: robots.txt compliance and a per-domain rate limit. It omits what happens on rate-limit violation or fetch failure, so it is not fully transparent.

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

Conciseness4/5

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

Two compact, front-loaded sentences with no filler. The final clause about text_markdown is slightly redundant given an output schema exists, but the overall shape is efficient.

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?

With an output schema present, the description need not explain return values, and the nested 'request' object is fully documented in the schema. The fetcher's contract (robots, rate limit, size/type bounds) is covered well enough to call 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 description coverage is 100%, so the schema already documents url, max_bytes, accepted_types, timeout_s and job_ref. The description names max_bytes and accepted_types but adds no format, unit, or limit semantics beyond what the schema states, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Fetch one web page'), and the phrase 'under the web-source contract' plus the accepted_types/max_bytes scope make it distinct from extraction-oriented siblings like web_extract. It stops short of naming that sibling outright, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

'Fetch one web page' implies the usage context (retrieving raw page content rather than extracting structured data), but there is no explicit when-to-use, when-not-to-use, or named alternative. Guidance is only implied.

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. 21 tool updatesv2.5.1
    • Removedarchivebox_authentication
    • Addedarchivebox_check_api_token
    • Removedarchivebox_cli
    • Addedarchivebox_cli_add
    • Addedarchivebox_cli_list
    • Addedarchivebox_cli_remove
    • Addedarchivebox_cli_schedule
    • Addedarchivebox_cli_update
    • Removedarchivebox_core
    • Addedarchivebox_get_any
    • Addedarchivebox_get_api_token
    • Addedarchivebox_get_archiveresult
    • Addedarchivebox_get_archiveresults
    • Addedarchivebox_get_snapshot
    • Addedarchivebox_get_snapshots
    • Addedarchivebox_get_tag
    • Addedarchivebox_get_tags
    • Addedarchivebox_ingest_archiveresults
    • Addedarchivebox_ingest_snapshots
    • Addedweb_extract
    • Addedweb_fetch
  2. 15 tool updatesv0.11.1
    • Addedarchivebox_authentication
    • Addedarchivebox_cli
    • Addedarchivebox_core
    • Removedcheck_api_token
    • Removedcli_add
    • Removedcli_list
    • Removedcli_remove
    • Removedcli_schedule
    • Removedcli_update
    • Removedget_any
    • Removedget_api_token
    • Removedget_archiveresults
    • Removedget_snapshot
    • Removedget_snapshots
    • Removedget_tag
  3. 12 tool updates
    • First observedcheck_api_token
    • First observedcli_add
    • First observedcli_list
    • First observedcli_remove
    • First observedcli_schedule
    • First observedcli_update
    • First observedget_any
    • First observedget_api_token
    • First observedget_archiveresults
    • First observedget_snapshot
    • First observedget_snapshots
    • First observedget_tag

TDQS

B3.2/5.0

Scored across 18 tools

Disambiguation3/5

There is real overlap across the set: singular/plural pairs (get_snapshot vs get_snapshots, get_tag vs get_tags, get_archiveresult vs get_archiveresults) are easy to confuse, get_any duplicates the three specific getters, cli_list overlaps with the get_* list endpoints, and web_fetch vs web_extract both fetch a page. Descriptions help clarify intent, but boundaries are not crisp.

Naming Consistency4/5

Most tools follow a clean archivebox_verb_noun snake_case pattern (archivebox_get_snapshot, archivebox_cli_add). Minor deviations exist: the archivebox_cli_* middle segment and the two web_-prefixed tools (web_fetch, web_extract) break the otherwise uniform namespace, but the convention is still clearly readable.

Tool Count4/5

18 tools is slightly on the heavy side but each maps to a genuine ArchiveBox operation (per-resource get/list, CLI commands, ingest, token auth). The set is defensible for an API wrapper, though cli_list and get_any are somewhat redundant additions.

Completeness4/5

Coverage is solid: read/list for snapshots, archiveresults and tags, creation via cli_add, removal via cli_remove, updates via cli_update, plus scheduling, token management and graph ingestion. Direct create/update/delete for tags is absent, but tags are typically managed indirectly through snapshots, so this is a minor gap.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • 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.
    517 npm
    Creative Commons Attribution Non Commercial Share Alike 4.0 International
  • A
    license
    A
    quality
    C
    maintenance
    Provides tools to archive URLs, retrieve clean readable text from Wayback Machine snapshots, list snapshots, search Internet Archive items, and compare snapshots, designed to avoid context window blowup by returning stripped text.
    6
    5 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server and CLI tool for interacting with the Internet Archive's Wayback Machine, supporting full CDX search, snapshot retrieval, screenshot listing, snapshot comparison, and optional authentication.
    8
    517 npm
    61
    Creative Commons Attribution Non Commercial Share Alike 4.0 International