ArchiveBox API
You can operate an ArchiveBox instance through MCP: query and manage snapshots, tags, and archive results; run ArchiveBox CLI actions; handle API tokens; fetch/extract web content; and ingest ArchiveBox data into epistemic-graph.
Query snapshots, tags, and archive results with filters, pagination, and optional nested results.
Retrieve any Snapshot, ArchiveResult, or Tag by abid, and get individual records.
Run ArchiveBox CLI actions: add URLs, list, remove, schedule, and update.
Generate and validate ArchiveBox API tokens.
Fetch a web page under robots/rate/size/type constraints and extract main content as markdown with metadata and outbound links.
Ingest snapshots and archive results into epistemic-graph as a best-effort operation.
Supports deployment of the ArchiveBox MCP server as a containerized service using Docker with configurable authentication and authorization options
Hosted on GitHub with repository management, issue tracking, and collaborative development features
Supports OpenID Connect (OIDC) proxy authentication for secure access control with configurable client credentials and provider integration
Distributed as a Python package through PyPI, enabling easy installation and dependency management
Built as a Python wrapper providing programmatic access to ArchiveBox API functionality for web archiving operations
Uses Shields.io badges to display project metrics including version, downloads, stars, license, and build status
Uses Vercel's GitHub README stats service to display contributor statistics and project metrics
Supports Docker Compose configuration using YAML format for service deployment and environment management
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ArchiveBox APIadd https://example.com to my archive"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Archivebox Api
CLI or API | MCP | Agent
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 |
| Ecosystem & Peripherals | Tool Interface & MCP Factory | Provides FastMCP server wrapper, action routing tools, and dynamic schema exposures. |
| Ecosystem & Peripherals | A2A Network & Consensus | Manages agent peer discovery, routing tables, and consensus. |
| Agent OS Infrastructure | Security & Auth | Implements token-based OIDC access control, JWT filters, and Eunomia validation. |
| Agent OS Infrastructure | Telemetry & Observability | Delivers warning suppressions, JSON progress logging, and error tracing. |
Environment Variables
Package environment variables
Variable | Example | Description |
|
| |
|
| |
|
| options: stdio, streamable-http, sse |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| options: none, embedded, remote |
|
| |
|
| |
|
| |
|
| ARCHIVEBOX_URL is a fallback/alternative alias for ARCHIVEBOX_BASE_URL |
| — | |
| — | Optional named runtime TLS profile or secret reference. Peer and hostname verification are mandatory; private trust chains belong in runtime config. |
| — | |
|
| |
|
| |
| secret-injected | |
| secret-injected | |
| secret-injected | |
|
| |
|
| |
|
| |
|
| Enables the web-source tools |
|
| Enables the SDK web-source contract tag ( |
|
| Seconds |
|
| Minimum seconds between two web-source requests to one site. |
|
| |
|
|
Inherited scion-sdk variables (apply to every connector)
Variable | Example | Description |
|
| Tool surface: |
| — | Comma-separated tool allow-list |
| — | Comma-separated tool deny-list |
| — | Comma-separated tag allow-list |
| — | Comma-separated tag deny-list |
| — | Outbound MCP child auth: |
| — | OIDC client id (service-account auth) |
|
| Runtime secret reference for the OIDC service account |
| — | HTTP Basic username ( |
|
| Runtime secret reference for HTTP Basic auth ( |
|
| URL of the MCP server the agent connects to |
|
| LLM provider for the agent |
|
| Model id for the agent |
|
| 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 |
| Canonical endpoint URL for the backend ArchiveBox API |
|
| Fallback alias/alternative for |
|
| Username for authentication | — |
| Password for authentication | — |
| API key for token-less header authentication | — |
| Pre-configured authentication token | — |
| Named TLS profile for private PKI, mTLS, or proxy policy | — |
| Secret reference containing the TLS profile | — |
MCP server / transport
Variable | Description | Default |
|
|
|
| Bind host (HTTP transports) |
|
| Bind port (HTTP transports) |
|
| Tool surface: |
|
| Comma-separated tool allow/deny list | — |
| Comma-separated tag allow/deny list | — |
| Verbose logging |
|
| Unbuffered stdout (recommended in containers) |
|
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 OpenTelemetry export |
|
| OTLP collector endpoint | — |
| OTLP auth keys | — |
| OTLP protocol (e.g. | — |
| Authorization mode: |
|
| Embedded policy file |
|
| Remote Eunomia server URL | — |
Agent CLI (full [agent] runtime only)
Variable | Description | Default |
| URL of the MCP server the agent connects to |
|
| LLM provider (e.g. |
|
| Model id (e.g. |
|
| Serve the AG-UI web interface |
|
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 usearchivebox-api[mcp]to add FastMCP / FastAPI throughscion-sdk[mcp]; the required Agent Utilities core still carriesepistemic-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
--toolsor--toolsets(or their disabled counterparts--disabled-toolsand--disabled-toolsets) during startup.Environment Variables: Define standard environment variables:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
HTTP SSE Request Headers: Pass custom headers during transport initialization:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-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-4oDetailed 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, localembedded(mcp_policies.json), or centralizedremotemodes.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 |
| Connector-focused MCP server ( | The operator only run the MCP server (smallest install / image) |
| Agent runtime ( | The operator run the integrated agent |
| Everything ( | 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 |
|
|
|
|
|
|
|
|
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 runtimedocker/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 |
pip, source, extras, prebuilt Docker image | |
run the MCP and agent servers, Compose, Caddy + Technitium, env config | |
the MCP tools, the | |
deploy ArchiveBox with Docker | |
ecosystem role, configuration, architecture | |
concept registry ( |
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 |
|
| Manage archivebox authentication operations. |
|
| Manage archivebox cli operations. |
|
| Manage archivebox core operations. |
|
| List ArchiveBox archive results and ingest them as :ArchiveResult nodes. |
|
| 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 |
|
| Validate an API token to make sure it's valid and non-expired |
|
| Execute archivebox add command |
|
| Execute archivebox list command |
|
| Execute archivebox remove command |
|
| Execute archivebox schedule command |
|
| Execute archivebox update command |
|
| Get a specific Snapshot, ArchiveResult, or Tag by abid |
|
| Generate an API token for a given username & password |
|
| Get a specific ArchiveResult by id or abid |
|
| List all ArchiveResult entries matching these filters |
|
| Get a specific Snapshot by abid or id |
|
| Retrieve list of snapshots |
|
| Get a specific Tag by id or abid |
|
| 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_HOSTSinAgentConfig.
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 |
|
Editable source |
|
Immutable container | deploy |
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 toolsarchivebox_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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| init | No | ||
| urls | Yes | ||
| depth | No | ||
| parser | No | auto | |
| update | No | ||
| overwrite | No | ||
| extra_data | No | ||
| extractors | No | ||
| index_only | No | ||
| update_all | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | bookmarked_at | |
| after | No | ||
| as_csv | No | timestamp,url | |
| before | No | ||
| status | No | indexed | |
| as_html | No | ||
| as_json | No | ||
| extra_data | No | ||
| filter_type | No | substring | |
| with_headers | No | ||
| filter_patterns | No |
TDQS
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.
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.
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.
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.
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.
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 removeCDestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| delete | No | ||
| extra_data | No | ||
| filter_type | No | exact | |
| filter_patterns | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | ||
| tag | No | ||
| clear | No | ||
| depth | No | ||
| every | No | ||
| update | No | ||
| overwrite | No | ||
| extra_data | No | ||
| import_path | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| resume | No | ||
| status | No | unarchived | |
| only_new | No | ||
| overwrite | No | ||
| extra_data | No | ||
| extractors | No | ||
| index_only | No | ||
| filter_type | No | substring | |
| filter_patterns | No |
TDQS
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.
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.
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.
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.
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.
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 anyBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| abid | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| password | No | ||
| username | No |
TDQS
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.
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.
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.
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.
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.
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 archiveresultBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| archiveresult_id | Yes |
TDQS
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.
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.
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.
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.
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.
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 archiveresultsBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| cmd | No | ||
| pwd | No | ||
| page | No | ||
| limit | No | ||
| offset | No | ||
| output | No | ||
| search | No | ||
| status | No | ||
| api_key | No | ||
| extractor | No | ||
| created_at | No | ||
| cmd_version | No | ||
| snapshot_id | No | ||
| snapshot_tag | No | ||
| snapshot_url | No | ||
| created_at__lt | No | ||
| created_at__gte | No |
TDQS
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.
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.
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.
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.
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.
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 snapshotBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | ||
| with_archiveresults | No |
TDQS
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.
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.
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.
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.
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.
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 snapshotsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| tag | No | ||
| url | No | ||
| abid | No | ||
| page | No | ||
| limit | No | ||
| title | No | ||
| offset | No | ||
| search | No | ||
| api_key | No | ||
| timestamp | No | ||
| created_at | No | ||
| modified_at | No | ||
| created_by_id | No | ||
| created_at__lt | No | ||
| created_at__gte | No | ||
| modified_at__lt | No | ||
| modified_at__gte | No | ||
| bookmarked_at__lt | No | ||
| bookmarked_at__gte | No | ||
| created_by_username | No | ||
| with_archiveresults | No |
TDQS
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.
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.
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.
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.
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.
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 tagBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ||
| with_snapshots | No |
TDQS
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.
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.
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.
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.
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.
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 tagsBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| offset | No | ||
| api_key | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params_json | No | JSON string of get_archiveresults filters (e.g. snapshot_id, extractor, status). | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params_json | No | JSON string of get_snapshots filters (e.g. tag, search, limit). | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ExtractBRead-onlyIdempotent
Fetch one web page and extract its main content as markdown with title, author, published date, canonical URL and outbound links.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | One page to fetch, with the caller's bounds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FetchARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | One page to fetch, with the caller's bounds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v2.5.1- Removed
archivebox_authentication - Added
archivebox_check_api_token - Removed
archivebox_cli - Added
archivebox_cli_add - Added
archivebox_cli_list - Added
archivebox_cli_remove - Added
archivebox_cli_schedule - Added
archivebox_cli_update - Removed
archivebox_core - Added
archivebox_get_any - Added
archivebox_get_api_token - Added
archivebox_get_archiveresult - Added
archivebox_get_archiveresults - Added
archivebox_get_snapshot - Added
archivebox_get_snapshots - Added
archivebox_get_tag - Added
archivebox_get_tags - Added
archivebox_ingest_archiveresults - Added
archivebox_ingest_snapshots - Added
web_extract - Added
web_fetch
15 tool updates
v0.11.1- Added
archivebox_authentication - Added
archivebox_cli - Added
archivebox_core - Removed
check_api_token - Removed
cli_add - Removed
cli_list - Removed
cli_remove - Removed
cli_schedule - Removed
cli_update - Removed
get_any - Removed
get_api_token - Removed
get_archiveresults - Removed
get_snapshot - Removed
get_snapshots - Removed
get_tag
12 tool updates
- First observed
check_api_token - First observed
cli_add - First observed
cli_list - First observed
cli_remove - First observed
cli_schedule - First observed
cli_update - First observed
get_any - First observed
get_api_token - First observed
get_archiveresults - First observed
get_snapshot - First observed
get_snapshots - First observed
get_tag
TDQS
Scored across 18 tools
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.
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.
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.
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
Related MCP Connectors
Archive MCP — wraps the Internet Archive APIs (free, no auth)
Search the Wayback Machine and IA library (40M+ items), fetch snapshots, item metadata, and text.
Convert public web pages to PDF, images, Markdown, or JSON using one API key.
Capture web pages as cryptographically signed, tamper-evident evidence with WACZ archives.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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 npmCreative Commons Attribution Non Commercial Share Alike 4.0 International
- AlicenseAqualityCmaintenanceProvides 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.65 npmMIT

siteglass-mcpofficial
AlicenseNot gradedqualityCmaintenanceEnables archival of any public URL as interactive snapshot (rrweb, PDF, PNG) and autonomous web QA for apps (register, scan, generate and run end-to-end flows).77 npmMIT- AlicenseAqualityAmaintenanceMCP 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.8517 npm61Creative Commons Attribution Non Commercial Share Alike 4.0 International