Deobfuscate MCP Server
Offers standard formatting for CSS code found within web bundles, facilitating easier analysis of style definitions.
Enables reverse-engineering, navigation, and structural analysis of minified JavaScript code through module unbundling and semantic search.
Integrates Prettier formatting for JavaScript and CSS to transform minified or obfuscated code into a human-readable format.
Supports the restoration of React JSX syntax from bundled code to improve readability and understanding of component-based logic.
Provides capabilities to unpack Webpack and Browserify bundles, allowing individual modules to be analyzed and navigated separately.
Click on "Install 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., "@Deobfuscate MCP Serverunbundle bundle.min.js and search for the login function"
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.
Deobfuscate MCP Server
An LLM-Optimized Model Context Protocol (MCP) server designed to help Large Language Models reverse-engineer, navigate, and understand minified and bundled JavaScript code.
Why this Server?
Standard "beautifiers" only format code, leaving LLMs to struggle with massive, linear text files that overflow context windows. This server treats minified code as a searchable database, allowing LLMs to:
De-obfuscate & Unbundle: Uses
webcrackto split Webpack/Browserify bundles into individual modules.See the Architecture: Returns a JSON summary of the file's structure (exports, functions) before reading the code.
Navigate Randomly: Read specific modules on-demand (
get_module) instead of the whole file.Search Semantically: Find where specific strings or patterns exist across thousands of unbundled modules.
Related MCP server: opensrc-mcp
Features
deobfuscate: The entry point. Unpacks bundles and caches them in memory.returnCode(defaultfalse): Returns a summary by default to save context. Set totrueto see the full code.skipVendor: Filter outnode_modulesand webpack boilerplate to focus on app code.mangle: Shorten variable names to save tokens.jsx: Restore React JSX syntax.
analyze_structure: Returns a high-level AST summary (functions, classes, exports) to save tokens.list_modules: Lists all modules found in the unpacked bundle.list_functions: Scans cached modules to list defined functions/classes with signatures and parameters.get_call_graph: Generates a call graph for a specific function, identifying what it calls and what calls it.get_module: Fetches the formatted source code of a single module.get_symbol_source: Extracts only a specific function, class, or variable to save tokens.search_modules: Regex/String search across all modules.format_code: Standard Prettier formatting for JS/HTML/CSS.get_help: Returns detailed documentation for any tool.
Installation & Setup
Install from npm (Recommended)
npm install -g deobfuscate-mcp-serverBuild from source
git clone https://github.com/ricardodeazambuja/deobfuscate-mcp-server.git
cd deobfuscate-mcp-server
npm install
npm run buildPack and Install (Optional)
To create a distributable tarball and install it globally:
npm pack
npm install -g ./deobfuscate-mcp-server-1.0.0.tgzClient Configuration
To use this server with your favorite LLM client, add the following configuration.
Claude Code
Run the following command in your terminal:
claude mcp add deobfuscate-mcp-server -- npx -y deobfuscate-mcp-serverAlternatively, edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}Gemini CLI
Run the following command in your terminal:
gemini mcp add deobfuscate-mcp-server npx -y deobfuscate-mcp-serverAlternatively, edit ~/.gemini/settings.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}Antigravity
Run the following command in your terminal:
antigravity --add-mcp '{"deobfuscate-mcp-server": {"command": "npx", "args": ["-y", "deobfuscate-mcp-server"]}}'Alternatively, edit ~/.antigravity/settings.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}Development / Local Usage
If you are running the server from the source code, replace the command with:
"command": "node",
"args": ["ABSOLUTE_PATH_TO_DIST/index.js"](Replace ABSOLUTE_PATH_TO_DIST with the actual absolute path to the dist folder on your machine)
Usage
Start the server:
node dist/index.jsExample Workflow for an LLM
User: "Analyze this minified file:
bundle.min.js..."LLM: Calls
deobfuscate(code="...", skipVendor=true).Server: "Deobfuscation complete. Unbundled 15 modules. Skipped 45 vendor modules..."
LLM: "Okay, I see the entry point requires module 42. What is that?"
LLM: Calls
get_module(id="42").Server: Returns code for module 42.
LLM: "Where is the 'login' function defined?"
LLM: Calls
search_modules(query="function login").Server: "Found in module 88."
LLM: "I just want to see the login function logic."
LLM: Calls
get_symbol_source(symbolName="login", moduleId="88").Server: Returns only the source for the 'login' function.
Development
Build:
npm run buildTest:
npm test
Limits
File Size: The server accepts input files (bundles) up to 50MB.
Memory: Unbundled modules are cached in RAM. Very large bundles (hundreds of MBs unpacked) may exhaust the server's available memory depending on your environment.
Available Tools
10 toolsanalyze_structureC
Returns structural summary (AST) of code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| filePath | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns an AST summary but doesn't explain what that entails (e.g., format, depth, or limitations like the 'limit' parameter's effect). It also omits critical details such as whether this is a read-only operation, performance implications, or error handling, which are essential for safe and effective use.
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 description is extremely concise and front-loaded with a single sentence: 'Returns structural summary (AST) of code.' It wastes no words and immediately communicates the core function. Every part of the sentence earns its place by specifying the action, output, and resource.
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 the complexity of analyzing code structure with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the return format (e.g., JSON AST), how parameters affect the output, or behavioral traits like idempotency. For a tool that likely produces detailed data, more context is needed to guide the agent effectively.
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?
The schema description coverage is 0%, meaning parameters are undocumented in the schema. The description adds no information about the three parameters ('code', 'filePath', 'limit'), such as their purposes, interactions, or constraints (e.g., 'limit' defaults to 50). This leaves the agent guessing about how to use these inputs effectively, failing to compensate for the schema 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?
The description clearly states the tool's purpose: 'Returns structural summary (AST) of code.' It specifies the verb ('Returns'), resource ('structural summary'), and clarifies the output type ('AST'). However, it doesn't distinguish this tool from siblings like 'get_call_graph' or 'list_functions' which might also provide structural insights, so it doesn't reach the highest score.
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 provides no guidance on when to use this tool versus alternatives. With siblings like 'get_call_graph' and 'list_functions' that might overlap in analyzing code structure, there's no indication of when 'analyze_structure' is preferred or what specific aspects it covers (e.g., AST vs. call graphs). This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deobfuscateC
Unpacks/deobfuscates minified code & caches result.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| filePath | No | ||
| unbundle | No | ||
| returnCode | No | ||
| mangle | No | ||
| jsx | No | ||
| skipVendor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions caching as a behavioral trait. It doesn't disclose other important aspects like whether this is a read-only or destructive operation, performance implications, error handling, or what 'caches result' entails (e.g., cache duration, invalidation). The description is minimal and leaves key behaviors unspecified.
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 description is extremely concise with just one sentence containing two key actions and a caching note. It's front-loaded with the main purpose and wastes no words. Every part earns its place by conveying essential information efficiently.
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 the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what the tool returns, how parameters affect behavior, or provide context for when and why to use it. For a tool with multiple boolean flags and no structured documentation, more guidance is needed.
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 but provides no parameter information. It doesn't explain what 'code' or 'filePath' should contain, what 'unbundle', 'returnCode', 'mangle', 'jsx', or 'skipVendor' do, or their interactions. With 7 parameters and no schema descriptions, this is a significant 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?
The description clearly states the tool's purpose with specific verbs ('unpacks/deobfuscates') and resource ('minified code'), plus mentions caching. It distinguishes from siblings like 'format_code' or 'analyze_structure' by focusing on deobfuscation rather than formatting or analysis. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_symbol_source' might overlap).
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 guidance is provided on when to use this tool versus alternatives. The description mentions caching but doesn't specify when to use it over other tools like 'get_module' or 'get_symbol_source' for similar tasks. There's no mention of prerequisites, constraints, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_codeC
Formats code with Prettier.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| filePath | No | ||
| parser | No | babel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Formats code') but doesn't explain what this entails—e.g., whether it modifies the input code in place, returns formatted output, requires specific file types, or has side effects like saving to disk. This leaves critical behavioral traits unspecified.
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 description is extremely concise—a single sentence with no wasted words. It's front-loaded with the core action, making it easy to scan and understand quickly. Every word earns its place by directly stating the tool's function.
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 the complexity of a code formatting tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns, how errors are handled, or the scope of Prettier's capabilities. This leaves significant gaps for an agent to use the tool effectively in varied contexts.
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 for 3 parameters, the description adds no meaning beyond the schema. It doesn't explain what 'code', 'filePath', or 'parser' do, their relationships, or typical usage patterns. For example, it doesn't clarify if 'filePath' is optional for inline code or how 'parser' affects formatting. This fails to compensate for the schema's lack of descriptions.
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 clearly states the verb ('Formats') and resource ('code') with the specific tool used ('Prettier'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'deobfuscate' or 'analyze_structure', which might also process code in different ways, preventing a perfect score.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like cleaning up messy code, preparing for commits, or why one might choose Prettier over other formatting methods. Without such context, the agent lacks direction for appropriate tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_graphC
Generates a call graph for a specific function.
| Name | Required | Description | Default |
|---|---|---|---|
| symbolName | Yes | ||
| moduleId | Yes | ||
| scanAllModules | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'generates a call graph', implying a read-only analysis operation, but fails to detail aspects like performance impact, error handling, or output format. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.
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 description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse, though it could benefit from more detail given the lack of annotations and schema coverage.
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 the complexity of generating a call graph, no annotations, no output schema, and low schema coverage, the description is incomplete. It does not address key aspects like what the output contains, how to interpret results, or any limitations, making it inadequate for effective tool use by an AI agent.
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?
The input schema has 0% description coverage, so parameters 'symbolName', 'moduleId', and 'scanAllModules' are undocumented. The description does not add any meaning beyond the schema, such as explaining what a 'symbolName' represents or the effect of 'scanAllModules', failing to compensate for the low coverage.
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 the tool 'generates a call graph for a specific function', which provides a clear verb ('generates') and resource ('call graph') with a scope ('for a specific function'). However, it does not differentiate from sibling tools like 'analyze_structure' or 'list_functions', which might have overlapping purposes in code analysis, leaving the distinction vague.
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 offers no guidance on when to use this tool versus alternatives. It lacks context on prerequisites, such as needing a function symbol and module, or exclusions, like when other tools might be more appropriate for broader analysis or listing functions, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_helpC
Get detailed usage info and examples for a specific tool.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving 'detailed usage info and examples,' which implies a read-only, informational operation, but fails to specify aspects like response format, error handling, or any constraints (e.g., rate limits or authentication needs). This leaves significant gaps in understanding how the tool behaves.
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 description is a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for the tool's complexity, making it easy to parse and understand quickly.
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 the tool's moderate complexity (1 parameter with an enum), no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, output format, and usage context, which are essential for an agent to effectively invoke and interpret results from this informational tool.
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?
The description adds minimal meaning beyond the input schema, which has 0% description coverage but includes an enum of valid tool names. It clarifies that the parameter is for 'a specific tool,' aligning with the enum, but doesn't explain the semantics of the tool_name parameter further (e.g., format or selection criteria). Given the low schema coverage, this partial compensation results in an average score.
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 clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed usage info and examples for a specific tool'), making it immediately understandable. However, it doesn't explicitly distinguish itself from potential alternatives or clarify its unique role among the sibling tools, which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives, such as whether it's for learning tool capabilities or troubleshooting. It lacks context on prerequisites, timing, or exclusions, leaving the agent with minimal usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_moduleC
Gets code for specific module ID from cache.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves code from a cache, which implies read-only behavior, but doesn't address potential side effects (e.g., cache updates), error conditions, or response format. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.
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 description is a single, direct sentence with no wasted words. It front-loads the core action and resource efficiently, making it easy to parse while conveying essential information without unnecessary elaboration.
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 the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It lacks details on error handling, cache behavior (e.g., freshness, eviction), and what the returned code includes (e.g., metadata, formatting). For a tool that retrieves code, more context about the output would be helpful despite the absence of an 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?
The input schema has 0% description coverage, so the description must compensate. It mentions 'specific module ID' which adds some meaning to the 'id' parameter, but doesn't explain what constitutes a valid ID (e.g., format, source) or how it relates to the cache. This partial compensation is insufficient given the schema's lack of documentation.
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 clearly states the action ('Gets') and the resource ('code for specific module ID from cache'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_modules' or 'get_symbol_source', which would require more specific language about what makes this retrieval unique.
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 provides no guidance on when to use this tool versus alternatives like 'list_modules' or 'search_modules'. It mentions 'specific module ID' but doesn't clarify prerequisites (e.g., needing to know the ID first) or when other tools might be more appropriate, leaving the agent with minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_symbol_sourceC
Extracts specific function/class source code.
| Name | Required | Description | Default |
|---|---|---|---|
| symbolName | Yes | ||
| code | No | ||
| filePath | No | ||
| moduleId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'extracts' implies a read operation, it doesn't specify whether this requires file access permissions, how it handles missing symbols, what format the extracted code returns in, or any performance considerations. This leaves significant gaps for a tool with 4 parameters.
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 description is extremely concise at just 4 words, with no wasted language. It's front-loaded with the core action and resource. Every word earns its place, though this conciseness comes at the cost of completeness.
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 tool with 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, how parameters work together, or provide enough context for an agent to use it effectively beyond the basic purpose.
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 for all 4 parameters, the description provides no information about what 'symbolName', 'code', 'filePath', or 'moduleId' mean or how they interact. The description mentions 'specific function/class' which hints at 'symbolName', but doesn't explain the other parameters or their relationships.
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 clearly states the verb 'extracts' and the resource 'specific function/class source code', which is specific and actionable. However, it doesn't distinguish this tool from potential siblings like 'get_module' or 'list_functions' that might also retrieve code-related information.
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 provides no guidance on when to use this tool versus alternatives. With siblings like 'get_module', 'list_functions', and 'search_modules' available, there's no indication of what makes this tool unique or when it's the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionsC
Scans cached modules to list defined functions and classes.
| Name | Required | Description | Default |
|---|---|---|---|
| moduleId | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'scans cached modules' which implies a read-only operation, but doesn't specify whether this requires specific permissions, how caching works, what happens if modules aren't cached, or the format of the returned list. This leaves significant gaps for a tool with two parameters.
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 description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded with the core action.
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 tool with two undocumented parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the parameters mean, what the return format looks like, or important behavioral aspects like error conditions or performance characteristics.
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?
The input schema has 0% description coverage, so parameters 'moduleId' and 'limit' are completely undocumented in the schema. The description doesn't mention either parameter or explain their purpose, failing to compensate for the schema's lack of documentation.
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 clearly states the tool's purpose with a specific verb ('scans') and resource ('cached modules'), and identifies what it returns ('defined functions and classes'). However, it doesn't explicitly differentiate from sibling tools like 'list_modules' or 'get_module', which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives like 'list_modules' (which likely lists modules rather than their contents) or 'get_module' (which might retrieve module details). There's no mention of prerequisites, limitations, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modulesC
Lists modules from cached bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| excludeVendor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'cached bundle' which hints at performance characteristics but doesn't explain what caching entails, whether results are real-time, or how fresh the data is. It doesn't describe output format, pagination, or error conditions. For a list operation with zero annotation coverage, this leaves significant gaps.
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 description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a qualifying detail ('from cached bundle') that adds context without verbosity. Every word 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?
Given no annotations, no output schema, and 0% schema description coverage for the parameter, the description is incomplete. It doesn't explain what 'modules' are in this context, what the cached bundle contains, how results are structured, or how the parameter affects output. For a tool with one parameter and no structured documentation, more context is needed.
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 for the undocumented parameter 'excludeVendor'. The description provides no information about this parameter—what 'vendor' means, why one would exclude it, or how it affects results. With 1 parameter completely undocumented, the description adds no value beyond 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 clearly states the verb ('Lists') and resource ('modules'), and specifies the source ('from cached bundle'). It distinguishes from siblings like 'get_module' (singular) and 'search_modules' (searching). However, it doesn't explicitly differentiate from 'list_functions' or 'analyze_structure' in terms of scope.
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 guidance is provided on when to use this tool versus alternatives like 'search_modules' or 'get_module'. The description mentions 'cached bundle' but doesn't explain what that means or when caching applies. There are no explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modulesC
Searches text/regex in cached modules.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| isRegex | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'cached modules' which adds some context about data source, but fails to disclose critical behavioral traits: whether this is read-only, what happens if no matches are found, if results are paginated, or any performance/rate limit considerations for a search operation.
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 description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple search tool and front-loads the core functionality.
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 search tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'cached modules' are, what the search returns (e.g., matches, context, module names), or how results are structured. The agent lacks sufficient context to use this tool effectively.
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 schema provides no parameter documentation. The description mentions 'text/regex' which hints at the 'query' parameter and 'isRegex' boolean, but doesn't explain what 'cached modules' means, what format results return, or the purpose of the 'limit' parameter. It adds minimal value beyond the bare parameter names.
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 clearly states the verb ('searches') and resource ('text/regex in cached modules'), making the purpose understandable. However, it doesn't differentiate this tool from potential sibling search tools (none are listed, but the agent might need to know when to use this vs. other search-related tools).
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 provides no guidance on when to use this tool versus alternatives. With siblings like 'get_module', 'list_modules', and 'list_functions', there's no indication of when searching text/regex is preferred over those listing tools, nor any prerequisites or exclusions mentioned.
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. Dates show when Glama detected each change.
10 tool updates
- First observed
analyze_structure - First observed
deobfuscate - First observed
format_code - First observed
get_call_graph - First observed
get_help - First observed
get_module - First observed
get_symbol_source - First observed
list_functions - First observed
list_modules - First observed
search_modules
TDQS
Most tools have distinct purposes, but some potential overlap exists between 'list_functions' and 'search_modules' (both involve scanning cached modules) and between 'get_symbol_source' and 'get_module' (both retrieve code from cache). Descriptions help clarify differences, but an agent might occasionally misselect between these pairs.
All tools follow a consistent verb_noun naming pattern (e.g., analyze_structure, deobfuscate, format_code, get_call_graph). There are no deviations in style or convention, making the set highly predictable and readable.
With 10 tools, the server is well-scoped for deobfuscation and code analysis tasks. Each tool serves a clear purpose, such as analyzing structure, deobfuscating, formatting, and retrieving cached data, without feeling bloated or sparse.
The toolset covers core deobfuscation workflows, including analysis, deobfuscation, formatting, and cache retrieval. A minor gap exists in lifecycle management, such as tools to clear or manage the cache, but agents can work around this with the provided tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn intelligent server that provides semantic code search, domain-driven analysis, and advanced code understanding for large codebases using LLMs and vector embeddings.11MIT
- AlicenseBqualityCmaintenanceA codemode MCP server for fetching and querying dependency source code from npm, PyPI, crates.io, and GitHub. It allows agents to execute server-side JavaScript for context-efficient searching and browsing of large codebases without overwhelming the LLM's context window.15339MIT
- AlicenseCqualityBmaintenanceAn MCP server for JavaScript reverse engineering that enables AI to perform browser debugging, script analysis, and automated hook injection. It streamlines complex workflows like deobfuscation, network tracing, and risk assessment through direct browser integration.3527995Apache 2.0
- AlicenseNot gradedqualityCmaintenanceA JavaScript reverse engineering MCP server that enables AI coding assistants to debug and analyze JavaScript code in web pages.1,2917Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MadeByTokens/deobfuscate-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server