Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

webdev_js_obfuscator

Read-onlyIdempotent

Obfuscate JavaScript code to deter casual reading and reverse engineering using variable name mangling, string Base64 encoding, and optional control-flow flattening.

Instructions

JavaScript Code Obfuscator. Obfuscate a JavaScript snippet to deter casual reading and reverse engineering, applying variable/function name mangling, string Base64-encoding, optional control-flow flattening, dead-code injection, and whitespace compaction. Use this to harden client-side JS; use webdev_js_minifier instead when you only want a smaller file (no name mangling or string hiding), or webdev_javascript_beautifier to reverse compaction and re-indent. Regex-based transform, not a full parser, so output is NOT guaranteed runnable and is not reversible/decryptable — keep the original source. Runs locally via a Node bridge: read-only, non-destructive, contacts no external service, rate-limited (30 req/min anon). Returns the obfuscated code plus before/after size and line statistics.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript source to obfuscate (alias: input). Must be non-empty after trimming or the call returns HTTP 400.
strengthNoPreset intensity. light skips control-flow flattening; medium adds it; heavy also enables dead-code injection. Unknown values fall back to medium. Individual options override the preset defaults.medium
optionsNoPer-technique toggles overriding the strength preset.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputNoThe original JavaScript exactly as submitted.
outputNoThe obfuscated JavaScript.
strengthNoThe effective strength preset applied.
optionsNoThe fully-resolved boolean toggles actually applied (defaults merged with overrides).
statisticsNoBefore/after metrics.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed19 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / code / description
      Added value: +"JavaScript source to obfuscate (alias: input). Must be non-empty after trimming or the call returns HTTP 400."
    • addedInput schema / properties / code / examples
      Added value: +[
      +  "function greet(name){console.log(\"hi \"+name);}"
      +]
    • addedInput schema / properties / options / additionalProperties
      Added value: +false
    • addedInput schema / properties / options / description
      Added value: +"Per-technique toggles overriding the strength preset."
    • addedInput schema / properties / options / properties / compactCode / default
      Added value: +true
    • addedInput schema / properties / options / properties / compactCode / description
      Added value: +"Collapse whitespace and tighten punctuation into a single line."
    • addedInput schema / properties / options / properties / controlFlowFlattening / description
      Added value: +"Rewrite simple if-blocks into switch statements. Default true only when strength is heavy, else false; ignored when strength is light."
    • addedInput schema / properties / options / properties / deadCodeInjection / description
      Added value: +"Insert junk statements on every third line. Default true only when strength is heavy, else false; applied only when strength is heavy."
    • addedInput schema / properties / options / properties / encodeStrings / default
      Added value: +true
    • addedInput schema / properties / options / properties / encodeStrings / description
      Added value: +"Replace string literals longer than 2 chars with atob()-decoded Base64."
    • addedInput schema / properties / options / properties / mangleNames / default
      Added value: +true
    • addedInput schema / properties / options / properties / mangleNames / description
      Added value: +"Rename user variables/functions longer than 2 chars (skips reserved words) to short identifiers."
    • removedInput schema / properties / options / required
      Removed value: -[
      -  "mangleNames",
      -  "encodeStrings",
      -  "controlFlowFlattening",
      -  "deadCodeInjection",
      -  "compactCode"
      -]
    • addedInput schema / properties / strength / default
      Added value: +"medium"
    • addedInput schema / properties / strength / description
      Added value: +"Preset intensity. light skips control-flow flattening; medium adds it; heavy also enables dead-code injection. Unknown values fall back to medium. Individual options override the preset defaults."
    • addedInput schema / properties / strength / enum
      Added value: +[
      +  "light",
      +  "medium",
      +  "heavy"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "code",
      -  "strength",
      -  "options"
      -]New value: +[
      +  "code"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "input": {
      +      "description": "The original JavaScript exactly as submitted.",
      +      "type": "string"
      +    },
      +    "options": {
      +      "description": "The fully-resolved boolean toggles actually applied (defaults merged with overrides).",
      +      "properties": {
      +        "compactCode": {
      +          "type": "boolean"
      +        },
      +        "controlFlowFlattening": {
      +          "type": "boolean"
      +        },
      +        "deadCodeInjection": {
      +          "type": "boolean"
      +        },
      +        "encodeStrings": {
      +          "type": "boolean"
      +        },
      +        "mangleNames": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "output": {
      +      "description": "The obfuscated JavaScript.",
      +      "type": "string"
      +    },
      +    "statistics": {
      +      "description": "Before/after metrics.",
      +      "properties": {
      +        "obfuscatedLines": {
      +          "description": "Line count of the output.",
      +          "type": "integer"
      +        },
      +        "obfuscatedSize": {
      +          "description": "Character count of the output.",
      +          "type": "integer"
      +        },
      +        "originalLines": {
      +          "description": "Line count of the input.",
      +          "type": "integer"
      +        },
      +        "originalSize": {
      +          "description": "Character count of the input.",
      +          "type": "integer"
      +        },
      +        "stringsEncoded": {
      +          "description": "Number of string literals encoded.",
      +          "type": "integer"
      +        },
      +        "variablesRenamed": {
      +          "description": "Number of identifiers mangled.",
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "strength": {
      +      "description": "The effective strength preset applied.",
      +      "enum": [
      +        "light",
      +        "medium",
      +        "heavy"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Discloses key traits beyond annotations: warns that output is not guaranteed runnable nor reversible (regex-based), describes local execution via Node bridge, read-only/non-destructive, rate-limited. No contradiction with annotations.

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

Conciseness5/5

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

The description is comprehensive yet well-structured, front-loading the verb and resource. Each sentence serves a purpose (purpose, alternatives, limitations, execution context, output summary). No wasted words.

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

Completeness5/5

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

Given the tool's complexity (3 params, nested options, output schema), the description covers all aspects: purpose, when to use, behavioral caveats, parameter details, return value. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining strength presets' effects and individual option behaviors (e.g., mangleNames skips reserved words, controlFlowFlattening defaults depend on strength). This enriches understanding beyond schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Obfuscate a JavaScript snippet to deter casual reading and reverse engineering' and lists specific techniques. It distinguishes from siblings by naming webdev_js_minifier and webdev_javascript_beautifier, making the tool's role unambiguous.

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

Usage Guidelines5/5

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

Explicitly says 'Use this to harden client-side JS' and provides clear alternatives: webdev_js_minifier for minification only, webdev_javascript_beautifier to reverse compaction. This fully guides when to use and when not.

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

Install Server

Other Tools

Latest Blog Posts

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/Jambozx/onlinecybertools-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server