Skip to main content
Glama

web_clone_offline_mirror

Clone a website into an offline-playable mirror with rewritten relative asset URLs and an injected mock API interceptor so client-side SPAs stay interactive without a network.

Instructions

Clones a website into an interactive 100% offline-playable mirror with relative asset URL rewrites and an injected mock API ServiceWorker/fetch interceptor so client-side SPAs remain interactive offline.

Input Schema

NameRequiredDescriptionDefault
urlYesTarget website URL to mirror
maxAssetsNoMaximum assets (CSS, JS, Fonts, Images) to download (default: 60)
outputDirNoLocal directory to save offline mirror (default: ./offline_mirror)
includeMockApiNoInject offline mock API interceptor for interactive SPA simulation (default: true)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.13.0

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavior: it rewrites asset URLs to relative paths and injects a ServiceWorker/fetch mock so SPAs stay interactive offline. It omits important side-effect context — that it writes files to a local directory, what happens on failure or partial download, and the time/network cost of crawling.

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?

A single front-loaded sentence with no filler; every clause (offline mirror, URL rewrites, mock API interceptor, SPA interactivity) contributes distinct information. It is dense to the point of being a run-on, which slightly hurts readability.

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 and no annotations, so the description should state what the tool returns (a directory path? a manifest?) and note disk-write side effects. It explains the artifact well but leaves the return value and failure behavior unspecified.

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 url, maxAssets, outputDir, and includeMockApi are all documented in the schema. The description mentions asset crawling and the mock API injection conceptually but adds no syntax, format, or default detail beyond the schema, so 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?

Specific verb plus resource: 'clones a website into an interactive 100% offline-playable mirror', and it names the distinguishing mechanisms (relative URL rewrites, injected mock API interceptor). It never mentions how it differs from sibling tools like web_optimize_offline_cache or web_inspect_pwa_cache, 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 exclusions, and no named alternative. The agent must infer from 'offline mirror' alone whether this or web_optimize_offline_cache, web_capture_live_session, or web_inspect_pwa_cache is the right call.

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