Skip to main content
Glama

web_decompile_bundles

Decompiles frontend JavaScript chunks and reconstructs original source files from sourcemaps, then extracts internal API endpoints for analysis.

Instructions

Decompiles modern frontend JavaScript chunks (Webpack/Vite/Turbopack), extracts and reconstructs original source files from sourcemaps into clean directories, and carves all internal API endpoints.

Input Schema

NameRequiredDescriptionDefault
urlYesTarget website URL
outputDirNoTarget directory for unpacked sources (default: ./decompiled_sources)
maxScriptsNoMaximum number of script chunks to decompile (default: 25)
unpackToDiskNoWhether to unpack reconstructed source files to local disk (default: false)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.13.0

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It says sources are reconstructed 'into clean directories,' which reads as always-on disk writes, while the schema's unpackToDisk parameter defaults to false — the description never clarifies that disk output is opt-in. It also omits network/auth requirements, scope of crawling, output size/volume, and whether anything is mutated or overwritten in outputDir.

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, leading with the primary action. It is dense — three capabilities packed into one clause chain — but nothing is redundant.

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

Completeness3/5

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

For a multi-stage tool with no annotations and no output schema, the description covers what it does but not what an agent needs to run it safely: whether the target must be publicly reachable, whether output goes to disk by default, and roughly what the result contains (file tree, endpoint list). Adequate but with visible gaps.

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 all four parameters including defaults are already documented in structured form. The description adds no extra semantics about url scope, chunk selection behavior, or what maxScripts truncation means in practice, so the baseline 3 applies.

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

Purpose5/5

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

Names three concrete operations with specific verbs and resources: decompiling Webpack/Vite/Turbopack JS chunks, reconstructing sources from sourcemaps, and carving internal API endpoints. The mention of modern frontend bundlers clearly separates it from siblings like web_decompile_wasm and web_decompile_shaders.

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

Usage Guidelines2/5

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

No indication of when to reach for this tool versus alternatives such as web_clone_offline_mirror, web_diff_bundle_releases, or web_audit_api_catalog, even though the endpoint-carving capability overlaps with the latter. No prerequisites, no conditions, no exclusions are stated.

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