OWASP Pentest Guide Knowledge Base
This is a read-only knowledge retrieval server for OWASP security testing guides (WSTG, MASTG, ISTG, AITG), enabling AI agents and IDEs to query test cases with full provenance on every result. It does not execute scanning/exploitation tools or mutate data.
guide_search: Search across guides by query using exact, full-text, semantic, or hybrid modes — filterable by guide, version, platform, and category.guide_get_test: Fetch a single test case by versioned ID (e.g.WSTG-v42-ATHN-01), canonical ID, alias, or slug, optionally including relationships and full content.guide_list_tests: List test cases in a specific guide/version with optional category filter and cursor-based pagination.guide_browse_category: List all test cases within a specific guide, version, and category combination.guide_get_related_tests: Traverse curated relationships from a test case, with configurable depth and optional inclusion of LLM-inferred edges.guide_compare_versions: Diff a test case's title, objectives, sections, and source metadata across two compiled guide versions.guide_find_by_feature: Find test cases matching feature keywords (e.g.oauth,webview) with OR semantics.guide_recommend_candidates: Generate unverified candidate tests for a target system profile (components + features) — not a completed pentest plan.guide_get_source_excerpt: Fetch raw text for a specific section (summary, how_to_test, remediation, etc.) of a test case with full provenance.guide_validate_reference: Verify a test ID/version exists and optionally confirm a cached content hash still matches, ensuring citation integrity.guide_explain_relationship: Inspect a relationship edge between two tests, including type, rationale, confidence, review status, and provenance.
Every result includes full provenance (repository, commit, path, content hash, license) traceable to the exact upstream source, and all versioned IDs are explicit — ambiguous latest identifiers are rejected.
Provides read-only access to OWASP testing guides (WSTG, MASTG, ISTG, AITG), enabling precise lookup, natural-language search, and browsing of test procedures with full provenance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OWASP Pentest Guide Knowledge Basefind WSTG tests for SQL injection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pentest-guide-kb
A read-only, versioned knowledge base for OWASP testing guides, served over the Model Context Protocol (MCP) so AI agents and IDEs can query them precisely instead of relying on training-data memory.
This project is not an official OWASP project and is not endorsed by OWASP. It compiles and re-serves content from independent OWASP testing guides under their own licenses -- see Licensing. No content from this project's retrieval or recommendation logic is official OWASP guidance; always cite the guide name, version, and source commit a result traces back to.
What it does
Precise lookup of a specific OWASP test by id (versioned or canonical).
Natural-language search across test procedures (full-text + semantic).
Browsing a guide by version, category, platform, or feature keyword.
Cross-guide relationship traversal, with provenance on every edge.
Version comparison for a test across two compiled guide releases.
Candidate-test generation for a target profile -- explicitly labeled unverified candidates, never a completed test plan.
Every result carries full provenance (repository, commit, path, content hash, license), so a citation always traces back to the exact upstream source.
It is a knowledge retrieval service, not an offensive security execution
platform. It does not — and will not — execute scanning/exploitation tools,
expose a shell, reach a caller-specified target, act as an autonomous pentest
agent, or mutate data over MCP (source sync and ingestion are offline CLI-only
steps). See SECURITY.md for the full threat model.
Related MCP server: Guild Wars 1 MCP
Architecture
Official OWASP Git Repositories (wstg, mastg, owasp-istg, www-project-ai-testing-guide)
|
v
Source Mirror and Version Lock sources/sources.lock.yaml, sources/.cache/
|
v
Deterministic Guide Compilers src/pentest_guide_kb/ingestion/*
|
v
Canonical Registry (PostgreSQL) src/pentest_guide_kb/storage/*
|
+-- metadata + JSONB (test_cases, test_case_sections, ...)
+-- full-text search (tsvector + GIN)
+-- pgvector semantic search (embeddings)
+-- Generated Markdown Wiki src/pentest_guide_kb/wiki/*
+-- Optional Neo4j projection src/pentest_guide_kb/graph/* (--profile graph)
|
v
Read-only MCP Server src/pentest_guide_kb/mcp/*
|
v
AI Agents and IDE ClientsThe PostgreSQL registry is the single source of truth. The Wiki, the
vector index, and the Neo4j graph are derived views compiled from it --
none independently store content that could drift out of sync. See
docs/architecture.md and
docs/data-model.md.
Supported guides
Guide | Short name | Upstream repository | Pinned |
OWASP Web Security Testing Guide | WSTG |
| tag |
OWASP Mobile App Security Testing Guide | MASTG |
| tag |
OWASP IoT Security Testing Guide | ISTG |
| tag |
OWASP AI Testing Guide | AITG |
|
|
Exact pins live in sources/sources.lock.yaml (see
docs/versioning.md). latest is never a valid version
anywhere -- it's rejected by a validator.
Quickstart
Requires Python 3.12+, uv, and Docker.
uv sync --all-extras
cp .env.example .env # local-dev defaults, no real secrets
docker compose up -d postgres # PostgreSQL + pgvector
uv run alembic upgrade head # apply the schema
uv run pentest-guide source sync --guide wstg # fetch a pinned source
uv run pentest-guide ingest --all # compile into the registry
uv run pentest-guide index embeddings # build the semantic index
uv run pentest-guide query search "credentials over http" --mode hybrid
uv run pentest-guide mcp serve # stdio; --transport streamable-http for HTTPPrefer a container? Pull the prebuilt multi-arch image instead of building:
docker pull ghcr.io/sunick2009/mcp-owasp-pentesting-guide:latest -- full
run/serve and MCP-client wiring in docs/deployment.md.
Documentation
Topic | Doc |
Deploy & connect a client (Compose, GHCR image, MCP config) | |
Local dev loop (setup, sync, ingest, tests, adding a guide) | |
MCP API — 11 tools, 10 resource templates, 5 prompts | |
Architecture & the single-source-of-truth model | |
Data model & schema | |
Ingestion — per-guide parsers & determinism | |
Retrieval — classify → exact → FTS/vector → RRF → rerank | |
Versioning — canonical vs versioned ids, pinning | |
Licensing & attribution chain | |
Source pinning workflow | |
Security threat model | |
What's implemented vs. known limitations | |
Glossary |
Licensing
This project's own code: Apache-2.0 (
LICENSE).Each upstream guide's content: CC BY-SA 4.0, per
sources/licenses/-- carried through on every compiledTestCase.source.license.
This repository does not bulk-copy OWASP guide text: source sync + local
compilation + provenance reference is the model; committed fixtures under
tests/fixtures/ are short, attributed excerpts. See NOTICE and
docs/licensing.md for the full attribution chain.
Key file paths
What | Where |
Domain models |
|
Guide parsers |
|
Storage / repositories |
|
Retrieval pipeline |
|
MCP server |
|
CLI |
|
Wiki generator + Error Book |
|
Neo4j projection (optional) |
|
Source lock |
|
Curated relationships |
|
Agent Skill |
|
Tests |
|
Available Tools
11 toolsguide_browse_categoryC
List every test case in one guide/version/category.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description claims 'list every test case' but input schema includes an optional `limit` parameter (default 10, max 100), implying pagination and a cap, creating a contradiction. No mention of ordering, error handling, or behavior when no 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?
Single sentence is concise and front-loaded with the core action. However, could include more details without becoming verbose; still efficient.
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 4 parameters, no annotations, and 0% schema coverage, description is incomplete. Lacks prerequisites, error cases, and clarification of limit behavior. Output schema exists but does not compensate for missing behavioral context.
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%. Description does not elaborate on any parameter (guide, version, category, limit) beyond their existence. No format, default values, or constraints explained.
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?
Description clearly states verb 'List', resource 'test cases', and scope 'in one guide/version/category'. It distinguishes from siblings like guide_search (search) and guide_list_tests (likely broader).
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 guidance on when to use this tool vs alternatives such as guide_search or guide_list_tests. No mention of prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_compare_versionsC
Compare a test case's title/objectives/sections/source across two compiled guide versions.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action. It does not disclose whether the tool is read-only, requires specific permissions, has rate limits, or what side effects (if any) occur. The description is purely functional without behavioral context.
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 a single concise sentence that efficiently conveys the core function. However, it could be improved by structuring the explanation to explicitly mention the key parameters (guide, canonical_id, version_a, version_b) for clarity.
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 the 4 parameters, no annotations, and presence of an output schema (which reduces the need to describe return values), the description still fails to provide essential context like what constitutes a 'guide' or how versions are specified. The tool is underspecified for reliable agent use.
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%, yet the description does not elaborate on any parameter meanings. It implies the parameters correspond to a test case and two versions but omits details like expected formats or relationships. The agent must infer parameter semantics solely from names, which is insufficient for correct invocation.
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 specifies a clear verb 'Compare' and a specific resource: 'test case's title/objectives/sections/source across two compiled guide versions'. It uniquely identifies a comparison operation, clearly distinguishing it from sibling tools like guide_search or guide_browse_category.
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 guidance is provided on when to use this tool versus alternatives like guide_get_test or guide_list_tests. There is no mention of prerequisites, such as needing to identify a test case's canonical_id or versions beforehand, which limits the agent's ability to decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_explain_relationshipC
Explain one relationship edge: source test, target test, type, and full provenance (source_type, rationale, confidence, review_status).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey all behavioral traits. It mentions it 'explains' but does not state whether it's read-only, has side effects, or requires specific permissions. Minimal disclosure beyond output fields.
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?
Single sentence, but it is front-loaded with the purpose. Could be more concise by removing redundant listing of fields, but overall acceptable.
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?
Output schema exists but description fails to clarify how to specify the relationship (by IDs vs relationship_id). For a tool with three optional input fields, more detail is needed to avoid ambiguity.
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 0%, and description lists 'source test, target test, type, and full provenance' as outputs, not inputs. The actual parameters (source_test_id, target_test_id, relationship_id) are not explained, and their purpose is unclear from the description.
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 explains a relationship edge and lists the provenance fields it provides. It distinguishes from siblings by focusing on a single relationship rather than listing or searching, though not explicit.
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 guidance on when to use this tool vs alternatives like guide_get_related_tests or guide_find_by_feature. No exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_find_by_featureB
Find test cases matching ANY of one or more feature keywords (OR semantics; e.g. oauth, webview, agent-tools). Each result lists which terms matched in matched_terms.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses OR semantics and matched_terms but omits behavioral traits like authentication needs, read-only nature, rate limits, or failure modes. This is insufficient for safe invocation.
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?
Single sentence, front-loaded with key semantics and examples, no filler. Earns its place.
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?
Has output schema to explain return values, but description lacks edge cases (e.g., no matches) and parameter constraints. Adequate for a simple search but not comprehensive.
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%, and the description adds no per-parameter details beyond field names. Parameters like limit and guides remain unexplained, forcing the agent to rely on names and types alone.
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?
Description clearly states the tool finds test cases by feature keywords with OR semantics, provides examples (e.g., oauth, webview), and mentions result structure. This distinguishes it from sibling tools like guide_search or guide_browse_category.
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 usage context (search with OR semantics) but does not explicitly state when not to use or suggest alternatives. For a feature-driven search, this is sufficient for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_get_source_excerptB
Fetch a single section's raw text (or all sections) for a test case, with full provenance.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Full provenance' hints at metadata, but the description does not clarify read-only status, authentication needs, or side effects. The tool is likely read-only, but this is not stated.
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 a single 15-word sentence, front-loaded with the key action and resource. It is concise and efficient, though this brevity omits important details covered in other dimensions.
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 an output schema (not shown) which reduces the need to describe returns, but with no annotations and no parameter descriptions, the description falls short. It provides minimal context for correct invocation, lacking usage guidance and behavioral details.
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%, and the description does not mention either parameter (test_id or section). The optional enum for section is not explained, nor is the required test_id. The description adds no value 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 description explicitly states the action ('Fetch'), the resource ('raw text of a section for a test case'), and the scope ('single section or all sections') with an additional qualifier ('full provenance'). It clearly differentiates from sibling tools like guide_get_test which likely returns structured test data.
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 usage for retrieving raw text of a test case section, but it does not provide explicit guidance on when to use this tool versus alternatives like guide_get_test or guide_search. No exclusion criteria or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_get_testA
Fetch one test case by versioned id, canonical id, alias, or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose whether the operation is read-only, requires authentication, error handling (e.g., not found), or side effects. The boolean flags that affect behavior are not 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?
Single sentence with no redundant words, front-loaded with the core action and resource. Every word serves a 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?
Despite having an output schema and multiple parameters, the description only covers the identifier aspect. It omits details about optional flags, expected output, and error conditions, making it insufficient for complete understanding.
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 description adds meaning to test_id by listing allowed identifier types, but does not explain the three boolean parameters (include_inferred, include_full_content, include_relationships). With 0% schema description coverage, the description should compensate for all parameters, but it only partially addresses one.
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?
Description clearly states verb 'Fetch' and resource 'one test case', and specifies multiple identifier types (versioned id, canonical id, alias, slug). This distinguishes it from sibling tools like guide_list_tests (list) and guide_search (search).
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?
Implicitly tells when to use: when you have one of the specified identifiers and need a single test case. No explicit exclusions or alternatives are mentioned, but the context with siblings is clear given the specific identification methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_list_testsB
List test cases in a guide/version, optionally filtered by category. Cursor is the offset as a string.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions pagination via cursor as offset, which is useful. However, it does not disclose read-only nature, rate limits, or any side effects. The output schema exists but behavior beyond pagination is unclear.
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 extremely concise at two sentences (18 words), with no unnecessary information. It is front-loaded and efficient.
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 the tool has 5 parameters with no schema descriptions and no annotations, the description is insufficient. It omits details on required guide, limit range, and version parameter, leaving the agent guessing. The output schema exists but does not compensate for missing parameter guidance.
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%. The description only explains cursor and mentions category filtering, but fails to describe guide, limit, and version parameters. It adds minimal meaning beyond the schema structure.
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 lists test cases in a guide/version, with optional category filtering. It is specific about the resource and action, but does not explicitly differentiate from sibling tools like guide_get_related_tests.
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 provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It only describes a basic usage hint about cursor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_recommend_candidatesA
Produce CANDIDATE tests for a target system profile. This is not a verified pentest plan and nothing in the output has been executed -- see the uncertainty field.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the output is unexecuted and unverified, and directs the agent to the 'uncertainty' field, providing useful behavioral context beyond the 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 two sentences, front-loading the purpose and immediately adding a critical caveat. Every sentence earns its place with no redundancy.
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 the presence of an output schema and a single complex parameter, the description is moderately complete but lacks detail on what 'candidates' means, how to interpret the output, and the role of optional parameters like guides or include_inferred_relationships.
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 description has 0% schema coverage and does not explain any parameter beyond mentioning the target system profile. The input schema is relatively self-explanatory, but the description fails to add value for the nested objects like guides or include_inferred_relationships.
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 produces candidate tests for a target system profile, using a specific verb and resource. While it distinguishes the tool's purpose from siblings like guide_list_tests, it could explicitly differentiate from guide_get_related_tests.
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 usage context by stating the output is not a verified pentest plan and nothing has been executed, but it does not explicitly state when to use this tool over alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_searchB
Search across OWASP testing guides (exact id, full-text, semantic, or hybrid).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states search modes but does not disclose behavioral traits like result ranking, pagination, or whether filters are exact or fuzzy. Lacks details that would help an agent understand the tool's behavior.
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?
Single sentence, front-loaded with key information (search, guides, modes). Every word earns its place; no unnecessary text.
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?
Despite output schema existing, the description is too brief for a complex tool with multiple search modes and optional filters. It fails to mention paging, result structure, or how filters interact. Incomplete given 0% parameter descriptions and lack of annotations.
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%; description adds meaning by explaining search_mode via the four modes listed. However, other parameters like limit, guides, platforms, categories are not explained beyond their schema titles and constraints. Baseline 3 with partial compensation.
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 verb 'Search' and the resource 'OWASP testing guides', and specifies the search modes (exact id, full-text, semantic, hybrid), making it distinct from sibling tools like guide_get_test or guide_list_tests.
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 explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or when not to use it. The description only implies usage for searching across guides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_validate_referenceA
Check whether a test id/version exists and whether a given content hash still matches the compiled registry -- use before trusting a previously-cached citation.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool checks existence and hash matching but does not mention side effects, auth needs, or error behavior. With an output schema, return values are covered, but further behavioral context would help.
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 a single sentence that is front-loaded with the core action. No extraneous words, efficiently conveying purpose and usage.
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 the tool's low parameter count and the presence of an output schema, the description covers the main purpose and usage scenario. It lacks detail on return values and errors, but these are partially addressed by the output schema.
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%, so the description must compensate. It maps 'test id/version' to test_id and 'content hash' to expected_content_hash, adding meaningful context beyond the schema's bare property titles.
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 verb ('check') and the resources ('test id/version', 'content hash', 'compiled registry'), making it easy to distinguish from sibling tools like guide_browse_category or guide_search.
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 says 'use before trusting a previously-cached citation,' providing clear guidance on when to use. However, it does not mention when not to use or list 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. Dates show when Glama detected each change.
11 tool updates
v0.1.0- First observed
guide_browse_category - First observed
guide_compare_versions - First observed
guide_explain_relationship - First observed
guide_find_by_feature - First observed
guide_get_related_tests - First observed
guide_get_source_excerpt - First observed
guide_get_test - First observed
guide_list_tests - First observed
guide_recommend_candidates - First observed
guide_search - First observed
guide_validate_reference
TDQS
Each tool has a clearly distinct purpose: browsing categories, comparing versions, explaining relationships, finding by features, traversing relationships, fetching source excerpts, retrieving tests, listing tests, recommending candidates, searching, and validating references. No two tools have ambiguous boundaries.
All tool names follow a consistent 'guide_' prefix followed by a verb_noun pattern (e.g., browse_category, compare_versions, get_test). The naming is uniform and predictable, making it easy for agents to infer functionality.
With 11 tools, the set is well-scoped for a knowledge base of OWASP pentesting guides. Each tool addresses a specific access or exploration need without redundancy or excess, earning its place in the surface.
The tool set covers browsing, searching, retrieval, comparison, relationship exploration, and reference validation. A minor gap is the lack of a tool to list available guides/versions themselves, but the core query and navigation workflows are well-represented.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Read-only MCP server over the APIs.io catalog — discover APIs, providers, tags & artifacts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA minimal Model Context Protocol server that provides access to OWASP security cheat sheets through a simple HTTP API, enabling users to list, retrieve, and search security best practices.5GPL 3.0
- AlicenseBqualityAmaintenanceRead-only MCP server for public Guild Wars 1 sources (wiki, builds, YouTube, Reddit) and optional local install inventory.142MIT
- AlicenseNot gradedqualityAmaintenancePublic read-only MCP server for turva.dev's agent-readiness audit, enabling AI agents to query service catalog, security evidence, and engagement principles via structured JSON.1MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for navigating OpenAPI / Swagger specifications, enabling agents to search endpoints, retrieve parameters and schemas, and inspect authentication without loading the full spec into context.919MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sunick2009/mcp-owasp-pentesting-guide'
If you have feedback or need assistance with the MCP directory API, please join our Discord server