Cyber Lens AI MCP Server
Enables security scanning of public Bitbucket repositories for exposed secrets, dependency vulnerabilities, suspicious code patterns, and trust posture issues.
Enables security scanning of public GitHub repositories for exposed secrets, dependency vulnerabilities, suspicious code patterns, and trust posture issues.
Enables security scanning of public GitLab repositories for exposed secrets, dependency vulnerabilities, suspicious code patterns, and trust posture issues.
Click on "Deploy 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., "@Cyber Lens AI MCP ServerScan this CLAW skill before I install it: https://clawhub.ai/skills/ontology"
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.
Cyber Lens AI MCP Server
Security scanning for AI assistants and agentic coding workflows.
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-serverBefore 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 build2. 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:
opens the CyberLens browser flow automatically
sends the user to
cyberlensai.comto sign up or log inreceives the secure callback locally
saves the API key to
~/.cyberlens/mcp/config.jsoncontinues 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_KEYenvironment 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 |
| Opens browser to sign up/log in and saves your API key locally | No |
| 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 |
| Download and analyse a CLAW Hub or direct skill package for security issues | No |
| Validate a skill manifest against security best practices | No |
Website & Repository Scanning
Tool | Description | Requires API Key |
| 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 |
| Public repository security scan for GitHub, GitLab, Bitbucket, and supported ZIP targets; auto-connects on first use if needed | Yes |
| Retrieve detailed findings from a completed cloud scan; auto-connects on first use if needed | Yes |
| 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 |
| Built-in local remediation playbooks for common CWEs and vulnerability classes | No |
| 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:
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 zipDownloads the skill package to a temporary directory
Extracts and analyses every file in the package:
Checks
_meta.jsonandSKILL.mdfor completenessScans 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 moreIdentifies unpinned dependencies
Catalogues all external URLs the skill communicates with
Returns a security score (0-100) with detailed findings, file locations, and fix recommendations
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 downloadArchitecture
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 coverageKey design decisions:
No Supabase SDK -- pure REST calls with
fetchandX-API-KeyheaderTruthful 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.jsEnvironment Variables
Variable | Required | Default | Description |
| No | -- | API key (alternative to browser connect flow) |
| No |
| API endpoint override |
Publishing
This repository is prepared for npm + MCP Registry publication as:
npm package:
@shadoprizm/cyberlens-mcp-serverMCP 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 publishThe registry metadata lives in the root server.json file and the npm ownership check uses the mcpName field in package.json.
Related Projects
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
Available Tools
10 toolsconnect_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cwe_id | Yes | CWE ID (e.g., 'CWE-79', 'CWE-89') or vulnerability name | |
| context | No | Additional context about your stack (e.g., 'react', 'express', 'django', 'claw-skill') |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scan_id | Yes | The scan ID returned from scan initiation | |
| severity_filter | No | Filter results by severity level | all |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| include_changelog | No | Include recent changes to the scanner |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to check |
TDQS
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.
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.
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.
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.
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.
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:
CLAUDE Hub URL: https://clawhub.ai/username/skill-name
Plugin download: https://*.convex.site/api/v1/download?slug=skill-name
| Name | Required | Description | Default |
|---|---|---|---|
| skill_url | Yes | CLAUDE Hub skill URL or direct skill download link |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Surface is faster. Deep runs a broader repository analysis. | surface |
| branch | No | Optional branch name to scan. Defaults to the repository's default branch. | |
| repository_url | Yes | The repository URL to scan (for example https://github.com/owner/repo) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to scan (e.g., https://example.com) | |
| scan_type | No | Cloud scan profile. Local mode always uses a quick scan and warns if full or database was requested. | full |
| database_connection | No | Optional database connection for database security scanning |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_code | No | Optional: main skill code for deeper analysis | |
| manifest_json | Yes | The skill's manifest.json content as a string |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.0.0- First observed
connect_account - First observed
get_account_quota - First observed
get_remediation_guide - First observed
get_scan_results - First observed
get_scan_transparency - First observed
get_security_score - First observed
scan_claw_skill - First observed
scan_repository - First observed
scan_website - First observed
validate_claw_skill
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
Scan GitHub-hosted AI skills for vulnerabilities: prompt injection, malware, OWASP LLM Top 10.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
Scan any public site for AI-agent visibility; get scored findings, a machine-readable fix pack, and
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to scan project dependencies and Infrastructure as Code files for security vulnerabilities and misconfigurations. It also provides automated fixing capabilities to remediate identified security issues.183MIT
- FlicenseNot gradedqualityDmaintenanceScans OpenClaw/ClawHub skills for security vulnerabilities before installation. Detects prompt injection, data exfiltration, credential theft and RCE risks. Autonomous AI-to-AI flow with zero human intervention required.-
- AlicenseAqualityBmaintenanceVet ClawHub skills before installing them; detects prompt-injection, exfiltration, and other security issues, outputting a risk score with per-finding evidence.7MIT

AgentAuditofficial
AlicenseAqualityDmaintenanceEnables AI agents to scan MCP servers and AI packages for vulnerabilities, prompt injection, and supply chain attacks.78 npmAGPL 3.0