Cyber Lens AI MCP Server
Cyber Lens AI MCP Server
Escaneo de seguridad para asistentes de IA y flujos de trabajo de codificación con agentes.
Un servidor Model Context Protocol (MCP) que ofrece a los asistentes de IA la capacidad de escanear sitios web, repositorios públicos y skills de Open CLAW en busca de vulnerabilidades de seguridad. Está diseñado específicamente para la era de la codificación con agentes, con soporte nativo para escanear paquetes de skills antes de instalarlos.
Qué Hace
Cuando se conecta a un asistente de IA (Claude Desktop, VS Code, etc.), este servidor MCP añade herramientas de escaneo de seguridad que el asistente puede usar durante tu conversación:
Escanear una skill de CLAW antes de instalarla -- el servidor descarga el paquete de la skill, lo extrae y analiza el código fuente real en busca de patrones peligrosos, secretos incrustados y problemas de permisos
Escanear un sitio web en modo local rápido sin cuenta, o usar el escaneo completo en la nube cuando esté conectado
Escanear un repositorio público en busca de secretos expuestos, vulnerabilidades de dependencias, patrones de código sospechosos y problemas de postura de confianza
Consultar tu cuota restante de escaneos en la nube antes de lanzar un lote de escaneos
Obtener orientación de remediación con instrucciones de corrección paso a paso y ejemplos de código
Ejemplo de Conversación
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
Primeros Pasos
1. Instalación
Después del primer lanzamiento en npm, la vía de instalación recomendada es:
npx -y @shadoprizm/cyberlens-mcp-serverAntes de eso, o para desarrollo local y compilaciones manuales:
git clone https://github.com/shadoprizm/cyberlens-mcp-server.git
cd cyberlens-mcp-server
npm install
npm run build2. Añadir a Tu Asistente de IA
Claude Desktop -- añade la configuración en ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"cyberlens": {
"command": "npx",
"args": ["-y", "@shadoprizm/cyberlens-mcp-server"]
}
}
}Si estás ejecutando desde una copia del código fuente en lugar de npm:
{
"mcpServers": {
"cyberlens": {
"command": "node",
"args": ["/absolute/path/to/cyberlens-mcp-server/dist/index.js"]
}
}
}Claude Code -- añádelo a la configuración de MCP o a la configuración del proyecto.
VS Code (Copilot/Continue) -- configúralo según los ajustes de servidor MCP de tu extensión.
3. Conecta tu Cuenta
Las herramientas de sitios web funcionan de inmediato sin cuenta en el modo local rápido. Ese modo local cubre aproximadamente 15 comprobaciones principales y devuelve los resultados al instante.
Conectar una cuenta actualiza los escaneos de sitios web a la ruta completa en la nube de CyberLens con más de 70 comprobaciones, historial de escaneos y análisis de IA. Las herramientas de repositorios y las exclusivas de cuenta siguen conectándose mediante el flujo del navegador cuando es necesario.
Cuando una herramienta de repositorios o exclusiva de cuenta necesita una cuenta, el servidor MCP:
abre automáticamente el flujo de navegador de CyberLens
envía al usuario a
cyberlensai.compara registrarse o iniciar sesiónrecibe la devolución de llamada segura localmente
guarda la clave de API en
~/.cyberlens/mcp/config.jsoncontinúa automáticamente con la llamada a la herramienta original
También puedes activar el mismo flujo explícitamente:
You: "Connect my CyberLens account"Esto abre tu navegador en cyberlensai.com, donde puedes registrarte (gratis) o iniciar sesión. Tu clave de API se guarda localmente en ~/.cyberlens/mcp/config.json y se usa para todos los escaneos futuros.
Las cuentas gratuitas incluyen 5 escaneos al mes. No se requiere tarjeta de crédito.
También puedes definir la variable de entorno
CYBERLENS_API_KEYen la configuración de MCP en lugar de usar el flujo del navegador.
Si un escaneo de sitio web en la nube alcanza su cuota mensual, el servidor MCP abre automáticamente la página de precios de CyberLens y recurre al escaneo local rápido en lugar de fallar. Los escaneos de repositorios siguen requiriendo cuota en la nube.
Herramientas Disponibles
Cuenta
Tool | Descripción | Requiere clave de API |
| Abre el navegador para registrarse/iniciar sesión y guarda tu clave de API localmente | No |
| Muestra tu plan actual y la cuota restante de escaneos de sitios web/repositorios; se conecta automáticamente en el primer uso si es necesario | Sí |
Escaneo de Skills de CLAW
Tool | Descripción | Requiere clave de API |
| Descarga y analiza una skill de CLAW Hub o un paquete de skill directo en busca de problemas de seguridad | No |
| Valida un manifiesto de skill conforme a las mejores prácticas de seguridad | No |
Escaneo de Sitios Web y Repositorios
Tool | Descripción | Requiere clave de API |
| Escaneo local rápido de sitios web sin cuenta; escaneo completo en la nube cuando está conectado; respaldo local si se agota la cuota de nube para sitios web | No para local, Sí para la nube completa |
| Escaneo de seguridad de repositorios públicos para GitHub, GitLab, Bitbucket y destinos ZIP compatibles; se conecta automáticamente en el primer uso si es necesario | Sí |
| Recupera hallazgos detallados de un escaneo en la nube completado; se conecta automáticamente en el primer uso si es necesario | Sí |
| Puntuación local rápida de sitios web sin cuenta; puntuación completa en la nube cuando está conectado | No para local, Sí para la nube completa |
Inteligencia y Orientación
Tool | Descripción | Requiere clave de API |
| Guías de remediación locales integradas para CWE comunes y clases de vulnerabilidades | No |
| Informe honesto de las comprobaciones locales del servidor MCP y los endpoints en la nube en vivo | No |
Cómo Funciona el Escaneo de Skills
Cuando proporcionas una URL de skill de CLAW, el servidor MCP:
Resuelve la URL -- acepta páginas de Claw Hub (
https://clawhub.ai/skills/skill-name), enlaces de descarga directa (https://*.convex.site/api/v1/download?slug=name) o cualquier URL que apunte a un zip de skillDescarga el paquete de la skill a un directorio temporal
Extrae y analiza todos los archivos del paquete:
Comprueba que
_meta.jsonySKILL.mdestén completosEscanea todo el código fuente (Python, JavaScript, TypeScript, scripts de shell, archivos de configuración) en busca de patrones peligrosos
Detecta secretos incrustados, uso de
eval(), ejecución de comandos de shell, peticiones HTTP inseguras, operaciones de borrado de archivos, deserialización de pickle y másIdentifica dependencias sin fijar
Cataloga todas las URLs externas con las que se comunica la skill
Devuelve una puntuación de seguridad (0-100) con hallazgos detallados, ubicaciones de archivos y recomendaciones de corrección
Limpia todos los archivos temporales
Todo este proceso se ejecuta localmente: no se requiere clave de API y tu código nunca se envía a un servidor externo.
Modos de Escaneo de Sitios Web
scan_website y get_security_score ahora tienen dos modos:
Escaneo Rápido Local -- funciona sin cuenta, devuelve resultados de inmediato y cubre aproximadamente 15 comprobaciones principales de sitios web, como HTTPS, cabeceras de seguridad, divulgación del servidor, formularios inseguros e indicadores de scripts en línea
Escaneo Completo en la Nube -- requiere una cuenta CyberLens conectada, ejecuta más de 70 comprobaciones, conserva el historial de escaneos en la nube e incluye un análisis más completo
Si un usuario solicita un escaneo de sitio web full o database sin una cuenta, el servidor MCP devuelve igualmente el escaneo rápido local e indica que el modo exclusivo de la nube solicitado no estaba disponible.
Si un usuario conectado agota la cuota de nube para sitios web, CyberLens recurre automáticamente al escaneo rápido local y abre la página de precios con un enlace de actualización.
Formatos de URL Aceptados
https://clawhub.ai/skills/ontology --> Resolves automatically
https://clawhub.ai/author/skill-name --> Resolves automatically
https://*.convex.site/api/v1/download?slug=x --> Direct downloadArquitectura
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 coverageDecisiones de diseño clave:
Sin SDK de Supabase -- llamadas REST puras con
fetchy cabeceraX-API-KeySuperficie de nube veraz -- el servidor MCP solo expone herramientas respaldadas por la nube que son compatibles con la API pública en vivo (
/scan,/scan/{id},/quota)Transporte stdio -- se ejecuta como subproceso del asistente de IA y se comunica mediante stdin/stdout
Útil sin clave de API -- el escaneo de skills, los escaneos rápidos de sitios web, la validación de manifiestos, la orientación de remediación y los informes de transparencia funcionan localmente; conectar una cuenta actualiza los escaneos de sitios web a la ruta completa en la nube y desbloquea el escaneo de repositorios
Autenticación basada en navegador -- el mismo flujo de conexión seguro que la skill CyberLens OpenClaw (protegida contra CSRF, códigos de intercambio de corta duración, solo HTTPS)
Desarrollo
# 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.jsVariables de Entorno
Variable | Requerida | Por defecto | Descripción |
| No | -- | Clave de API (alternativa al flujo de conexión por navegador) |
| No |
| Sobrescritura del endpoint de la API |
Publicación
Este repositorio está preparado para su publicación en npm + MCP Registry como:
paquete npm:
@shadoprizm/cyberlens-mcp-servernombre del servidor MCP:
io.github.shadoprizm/cyberlens-mcp-server
Flujo de publicación típico:
# 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 publishLos metadatos del registro se encuentran en el archivo server.json de la raíz y la comprobación de propiedad de npm utiliza el campo mcpName en package.json.
Proyectos Relacionados
CyberLens OpenClaw Skill -- la versión de skill de OpenClaw con las mismas capacidades de escaneo
CyberLens -- la plataforma completa con escaneo basado en navegador, paneles e informes
OpenClaw -- el ecosistema abierto de skills para agentes de IA
Licencia
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.
Related MCP Connectors
Scan GitHub-hosted AI skills for vulnerabilities: prompt injection, malware, OWASP LLM Top 10.
Scan websites and code for security, performance and SEO issues from your AI assistant.
Security scanner for AI-written code: SAST, secrets, dependencies, IaC, containers and DAST.
Authorized security scans, evidence, fix prompts and retests for AI-built web apps.
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.741 PyPIMIT

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