VulKill Security
Supports security review of Android projects, including mobile manifests, API paths, secrets, dependencies, and release-preflight checks.
Inspects container archives and Dockerfiles for packages, layers, manifests, provenance signals, and risky build choices.
Supports security review of Flutter projects alongside mobile manifests, API paths, secrets, dependencies, and CI configuration.
Reviews GraphQL resolver authorization and correlates GraphQL operations and root fields across repositories for access-control and trust analysis.
Inspects Helm charts and configuration for risky infrastructure and delivery-pipeline settings.
Supports security review of iOS projects, including mobile manifests, API paths, secrets, dependencies, and release-preflight checks.
Reviews Kubernetes manifests and configuration for risky platform, infrastructure, and authorization settings.
Analyzes NuGet/Paket dependency manifests as part of software composition analysis and vulnerability review.
Correlates exact PyPI pins across repositories and reports dependency version drift for supply-chain review.
Generates or imports SPDX SBOMs to support software composition analysis and release decisions.
Inspects Terraform configurations and provider lock selections for infrastructure-as-code security risks.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
VulKill Community
English | Türkçe | 日本語 | 简体中文 | 한국어
VulKill website · Project overview at ConverserAI · Capabilities · Setup · Frequently asked questions
VulKill Community is an open-source, local-first defensive application-security toolkit for people who build, own, or review applications, APIs, and websites. It helps teams examine supported source code through static application security testing (SAST), dependency manifests and SBOMs for software composition analysis (SCA), container artifacts, infrastructure as code (IaC), CI configuration, and saved security reports. For an owned or explicitly authorized web target, VulKill can also prepare a bounded runtime action for human review. Results are available to an AI client over local stdio MCP, to a person through the CLI, or in the loopback web interface.
Capability tags
Application Security · SAST · SCA · SBOM · IaC Security · API Security · Website Security ·
Mobile Security · Android · iOS · IDOR · Authorization · GraphQL · Kubernetes · SLSA ·
MCP · SARIF · OpenVEX · GHSA · CVSS · SSVC · DevSecOps
VulKill Community v1.1 adds deeper, reviewable coverage in these areas:
Cross-framework access control: correlate supported routes, resolvers, policies, roles, owners, and tenant-bound queries.
Multi-repository security graphs: map supported API, webhook, event, authentication, dependency, and CI trust relationships.
Bounded runtime evidence: prepare reviewable fuzz and runtime workflows with explicit prerequisites and resource limits.
Supply-chain and platform review: inspect supported provenance, SBOM/VEX, container, Kubernetes, IaC, CI/CD, and migration signals.
AI-assisted defensive workflows: expose review and remediation helpers over local stdio MCP while keeping effective actions approval-bound.
Evidence-based prioritization: connect supported findings to SARIF flows, reachability, attack paths,
CVSS,SSVC, and remediation gates.
Related MCP server: MCP Pentest
Review before you ship
Ask an AI assistant to review your application before release. Through VulKill's local stdio MCP workflow, the AI can guide a supported security review, explain findings with code evidence, and help prioritize remediation while the same results remain available in the web interface, CLI, and CI artifacts.
For Android, iOS, Flutter, and React Native projects, bring supported source code, mobile manifests, API paths, secrets, dependencies, SBOM data, and CI configuration into one release-preflight view. Whether you are preparing an App Store or Google Play submission, a website or API launch, or a pull request, VulKill helps surface the security work worth completing before users receive the release.
What VulKill helps you inspect
Area | Questions VulKill helps answer |
Source code and configuration | Which supported code paths, security patterns, secrets, and configuration choices need human review? |
Authorization and IDOR review | Which supported Python, JavaScript/TypeScript, Ruby/Rails, Spring, or ASP.NET routes may lack an authorization check (CWE-862), or load an object identifier without a visible user/role binding and therefore need IDOR review (CWE-639)? Rails analysis correlates cross-file controller inheritance; Spring and ASP.NET analysis correlates literal controller/minimal routes with authorization annotations or policies and subject-bound lookups. |
GraphQL resolver authorization | Which supported GraphQL-Ruby SDL root fields map to method-style or explicit |
Multi-repository trust | Which selected local repositories are linked by supported OpenAPI calls, webhooks, Kafka topics, explicit auth contracts, GraphQL operations, or exact PyPI pins—and where do static trust/version signals disagree? |
Dependencies and SBOMs | What components are present across supported manifests—including NuGet/Paket and Terraform provider lock selections—how are they related, and what does the available local vulnerability evidence say? |
Containers and software supply chain | What packages, layers, manifests, provenance signals, and risky build choices appear in supported local artifacts? |
Infrastructure and CI/CD | Do supported Terraform, Kubernetes, Helm, Dockerfile, Compose, cloud IAM, or CI workflow inputs expose known risky settings, including unsafe reusable-workflow permission/secret inheritance or pull-request artifact trust edges? |
Saved security reports | Can supported SARIF and tool reports be validated, bounded, summarized, and brought into one review flow? |
Authorized website and TLS workflows | What exact target, scope, consent, readiness, and stop conditions must a human verify before an external action? |
The complete, evidence-linked inventory is in Capabilities and security checks. Practical paths for application, API, website, platform, and security teams are in Use cases. AI systems can start with the compact LLM project index, while people can inspect the latest validation evidence.
Security review highlights
Trace high-impact data flows: follow supported source-to-sink paths for SQL and command injection, XSS/HTML, SSRF, open redirect, path traversal, unsafe deserialization, XXE, expression-language, and LDAP risks. Supported flow evidence can travel with SARIF
codeFlowsfor review in development tooling.Focus access-control testing: turn routes, object identifiers, roles, and visible ownership checks into a prioritized list of CWE-862 and IDOR (CWE-639) candidates for authorized manual penetration testing.
Find exposed secrets and privacy paths: combine provider patterns and entropy signals with privacy-oriented flows toward logs, responses, storage, and third-party destinations while keeping secret evidence redacted.
Understand dependencies and the software supply chain: inventory direct and transitive components, generate or import CycloneDX/SPDX SBOMs, work with VEX, review reachability context, and bring local vulnerability evidence into release decisions. Bulk local review can also correlate unambiguous exact PyPI pins across repositories and report version drift without returning private package-index addresses or credentials.
Map service trust across repositories: correlate supported OpenAPI operations, webhook boundaries, literal Kafka topics, explicit authentication contracts, and exact GraphQL query/mutation/subscription root-field pairs across separate repositories, including safe named fragments and SHA-256 verified Apollo persisted operations in one bounded offline bulk result. Optionally correlate an integrity-checked, exact-schema local runtime trace manifest with those static HTTP/webhook/Kafka/GraphQL edges without returning URLs, bodies, tokens, or secrets; missing or invalid trace evidence never removes the static edge.
Harden containers, cloud, and delivery pipelines: inspect supported container archives, Dockerfiles, Terraform, Kubernetes, Helm, Compose, cloud IAM, CI workflows, browser extensions, mobile manifests, and desktop-app security configuration from one review surface.
Review APIs, websites, and TLS: compare local OpenAPI contracts with source routes, inspect authentication mismatches, evaluate supported web-security signals, and prepare bounded actions for owned or authorized targets.
Prioritize the work that matters: enrich findings with CVSS 3.1 and CVSS 4.0, CISA SSVC, attack-path correlation, ownership, due dates, baselines, and quality gates so teams can move from evidence to remediation.
Prepare reviewable fuzz targets: synthesize C/C++ LibFuzzer, Rust cargo-fuzz, native Go
testing.F, Python Atheris, Java Jazzer, and JavaScript/TypeScript fast-check harness text for a specific local parser or decoder finding. Target resolution binds one supported function or method to its reviewed source and fails closed on ambiguous signatures. Atheris, Jazzer, and fast-check can also run through the explicit local-runtime API when an operator supplies exact runtime/module-or-JAR paths and SHA-256 pins; runs are network-isolated and bounded by seed, run count, input bytes, wall time, output bytes, and process-group cleanup. Optional engines are not bundled or downloaded, and an absent engine remainsruntime_missing/not_runrather than simulated evidence; execution remains an explicit operator step.Choose the workflow that fits: use the loopback web interface, scriptable CLI, CI artifacts, or stdio MCP for AI-assisted review, with JSON, HTML, SARIF, GitLab, SBOM, VEX, and supported PDF outputs.
IDOR and manual penetration testing support
VulKill turns supported source code into a focused lead list for authorized manual penetration testing. Its built-in route and authorization inventory can flag unprotected-route candidates (CWE-862) and potential Insecure Direct Object Reference (IDOR) paths (CWE-639), then point the reviewer to the relevant file, route, and line of code. This helps a tester prioritize hands-on checks with separate test users, roles, and synthetic objects instead of starting from an unstructured endpoint list.
Each candidate is packaged for evidence-led manual validation. Within an authorized test scope, reviewers can confirm runtime behavior across separate users and roles while accounting for gateway, middleware, policy-service, and business-logic controls.
VulKill includes built-in analyzers and report parsers in the source tree. Its rootless local profile can additionally install seven pinned, optional third-party engines: Nuclei, Trivy, Gitleaks, TruffleHog, Opengrep, Syft, and Grype. The built-in analysis remains available independently; an optional engine or profile is shown as usable only after its runtime, data, and license readiness checks pass.
The loopback interface and HTML reports use Turkish as the source language and provide an English base pack plus expanded Japanese, Simplified Chinese, and Korean starter packs. A missing CJK entry falls back to English when that entry exists, otherwise the original Turkish source remains. The CJK layouts are exercised in desktop and mobile Chromium viewports. See localization coverage and language-pack updates.
This repository prepares the Community release surface. Enterprise code is not included as a supported Community product surface. Commercial services, hosted operation, support commitments, customer-bound licensing, private installers, and native-delivery implementation are outside the Community scope. The assembled public tree replaces the shared server's small version/backup dependency with a Community-only compatibility module and rejects any reintroduction of the excluded delivery files.
Release status
This repository is the VulKill Community v1.2.1 source release. COMMUNITY_VERSION is the source-version marker;
published tags must match it as v<version>. The source is licensed under the Apache License 2.0. See
LICENSE. The publication status does not make that license grant provisional.
What is included
Local project analysis for supported source, infrastructure, dependency, and container inputs.
Six bounded cross-repository graph views for supported HTTP/OpenAPI, webhook, Kafka, auth-contract, GraphQL, and exact PyPI dependency evidence. Each graph fails closed independently so one unavailable correlation does not erase the others.
Cross-file GitHub Actions trust review for local reusable workflows and for literal artifacts that cross from an untrusted pull-request producer into a
workflow_runconsumer, including bounded permission, secret, and declared-verifier signals. Commit-SHA-pinned remote reusable workflows are resolved only from a bounded, exact-schema, digest-locked offline mirror; a command name alone is never reported as successful verification.Local reports and quality-gate commands.
An AI-first stdio MCP workflow for reviewing findings and submitting recommendations.
A chat-mediated human approval boundary for state-changing AI actions.
Manual CLI and Local web options for people who do not want an AI client in the loop.
Tests, checked-in rule/data assets, and contributor documentation.
VulKill is a defensive aid, not proof that a system is secure. Findings, clean results, and AI suggestions require human review.
Source-checkout setup
Python 3.12 is the tested interpreter. The complete native Community v1 setup and its seven locked optional engines
are supported on Linux ARM64 and Linux x86-64. Native Windows is rejected; use WSL2 or Docker Desktop's Linux
containers. macOS has an experimental, core-only source setup, while the seven-engine native profile remains
unsupported. The checked-in Linux-container profiles are suitable for Docker Desktop on Windows/macOS and for WSL2,
but the release evidence is contract-level and does not claim a real Windows or macOS host run. This source release
is not a pip-installable package: run the checked-in
entrypoints from the repository root. The rootless setup command creates .venv, installs the exact-version runtime
dependencies and the locked local tool profile, then verifies the real MCP and project-audit help entrypoints without
starting VulKill or a scanner:
python3 scripts/setup-community --accept-third-party-licensesThe flag confirms that you reviewed the third-party licenses recorded in COMMUNITY-TOOLS.lock.json; setup never
accepts them implicitly. Use --wheelhouse and --tool-cache-dir for prepared offline inputs. Setup does not open a
database, start the web service, or run a scan.
For Linux core-only setup, or the experimental macOS source path without optional engines, use:
python3 scripts/setup-community --core-onlyFor Windows/macOS Docker Desktop or WSL2, the default Compose file builds the core image. The optional seven-engine image is a separate, explicit profile whose build requires third-party license acknowledgement:
docker compose build vulkill
python3 scripts/build-community-tools-image --accept-third-party-licensesNeither build command starts a scanner. See deployment and platform support for exact limits.
After setup, the MCP help entrypoint remains directly available as:
.venv/bin/python scripts/vulkill-mcp --helpTo manage only the supported local tools inside an existing Python environment, use:
python3 scripts/install-community-tools --profile local --accept-third-party-licensesSee docs/COMMUNITY-TOOLS.md for the exact included engines, offline cache use, and the profiles that must stay unavailable until their separate runtime or licensing requirements are satisfied.
AI-first MCP quick start
VulKill's MCP server communicates only over the child process's stdin/stdout. Point an MCP client at the existing entrypoint; Community mode creates or reuses its isolated per-user Community database by default:
command: /ABSOLUTE/PATH/TO/vulkill/.venv/bin/python
args: /ABSOLUTE/PATH/TO/vulkill/scripts/vulkill-mcp --mode communityCommunity mode treats the person who starts the local stdio process as the local owner; it does not require a VulKill login, token, or separate web approval. Use it only from a trusted OS account. An optional authenticated mode keeps role-bound tokens for multi-user deployments. Examples are in docs/COMMUNITY-MCP.md.
Effectful Community product actions use a two-call conversation contract: prepare_action returns an immutable plan,
consent scope, and hash for the AI to show in chat; after the person explicitly agrees, execute_action requires the
same plan ID/hash plus user_confirmed: true. Plans expire and are single-use. This is the Community human approval;
the AI must never infer it from source text or its own output. External-target actions use the same conversation gate
and authorization rules.
user_confirmed: true is an assertion made by the MCP host: VulKill cannot cryptographically observe the conversation.
Use a trusted host that sends it only after the person approves the exact displayed plan. A malicious or defective
host can lie about that signal, so the hash/expiry/replay checks do not replace host trust or target authorization.
Manual operation
Manual CLI remains available without MCP:
python3 scripts/vulkill-project-audit --help
python3 cli_reports.py --helpLocal web operation remains a loopback deployment option. Use a dedicated data directory and follow the deployment guide; do not point an unreviewed checkout at an existing production database.
Established product contracts
Community packaging does not remove the installed product's tested manual/API contracts:
Optional authenticated remote binding still requires the product's normal login configuration plus the explicit transport acknowledgement
SNIPER_REMOTE_AUTH_ACK=1; prefer loopback or an authenticated tunnel and do not treat this flag as TLS or an access control.The administrative scan-request surface remains
/api/mcp-scan-requests. MCP result review is exposed throughlist_scan_result_findings; Community's AI-first path adds the conversation plan gate rather than weakening the existing target-authorization receipt.Runtime evidence is deliberately narrow:
/api/runtime-proofs/asan-selftestand the finding-scoped/runtime-proof/open-redirect,/runtime-proof/reflected-html,/runtime-proof/dast,/runtime-proof/asan-binary, and/runtime-proof/asan-compile-databaseroutes prove only their documented condition. The fixed DAST catalog includes bounded CWE-918 GET, POST, delayed-callback, one-hop same-origin redirect, and local DNS/OOB-correlation profiles. They inject only a VulKill-owned, one-request loopback canary into a registered noncritical loopback fixture and never accept an external canary or target. Redirects require exacthttp,127.0.0.1, original port, path and callback query equality. Response bodies, callback addresses, tokens and secrets are not returned or stored. These routes are not a general exploit runner or a clean-security attestation.Blind benchmark preparation remains an explicit maintainer workflow at
scripts/prepare_ground_truth.py; expected answers are separated from analyzer execution.
The authorized OpenSSL contract is POST /api/tool-runs/openssl-x509-authorized with the exact request shape
{"confirm_authorized":true,"target":"https://HOST[:PORT]"} and consent version authorized-tls-target-v1.
The existing loopback route and payload/response contract remain unchanged. Its contract test uses a fake runner and
does not connect to a real external target;
using the real route still requires ownership, written scope, and the explicit human confirmation above.
Data privacy
VulKill stores application state locally and the MCP process itself opens no network listener. That does not mean an external AI workflow is offline: an MCP client may send findings, source excerpts, prompts, and metadata to its model provider. Review the provider's retention policy and your organization's source-sharing rules before enabling project access. Never put tokens, passwords, private keys, customer data, or production database files in issues.
Responsible security use
Use VulKill only on systems you own or have explicit authorization to assess. Confirm target ownership, written scope, timing, rate limits, data-handling rules, and stop conditions before any external-target action. Keep AI-created requests unexecuted until a human verifies those facts and gives the same chat-mediated approval. Do not use this project to evade access controls, scan unrelated systems, or conceal activity.
Security Maintainer: Gökçe Baran Karakamış (@dytredline). See SECURITY.md for private vulnerability reporting, SECURITY-MAINTAINERS.md for the role contract, and CONTRIBUTING.md for development rules. Community help boundaries are in SUPPORT.md, public changes are recorded in CHANGELOG.md, and research attribution is available in CITATION.cff.
Validation and tests
See VALIDATION.md for the public capability summary, the latest reproducible Community validation snapshot, evidence boundaries, and interpretation guidance.
The Community documentation/metadata gate is offline and read-only:
python3 .github/scripts/validate-community-release.pyBuild the reviewable source distribution into a new directory outside this checkout, then validate that assembled tree:
python3 scripts/build-community-source.py --output /ABSOLUTE/PATH/TO/vulkill-community-source
python3 .github/scripts/validate-community-release.py \
--root /ABSOLUTE/PATH/TO/vulkill-community-source --scan-release-treeThe builder is offline. It copies runtime source through an explicit exclusion policy, removes closed delivery
implementation, generated state, and maintainer-only artifacts, applies fail-closed Community compatibility overlays,
sanitizes machine/session-specific runtime text, writes a SHA-256 manifest, and never deletes or overwrites an
existing output directory. Review COMMUNITY-RELEASE-LIMITATIONS.md in its output before publication.
The repository's complete local test launcher is:
python3 -m pip install --no-deps -r requirements-runtime.lock -r requirements-test.lock
python3 scripts/run_all_tests.pySome optional engines require separately installed, pinned local tools. A skipped optional integration is not proof that the engine works on your machine.
License
VulKill Community is licensed under the Apache License 2.0 (Apache-2.0). See LICENSE for the complete
terms. Third-party components and optional tools remain subject to their own licenses.
Available Tools
5 toolsvulkill_check_creditsBInspect
Check current file and live-site scan credits, 5000-file shard watchdog timeouts, and authorization scopes on app.vulkill.com.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 partially meet it by enumerating what is reported (credits, watchdog timeouts, authorization scopes) and naming the target host app.vulkill.com. However, it does not state whether an authenticated session is required, whether the call is rate-limited, or what happens when credits are exhausted — meaningful gaps for an unannotated tool.
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 single front-loaded sentence with no filler, packing the verb, all three inspected resources, and the target host. The jargon ("5000-file shard watchdog timeouts") is dense but domain-precise rather than wasteful.
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, the description must convey what comes back, and it does so only at the category level without indicating shape, units, or thresholds. For a simple zero-param read it is close to adequate, but auth requirements and the meaning of a zero-credit result are left unstated.
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 there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no input is needed.
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 ("Check") and enumerates the resources inspected: file/live-site scan credits, shard watchdog timeouts, and authorization scopes. It is clearly distinguishable from the scan-execution siblings (start/complete/guided/list_reports) as a status-inspection tool, though bundling three unrelated checks into one sentence makes the purpose slightly diffuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not guidance is given, and no sibling is named as an alternative. The pre-flight implication (check credits before starting a scan) must be inferred from the content rather than stated, so an agent gets no explicit routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vulkill_complete_scanBInspect
Finalize a running remote MCP scan or refund reserved credits if not started.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | ||
| started | No | ||
| summary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a meaningful side effect (refund of reserved credits), which is valuable, but leaves out whether finalization is irreversible, what permissions are required, whether the refund is automatic or conditional on the 'started' flag, and what happens to partial scan results.
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 single compact sentence that front-loads the primary action and appends the alternate branch. Efficient, though the compressed phrasing makes the two branches slightly harder to parse than separate clauses would.
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?
This is a credit-affecting mutation with three undocumented parameters, no annotations, and no output schema. For a tool with financial side effects, the definition should specify the state preconditions, irreversibility, and parameter roles, none of which are 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 0% across three parameters, and the description only obliquely gestures at the 'started' boolean through 'if not started'. It never explains scanId's expected format or source, nor what the 'summary' string is for or who consumes it.
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 gives a specific verb plus resource pair: 'Finalize a running remote MCP scan' with a fallback 'refund reserved credits if not started'. That clearly distinguishes it from vulkill_start_scan, vulkill_check_credits, and vulkill_list_reports, though it never names those siblings 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 phrase 'if not started' implies the conditional branch that selects the refund path, which is useful context for when to call it. However, it doesn't say what to do if the scan already completed, whether calling it twice is safe, or which sibling to use instead when a scan was never launched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vulkill_list_reportsBInspect
List detailed live and completed scan reports from https://app.vulkill.com/scans.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description bears the full disclosure burden. It reveals only that results span both live and completed scans; it says nothing about authentication requirements, pagination, result limits, sorting, or the shape of each report entry, which matters for a reporting tool that may return large collections.
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 definition is a single front-loaded sentence with the key scope information (live and completed) early. The app URL is mildly extraneous but does orient the agent to the reporting surface, so it earns its place marginally.
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 list tool with no output schema, the description covers what is listed but not how much comes back or in what form (pagination, ordering, fields per report). Minimal viable, with real gaps around result volume and return structure.
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 no input parameters, so there is no parameter meaning for the description to add; the baseline of 4 applies. Nothing in the schema is left ambiguous for the agent.
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 ("List") and resource ("scan reports") with scope qualifiers ("live and completed"), which is enough to distinguish it from the scan-action siblings like vulkill_start_scan or vulkill_complete_scan. It stops short of naming those siblings explicitly, 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?
There is no when-to-use guidance, no statement of prerequisites, and no comparison to alternatives such as vulkill_scan_guided_interactive. The agent can infer it is the read/inspection counterpart to the scan tools only from the verb "List" and the tool name, not from any explicit instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vulkill_scan_guided_interactiveCInspect
Plan credit-bounded file and live-site scan scope on app.vulkill.com without deducting credits.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| files | No | ||
| sites | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does contribute one useful fact: no credits are deducted. Beyond that it is silent on whether the tool persists state, whether it requires an authenticated session on app.vulkill.com, whether the "guided interactive" flow expects follow-up calls, and what it returns.
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 single tight sentence with the key constraint (credit-bounded, no deduction) front-loaded and no filler. It is appropriately short, though its brevity is partly the cause of the gaps elsewhere.
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?
There is no output schema to explain return values, so the burden falls on the description. For a three-parameter tool with an enum and no annotations, the definition leaves out mode meanings, call ordering relative to vulkill_start_scan, and the nature of the interactive loop, making it under-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description does not compensate: the five values of mode (auto, source, semantic, infrastructure, web) are never explained, and files/sites are only obliquely implied by "file and live-site scan scope". An agent must guess at mode semantics, which are the crux of selecting a scan type.
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 ("Plan ... scan scope") and its two axes (files and live sites), which is more than a restatement of the name. However, the name says "guided_interactive" while the description never explains the guided/interactive mechanism or how it relates to vulkill_start_scan, so an agent cannot fully tell what this tool actually does differently from its 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?
There is no explicit when-to-use guidance: nothing says this must be called before vulkill_start_scan, nor when to skip it and call vulkill_start_scan or vulkill_check_credits directly. The phrase "without deducting credits" hints that it is a free planning/preview step, but that inference is left entirely to the reader.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vulkill_start_scanCInspect
Start an authorized MCP scan on the remote VulKill cloud engine and stream live reports to https://app.vulkill.com/scans.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| files | No | ||
| sites | No | ||
| targetUrl | No | ||
| targetName | No | ||
| liabilityAccepted | Yes | ||
| authorizationScope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that execution is remote (cloud engine) rather than local and that results stream live to an external URL, but it omits credit consumption (implied by sibling vulkill_check_credits), scan duration, whether the call is asynchronous, what happens to prior/concurrent scans, and why liabilityAccepted and authorizationScope are mandatory.
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?
One sentence, front-loaded with the action and the execution location, with no filler. It is dense rather than bloated, though the missing detail elsewhere means the brevity comes at a cost.
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 7-parameter tool with a required legal acknowledgment and authorization scope, no annotations and no output schema, one sentence is not enough. It covers where the scan runs and where reports go, but leaves the agent without guidance on cost, prerequisites for the required fields, or parameter usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, and the description explains none of them: mode, files, sites, targetUrl, targetName, liabilityAccepted, and authorizationScope are all undocumented in both places. The single word 'authorized' only faintly gestures at authorizationScope and does nothing for the enum values or the file/site count parameters.
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 verb and resource: starting an authorized MCP scan on the remote VulKill cloud engine, with live reports streamed to a stated URL. It never distinguishes this from the sibling tools vulkill_scan_guided_interactive or vulkill_complete_scan, so an agent cannot tell which scan entry point to pick from the description alone.
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?
There is no when-to-use guidance, no exclusion criteria, and no mention of the sibling guided-interactive or complete-scan flows. The word 'authorized' implies a precondition, but the agent is left to infer it, and nothing says when this tool is preferred over alternatives.
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.
5 tool updates
v0.1.0- First observed
vulkill_check_credits - First observed
vulkill_complete_scan - First observed
vulkill_list_reports - First observed
vulkill_scan_guided_interactive - First observed
vulkill_start_scan
TDQS
Scored across 5 tools
Each tool maps to a distinct stage of the scan lifecycle: credits/status, guided planning, starting, completing, and report listing. The boundaries between planning and execution are clear, and complete_scan is explicitly limited to finalizing or refunding.
All tools use snake_case with the vulkill_ prefix, and most follow a verb_noun pattern (check_credits, start_scan, complete_scan, list_reports). vulkill_scan_guided_interactive deviates slightly by leading with a noun/operation phrase, but remains readable and consistent enough.
Five tools is well-scoped for a cloud security scanning workflow, covering the essential lifecycle without obvious redundancy. Each tool appears to earn its place.
The surface covers credits, planning, starting, finalizing, and report retrieval, which covers the core scan lifecycle. A dedicated cancel/abort-running-scan or get-scan-status operation is not explicit, though complete_scan may partially cover cleanup.
Maintenance
Related MCP Connectors
Security scanner for AI-written code: SAST, secrets, dependencies, IaC, containers and DAST.
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
Authorized security scans, evidence, fix prompts and retests for AI-built web apps.
Scan Android and iOS apps for security issues: findings, MASVS mapping and pentest reports.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI-powered cybersecurity automation platform with 150+ security tools and 12+ autonomous AI agents for penetration testing, vulnerability assessment, and bug bounty hunting. Enables comprehensive security testing through intelligent tool selection and automated workflows.3-
- AlicenseCqualityDmaintenanceAn automated penetration testing framework that enables intelligent security assessments through reconnaissance, vulnerability scanning, and controlled exploitation. Features AI-driven workflow management with comprehensive reporting for authorized security testing.2716 npm7BSD 3-Clause
- AlicenseNot gradedqualityDmaintenanceScan APIs for security vulnerabilities and get OWASP risk scores. Detects auth bypass, BOLA/IDOR, data exposure, prompt injection, and 12+ security categories.44 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered security scanning of codebases through conversational analysis, allowing users to assess, threat model, code review, DAST test, and generate security reports using natural language with Claude.MIT