Skip to main content
Glama
shadoprizm

Cyber Lens AI MCP Server

by shadoprizm

Cyber Lens AI MCP Server

Security scanning for AI assistants and agentic coding workflows.

MCP Open CLAW License: MIT Node.js

A Model Context Protocol (MCP) server that gives AI assistants the ability to scan websites, public repositories, and Open CLAW skills for security vulnerabilities. It's purpose-built for the agentic coding era, with native support for scanning skill packages before you install them.


What It Does

When connected to an AI assistant (Claude Desktop, VS Code, etc.), this MCP server adds security scanning tools that the assistant can use during your conversation:

  • Scan a CLAW skill before installing it -- the server downloads the skill package, extracts it, and analyses the actual source code for dangerous patterns, hardcoded secrets, and permission issues

  • Scan a website in a local quick mode without an account, or use the full cloud scan when connected

  • Scan a public repository for exposed secrets, dependency vulnerabilities, suspicious code patterns, and trust posture issues

  • Check your remaining cloud scan quota before kicking off a batch of scans

  • Get remediation guidance with step-by-step fix instructions and code examples

Example Conversation

You:    "I want to install this skill: https://clawhub.ai/skills/ontology"

Claude: I'll scan it for security issues first.

        [PASS] CLAW Skill Security Scan: ontology v1.0.4

        Security Score: 95/100
        Files Analyzed: 5

        Skill appears safe to install. Minor issues noted below.

        1. [MEDIUM] File write operation
           File: scripts/ontology.py:399
           Fix: Ensure file writes are limited to expected directories.

        The skill looks safe. It writes to the filesystem for its knowledge
        graph storage, which is expected behaviour for this type of skill.

Related MCP server: securityscan

Getting Started

1. Install

After the first npm release, the recommended install path is:

npx -y @shadoprizm/cyberlens-mcp-server

Before that, or for local development and manual builds:

git clone https://github.com/shadoprizm/cyberlens-mcp-server.git
cd cyberlens-mcp-server
npm install
npm run build

2. Add to Your AI Assistant

Claude Desktop -- add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "cyberlens": {
      "command": "npx",
      "args": ["-y", "@shadoprizm/cyberlens-mcp-server"]
    }
  }
}

If you are running from a source checkout instead of npm:

{
  "mcpServers": {
    "cyberlens": {
      "command": "node",
      "args": ["/absolute/path/to/cyberlens-mcp-server/dist/index.js"]
    }
  }
}

Claude Code -- add to your MCP settings or project configuration.

VS Code (Copilot/Continue) -- configure per your extension's MCP server settings.

3. Connect Your Account

Website tools work immediately without an account in local quick mode. That local mode covers roughly 15 core checks and returns results right away.

Connecting an account upgrades website scans to the full CyberLens cloud path with 70+ checks, scan history, and AI analysis. Repository and account-only tools still connect through the browser flow when needed.

When a repository or account-only tool needs an account, the MCP server:

  1. opens the CyberLens browser flow automatically

  2. sends the user to cyberlensai.com to sign up or log in

  3. receives the secure callback locally

  4. saves the API key to ~/.cyberlens/mcp/config.json

  5. continues the original tool call automatically

You can also trigger the same flow explicitly:

You: "Connect my CyberLens account"

This opens your browser to cyberlensai.com where you can sign up (free) or log in. Your API key is saved locally at ~/.cyberlens/mcp/config.json and used for all future scans.

Free accounts include 5 scans/month. No credit card required.

You can also set the CYBERLENS_API_KEY environment variable in the MCP config instead of using the browser flow.

If a cloud website scan hits its monthly quota, the MCP server opens the CyberLens pricing page automatically and falls back to the local quick scan instead of hard-failing. Repository scans still require cloud quota.


Available Tools

Account

Tool

Description

Requires API Key

connect_account

Opens browser to sign up/log in and saves your API key locally

No

get_account_quota

Shows your current plan and remaining website/repository scan quota; auto-connects on first use if needed

Yes

CLAW Skill Scanning

Tool

Description

Requires API Key

scan_claw_skill

Download and analyse a CLAW Hub or direct skill package for security issues

No

validate_claw_skill

Validate a skill manifest against security best practices

No

Website & Repository Scanning

Tool

Description

Requires API Key

scan_website

Local quick website scan without an account; full cloud scan when connected; local fallback if website cloud quota is exhausted

No for local, Yes for full cloud

scan_repository

Public repository security scan for GitHub, GitLab, Bitbucket, and supported ZIP targets; auto-connects on first use if needed

Yes

get_scan_results

Retrieve detailed findings from a completed cloud scan; auto-connects on first use if needed

Yes

get_security_score

Local quick website score without an account; full cloud score when connected

No for local, Yes for full cloud

Intelligence & Guidance

Tool

Description

Requires API Key

get_remediation_guide

Built-in local remediation playbooks for common CWEs and vulnerability classes

No

get_scan_transparency

Honest report of the MCP server's local checks and live cloud endpoints

No


How Skill Scanning Works

When you provide a CLAW skill URL, the MCP server:

  1. Resolves the URL -- accepts Claw Hub pages (https://clawhub.ai/skills/skill-name), direct download links (https://*.convex.site/api/v1/download?slug=name), or any URL pointing to a skill zip

  2. Downloads the skill package to a temporary directory

  3. Extracts and analyses every file in the package:

    • Checks _meta.json and SKILL.md for completeness

    • Scans all source code (Python, JavaScript, TypeScript, shell scripts, config files) for dangerous patterns

    • Detects hardcoded secrets, eval() usage, shell command execution, insecure HTTP requests, file deletion operations, pickle deserialisation, and more

    • Identifies unpinned dependencies

    • Catalogues all external URLs the skill communicates with

  4. Returns a security score (0-100) with detailed findings, file locations, and fix recommendations

  5. Cleans up all temporary files

This entire process runs locally -- no API key is required and your code is never sent to an external server.

Website Scan Modes

scan_website and get_security_score now have two honest modes:

  • Local Quick Scan -- works without an account, returns immediately, and covers roughly 15 core website checks such as HTTPS, security headers, server disclosure, insecure forms, and inline-script indicators

  • Full Cloud Scan -- requires a connected CyberLens account, runs 70+ checks, keeps cloud scan history, and includes richer analysis

If a user asks for a full or database website scan without an account, the MCP server still returns the local quick scan and says that the requested cloud-only mode was not available.

If a connected user runs out of website cloud quota, CyberLens falls back to the local quick scan automatically and opens the pricing page with an upgrade link.

Accepted URL Formats

https://clawhub.ai/skills/ontology            --> Resolves automatically
https://clawhub.ai/author/skill-name          --> Resolves automatically
https://*.convex.site/api/v1/download?slug=x  --> Direct download

Architecture

src/
  index.ts          MCP server, tool handlers, output formatting
  auth.ts           Browser-based connect flow, config file management
  client.ts         REST API client for live scan and quota endpoints
  remediation-guides.ts  Local CWE and vulnerability remediation guidance
  schemas.ts        Zod input validation schemas
  skill-scanner.ts  Local CLAW skill analyser (download, extract, scan)
  skill-validation.ts    Local CLAW manifest validation
  transparency.ts        Local transparency report for scan coverage

Key design decisions:

  • No Supabase SDK -- pure REST calls with fetch and X-API-Key header

  • Truthful cloud surface -- the MCP server only exposes cloud-backed tools that are supported by the live public API (/scan, /scan/{id}, /quota)

  • Stdio transport -- runs as a subprocess of the AI assistant, communicates via stdin/stdout

  • Useful without API key -- skill scanning, website quick scans, manifest validation, remediation guidance, and transparency reporting work locally; connecting an account upgrades website scans to the full cloud path and unlocks repository scanning

  • Browser-based auth -- same secure connect flow as the CyberLens OpenClaw skill (CSRF-protected, short-lived exchange codes, HTTPS-only)


Development

# Build
npm run build

# Watch mode
npm run dev

# Run directly (for testing)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | node dist/index.js

Environment Variables

Variable

Required

Default

Description

CYBERLENS_API_KEY

No

--

API key (alternative to browser connect flow)

CYBERLENS_API_BASE_URL

No

https://api.cyberlensai.com/functions/v1/public-api-scan

API endpoint override


Publishing

This repository is prepared for npm + MCP Registry publication as:

  • npm package: @shadoprizm/cyberlens-mcp-server

  • MCP server name: io.github.shadoprizm/cyberlens-mcp-server

Typical release flow:

# 1. Bump the version
npm version patch

# 2. Publish the package to npm
npm publish

# 3. Authenticate with the MCP Registry
mcp-publisher login github

# 4. Publish server.json to the MCP Registry
mcp-publisher publish

The registry metadata lives in the root server.json file and the npm ownership check uses the mcpName field in package.json.


  • CyberLens OpenClaw Skill -- the OpenClaw skill version with the same scanning capabilities

  • CyberLens -- the full platform with browser-based scanning, dashboards, and reporting

  • OpenClaw -- the open skill ecosystem for AI agents


License

MIT

Available Tools

10 tools
connect_accountA

Connect your CyberLens account to this MCP server.

Opens your browser to cyberlensai.com where you can sign up for free or log in. After authorizing, your API key is securely saved locally.

Free accounts get 5 scans/month. No credit card required.

If you already have an API key, you can also set the CYBERLENS_API_KEY environment variable instead. Cloud tools can also launch this flow automatically the first time repository or account-only tools need an account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and does well: it discloses that the tool opens a browser, saves the API key locally after authorization, and mentions the free tier limit of 5 scans/month. These are meaningful behavioral side effects beyond a generic 'connect account' statement.

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?

The description is front-loaded with the core action and then adds relevant details about the flow, limitations, and alternatives. It is slightly longer than minimal, but every sentence adds useful context such as free-tier limits and env-var setup, so no sentence feels wasted.

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

Completeness4/5

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

The description is complete enough for invocation: it names the trigger, the browser flow, the local key storage, and alternatives. It doesn't describe the return value or behavior if the user is already authenticated, but for a zero-parameter auth tool this is a minor gap and not likely to cause misinvocation.

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?

The tool has zero parameters and full schema coverage, so there is no parameter meaning for the description to add. The description instead provides useful surrounding context about what happens during the flow, which is appropriate for a parameterless auth tool.

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 identifies a specific action: connecting a CyberLens account to the MCP server. It explains the browser-based sign-up/login flow and what happens after authorization, making the tool distinct from the scanning and quota siblings.

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?

It gives explicit context for when this tool is relevant and provides an alternative: users with an existing API key can set CYBERLENS_API_KEY instead. It also notes that cloud tools may launch this flow automatically, clarifying how the tool fits into automated workflows.

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

get_account_quotaA

Get your CyberLens account quota and remaining cloud scans.

Returns:

  • Current plan name

  • Total scans used, limit, and remaining

  • Website scan usage

  • Repository or skill scan usage

Use this to confirm your account is connected and check how many cloud scans remain. If no account is connected yet, the MCP server will launch the CyberLens browser flow automatically before checking quota.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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 transparently reveals a notable side effect: 'If no account is connected yet, the MCP server will launch the CyberLens browser flow automatically before checking quota.' It also lists the return values. It doesn't mention failure modes or whether the browser flow is interactive, but the key behavioral trait is disclosed.

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 concise and well-structured: a one-sentence purpose, a clean bulleted return list, then a usage note and a behavior note. Every sentence contributes value, and the most critical information is front-loaded.

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?

For a zero-parameter, no-output-schema tool, the description is complete. It states the purpose, the return data, the usage context, and the only side effect (browser flow on unauthenticated calls). An agent has everything necessary to decide to call it and understand what to expect.

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?

The tool takes zero parameters, so the input schema carries no burden. The baseline for a zero-parameter tool is 4, and the description goes beyond the schema by explaining what the returned quota data includes, which helps an agent interpret the result even though the output schema is absent.

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 opens with a specific verb and resource: 'Get your CyberLens account quota and remaining cloud scans.' It then enumerates exactly what is returned (plan name, scan usage, limits, remaining). This clearly distinguishes it from sibling scan tools like scan_website or get_scan_results, which perform different actions.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use this to confirm your account is connected and check how many cloud scans remain.' It also explains the automatic browser flow if no account is connected. However, it does not directly compare alternatives or say when NOT to use it, leaving some room for the agent to infer routing relative to siblings like connect_account.

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

get_remediation_guideA

Get detailed remediation guidance for a specific vulnerability or CWE.

Returns:

  • Explanation of the vulnerability

  • Step-by-step fix instructions

  • Code examples (before/after)

  • Testing procedures

  • Prevention strategies

Uses a built-in local guide library, so it still works even when no cloud guidance endpoint is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwe_idYesCWE ID (e.g., 'CWE-79', 'CWE-89') or vulnerability name
contextNoAdditional context about your stack (e.g., 'react', 'express', 'django', 'claw-skill')

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It provides a useful behavior beyond the core function: it uses a built-in local guide library and still works when no cloud guidance endpoint is available. It also enumerates the return content, which adds transparency for an operation that has no output schema.

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 compact and front-loaded: a one-line purpose, a bulleted return summary, and one sentence on offline behavior. Every sentence adds value and there is no redundant filler or restatement of the tool name.

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

Completeness4/5

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

The description is complete for a read-only lookup tool without an output schema: it explains what the tool returns and highlights a key availability behavior. It does not cover error cases or explicitly map to a scan workflow, but the core callable context is well covered.

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 the baseline is 3. Both cwe_id and context already have clear schema descriptions, including examples. The tool description does not add extra parameter-level detail, but none is needed because the schema is sufficient.

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 opens with a specific verb and resource: 'Get detailed remediation guidance for a specific vulnerability or CWE.' This clearly distinguishes the tool from the scan-oriented siblings like scan_website or get_scan_results, since none of them promise remediation instruction.

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

Usage Guidelines3/5

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

The description implies use after identifying a vulnerability or CWE, and the sibling list shows this is the only remediation-guidance tool. However, it does not explicitly state when to prefer this over alternatives, mention prerequisites, or explain that it is meant to follow a scan.

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

get_scan_resultsA

Retrieve detailed findings from a completed security scan.

Returns:

  • Overall security score (0-100)

  • List of vulnerabilities with severity levels

  • CWE classifications

  • Specific recommendations for each finding

  • CVE references where applicable

  • Remediation guidance links

Use this after initiating a full cloud scan with scan_website or scan_repository. Local quick website scans return findings immediately and do not produce a scan ID. If no account is connected yet, the MCP server will connect first and then retrieve the cloud scan result.

ParametersJSON Schema
NameRequiredDescriptionDefault
scan_idYesThe scan ID returned from scan initiation
severity_filterNoFilter results by severity levelall

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral disclosure burden. It does well by revealing that the server will auto-connect an account first, that local scans are not eligible, and that this is for completed cloud scans. It could add more about failure modes or scan completion status, but the provided behavior is clearly disclosed.

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?

The purpose is front-loaded and the return-value bullets are structured for easy scanning. The description is longer than strictly necessary, but each section earns its place, especially given the lack of an output schema.

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?

With no output schema and no annotations, the description fully compensates by enumerating return contents, clarifying eligibility, and explaining the account-connect behavior. An agent has enough context to decide when to call it and what to expect from the response.

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 coverage is 100%, so the baseline is 3. The description restates that scan_id comes from scan initiation and that severity_filter filters by severity, but it does not add deeper parameter meaning beyond the schema. The schema already documents defaults and allowed values, so the description adds limited extra semantic value.

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 opens with a specific action and resource: 'Retrieve detailed findings from a completed security scan.' The return-value list makes clear this is the full-findings tool rather than get_security_score (score only) or get_remediation_guide (guidance only), so it differentiates well from siblings.

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?

It explicitly states when to use the tool: 'after initiating a full cloud scan with scan_website or scan_repository.' It also gives an exclusion — local quick scans do not produce a scan ID — and explains what happens when no account is connected. This is direct, actionable usage guidance.

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

get_scan_transparencyA

Get an honest transparency report for this MCP server.

Returns:

  • Current MCP server version

  • Local check inventory and category counts

  • Which live cloud API endpoints this server actually uses

  • Recent changes to the MCP scan surface

Use this to understand exactly what this server checks locally and which cloud features are live.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_changelogNoInclude recent changes to the scanner

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and mostly succeeds: it frames the operation as a read ('Get... Returns') and enumerates exactly what data comes back. The main opacity is whether 'live cloud API endpoints' means the tool probes network connectivity or simply reads configured state, and no cost/latency implications are mentioned.

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?

A lead sentence, four dense bullets, and one usage line — every element earns its place with concrete data points. The core action is front-loaded and the itemized return list is highly scannable for an agent deciding whether to invoke it.

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

Completeness4/5

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

For a single-optional-parameter read-only tool with no output schema, the description covers the return contract (four report sections) and the invocation context well. Minor gaps remain: it doesn't state whether any cloud calls are made at invocation time, how fresh the report is, or what happens when include_changelog is false, but these are not critical for correct invocation.

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 the boolean include_changelog parameter is already documented in the schema. The description's 'Recent changes to the MCP scan surface' bullet loosely aligns with that parameter but adds no new syntax, default-behavior, or edge-case information beyond what the schema provides. 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?

States a specific verb ('Get') and resource ('honest transparency report for this MCP server'), then itemizes the four report components. It is easily distinguishable from sibling getters like get_scan_results and get_security_score because it targets the server's own behavior (version, local check inventory, live cloud endpoints, changelog) rather than scan outcomes.

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

Usage Guidelines4/5

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

The closing line gives explicit context: 'Use this to understand exactly what this server checks locally and which cloud features are live.' However, it never names alternatives or states when NOT to use it, so an agent must infer the boundary against siblings like get_account_quota or get_security_score on its own.

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

get_security_scoreA

Get a quick security rating for a website.

Returns:

  • Overall security score (0-100)

  • Grade (A-F)

  • Key metrics summary

  • Quick wins for improvement

Without an account, this uses the local quick website scanner. With an account, this uses the full CyberLens cloud path. If cloud website quota is exhausted, CyberLens falls back to the local quick score automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe website URL to check

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explains the dual execution paths (local quick scanner vs. full cloud path), automatic fallback on quota exhaustion, and what the response includes. This is solid transparency, though it does not mention side-effect status or authentication mechanics in detail.

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?

The description is front-loaded with the main purpose, immediately followed by a useful bulleted return summary and then the behavioral notes. It is efficient and well-structured, with no obvious filler, though slightly more verbose than strictly necessary.

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

Completeness4/5

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

Given there is no output schema, the description appropriately lists the key return fields. It also covers the account/quota-dependent execution paths, which is important behavioral context. Minor gaps remain, such as not mentioning URL requirements or how to enable the cloud path via connect_account, but the tool is still adequately described for invocation.

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?

The input schema already covers the single 'url' parameter at 100%, so the baseline is 3. The description adds context that the URL is for a website and that the result is a rating, but it does not add format, validation, or constraint details beyond the schema.

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?

The description clearly states the tool's function: 'Get a quick security rating for a website' and lists concrete outputs such as score, grade, metrics, and quick wins. It does not explicitly contrast itself with sibling tools like scan_website or get_scan_results, so it lacks explicit sibling differentiation.

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

Usage Guidelines3/5

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

The description gives useful context about account-based behavior and quota fallback: without an account it uses the local scanner, with an account it uses the cloud path, and it falls back when quota is exhausted. However, it does not explicitly state when to choose this tool over scan_website, get_scan_results, or other siblings.

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

scan_claw_skillA

Scan an Open CLAW skill or plugin from CLAUDE Hub before installation.

Runs locally in the MCP server and understands CLAW skill packaging, manifest permissions, and AI agent security models.

Performs comprehensive security analysis on:

  • CLAUDE Hub skill/plugin download links

  • Skill manifest files

  • Embedded code and dependencies

Checks for:

  • Hardcoded secrets and API keys in skill code

  • Vulnerable npm/pip dependencies

  • Insecure file operations

  • Suspicious network requests

  • Unsafe eval() or code injection patterns

  • Privilege escalation risks

  • Data exfiltration patterns

  • Permission scope appropriateness

Use this BEFORE installing any CLAW skill to ensure it's safe for your environment.

Examples:

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_urlYesCLAUDE Hub skill URL or direct skill download link

TDQS

A3.8/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 it does well by stating the tool runs locally, understands skill packaging, and performs a defined set of security checks. The explicit list of threat patterns gives substantial behavioral detail. It does not describe the return behavior or whether the scan is asynchronous, but the core behavior is transparent.

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?

The description is longer than average but well-structured: purpose, scope, checks, usage instruction, and examples are clearly separated. The bulleted check list is informative rather than filler. A minor reduction could improve conciseness, but the structure earns its length.

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

Completeness2/5

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

The description fully explains the input and what the scan looks for, but it omits what happens after the scan: there is no mention of a scan ID, async behavior, or that results are retrieved via sibling tools like get_scan_results, get_security_score, or get_remediation_guide. With no output schema and no annotations, this missing workflow linkage is a significant gap for an agent deciding how to use the result.

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?

The schema covers the single parameter fully, so the baseline is 3. The description adds value by providing concrete example URL patterns and clarifying that both hub links and direct download links are valid. This gives the agent useful format guidance beyond the plain schema text.

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?

The description clearly states the tool scans an Open CLAW skill or plugin from CLAUDE Hub before installation, with a specific verb and resource. It enumerates concrete security checks, making its function obvious. However, it does not explicitly distinguish itself from the sibling validate_claw_skill, which could overlap in intent.

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

Usage Guidelines4/5

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

The description gives clear timing guidance: 'Use this BEFORE installing any CLAW skill.' It also provides example URL formats for the input. It does not mention when NOT to use it or compare against alternatives like validate_claw_skill, so it stops short of full routing guidance.

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

scan_repositoryA

Scan a public repository for secrets, dependency risks, and suspicious code patterns.

Uses the live CyberLens cloud repository scanner for:

  • Public GitHub, GitLab, and Bitbucket repositories

  • Supported CLAUDE Hub or direct ZIP download URLs

Checks for:

  • Exposed secrets and credentials

  • Vulnerable dependencies

  • Suspicious or risky code behavior

  • Trust posture and repository hygiene signals

  • Artifact and package reputation issues

Returns a scan ID that can be used with get_scan_results to retrieve findings. If no account is connected yet, the MCP server will open the CyberLens browser flow automatically and then continue the scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoSurface is faster. Deep runs a broader repository analysis.surface
branchNoOptional branch name to scan. Defaults to the repository's default branch.
repository_urlYesThe repository URL to scan (for example https://github.com/owner/repo)

TDQS

A4/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 covers important behavior: it uses a live cloud scanner, supports only public repositories, returns a scan ID, and will trigger an account connection flow if needed. It does not mention quota usage or rate limits, but that is not essential for a first call.

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 well-structured with a lead sentence, bulleted source and finding lists, and a concise closing statement about behavior. It uses space efficiently and front-loads the core purpose.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers the essential invocation context: acceptable inputs, what the scan checks, what is returned, and what happens when no account is connected. It is complete enough for an agent to call the tool and know the next step.

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 the input schema already explains all three parameters sufficiently. The description adds no parameter-specific details, but the baseline of 3 is appropriate because the schema handles parameter meaning.

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 it scans a public repository and lists the specific risk categories it checks for. It also distinguishes the target resource from siblings like scan_website and scan_claw_skill by naming repository sources explicitly.

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

Usage Guidelines3/5

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

The supported source types and the note about account connection imply when to use this tool, but there is no explicit when-not-to-use guidance or comparison with sibling tools. The mention of get_scan_results as the follow-up step provides useful workflow context.

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

scan_websiteA

Scan a website for security vulnerabilities with a local quick mode and a full cloud mode.

Without a connected account, the MCP server runs a local quick scan immediately. That local mode covers roughly 15 core checks such as HTTPS, security headers, basic form issues, inline scripts, and server disclosure.

With a connected account, CyberLens starts the full cloud scan with 70+ checks. That path returns a scan ID you can use with get_scan_results.

If cloud website quota is exhausted, CyberLens falls back to the local quick scan automatically and opens the upgrade page.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe website URL to scan (e.g., https://example.com)
scan_typeNoCloud scan profile. Local mode always uses a quick scan and warns if full or database was requested.full
database_connectionNoOptional database connection for database security scanning

TDQS

A4.2/5.0
Behavior4/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses the quota fallback action, the difference between local and cloud checks, and that the cloud path returns a scan ID. It does not state the local scan return format, but the main side effects and mode behaviors are covered.

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 well-structured into three short paragraphs, front-loads the purpose, and every sentence adds necessary conditional or output information. There is no filler or repetition.

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

Completeness4/5

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

The tool has conditional behavior, no output schema, and a nested parameter, but the description covers the main paths: local vs cloud, quota fallback, and scan ID routing. The local quick scan's return format and the full database flow are left implicit, a minor gap given the schema already documents the parameters.

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 the schema already documents url, scan_type, and database_connection. The description adds mode-level context but does not materially extend parameter meaning beyond what the schema provides.

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 first line states a specific action and resource: scan a website for security vulnerabilities. It clearly distinguishes website scanning from sibling tools like scan_repository and scan_claw_skill, and further explains the two execution modes.

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

Usage Guidelines4/5

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

The description gives concrete usage context: without an account use local quick scan; with an account use full cloud scan; on quota exhaustion it falls back. It does not explicitly name alternatives, but the conditional guidance is sufficient for an agent to decide when to invoke this tool.

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

validate_claw_skillA

Validate a CLAW skill manifest and configuration for security best practices.

Checks:

  • Skill manifest.json structure and required fields

  • Permission scopes (are they minimal?)

  • External API dependencies

  • File system access patterns

  • Environment variable usage

  • Plugin isolation safety

Use this before publishing a skill to CLAUDE Hub or for CI/CD validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_codeNoOptional: main skill code for deeper analysis
manifest_jsonYesThe skill's manifest.json content as a string

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses what the validation covers (manifest structure, permission scopes, external dependencies, filesystem access, env vars, plugin isolation), but it does not state whether the operation is read-only, what it returns, or whether it contacts external services.

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 front-loaded with the core purpose, followed by a scannable bullet list of checks and a single usage sentence. Every line earns its place with no repetition or fluff.

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?

It gives enough to understand input and purpose, but with no output schema it should describe what the caller receives (e.g., pass/fail, findings list, score). The optional skill_code parameter and deeper analysis behavior are only in the schema, not integrated into the narrative.

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 coverage is 100%, so the schema documents both parameters. The description adds context about what is being validated but no additional parameter-level meaning beyond the schema's existing descriptions.

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?

The description names a specific action (Validate) and a precise resource (CLAW skill manifest and configuration), with a list of concrete security checks. It does not explicitly contrast itself with the sibling scan_claw_skill, 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.

Usage Guidelines4/5

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

It states explicit use cases: before publishing to CLAUDE Hub and for CI/CD validation. It provides no when-not-to-use or direct alternative routing, but the intended contexts are clear.

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.

  1. 10 tool updatesv1.0.0
    • First observedconnect_account
    • First observedget_account_quota
    • First observedget_remediation_guide
    • First observedget_scan_results
    • First observedget_scan_transparency
    • First observedget_security_score
    • First observedscan_claw_skill
    • First observedscan_repository
    • First observedscan_website
    • First observedvalidate_claw_skill

TDQS

A4/5.0

Scored across 10 tools

Disambiguation3/5

Most tools have distinct purposes, but scan_claw_skill and validate_claw_skill both target CLAW skill security and enumerate overlapping checks, making them easy to confuse. scan_website and get_security_score also overlap somewhat since both perform website scanning and return a security rating, though the descriptions do clarify the difference between full findings and a quick score.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: scan_<target> for scanning tools, get_<thing> for retrieval tools, plus connect_account and validate_claw_skill. There are no mixed naming conventions or vague verbs.

Tool Count5/5

Ten tools is well-scoped for a security scanning server covering website, repository, and skill scanning along with account management, quota, results, remediation, and transparency. Each tool has a recognizable role and the set does not feel bloated.

Completeness4/5

The core scanning lifecycle is covered: account connection, quota checks, initiating scans for websites/repos/skills, retrieving results, getting remediation guidance, and inspecting server transparency. Minor gaps exist, such as no scan history or explicit scan-status polling, but the main workflows are complete enough for agents.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers